diff --git a/.gitignore b/.gitignore index 35134564af6..27c3dc7e43a 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ funnel_comp # CMake build directory ###################################### /build +Buildings/Resources/src/fmi-library/build # Temporary files generated by emacs diff --git a/.travis.yml b/.travis.yml index dd2237fc56e..a51c831d1f6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,8 @@ -<<<<<<< HEAD -dist: trusty -sudo: false -======= os: Linux dist: bionic ->>>>>>> master language: python + python: - "3.6" @@ -26,14 +22,6 @@ git: services: - docker -<<<<<<< HEAD - -env: - global: - - ENERGYPLUS_VERSION=EnergyPlus-9.2.0-921312fa1d-Linux-x86_64 - jobs: - - TEST_ARG="make test-documentation test-experiment-setup test-autogenerated-files test-verify-files" -======= - xvfb @@ -57,10 +45,12 @@ env: - TEST_ARG="make test-cdl-conformance" - TEST_ARG="make test-energyplus-validations" - TEST_ARG="make test-bestest test-spawn-portability" ->>>>>>> master - TEST_ARG="make test-dymola PACKAGE=\"Buildings.{Air,Examples}\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.{Air,Examples}\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.{Air,Examples}\"" + - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.EnergyPlus\"" + - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.EnergyPlus\"" + - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.EnergyPlus\"" - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.Detailed.{BaseClasses,Constructions,Examples}\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.Detailed.{BaseClasses,Constructions,Examples}\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.Detailed.{BaseClasses,Constructions,Examples}\"" @@ -70,12 +60,18 @@ env: - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.Detailed.Validation.{Initialization,LBNL_71T,TestConditionalConstructions}\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.Detailed.Validation.{Initialization,LBNL_71T,TestConditionalConstructions}\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.Detailed.Validation.{Initialization,LBNL_71T,TestConditionalConstructions}\"" + - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.Detailed.FLEXLAB\"" + - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.Detailed.FLEXLAB\"" + - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.Detailed.FLEXLAB\"" + - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.ReducedOrder\"" + - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.ReducedOrder\"" + - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.ReducedOrder\"" - TEST_ARG="make test-dymola PACKAGE=\"Buildings.{Applications,Experimental}\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.{Applications,Experimental}\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.{Applications,Experimental}\"" - - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Fluid.{Actuators,BaseClasses,Boilers,Chillers,Delays}\"" - - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Fluid.{Actuators,BaseClasses,Boilers,Chillers,Delays}\"" - - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.Fluid.{Actuators,BaseClasses,Boilers,Chillers,Delays}\"" + - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Fluid.{Actuators,BaseClasses,Boilers,Chillers,CHPs,Delays}\"" + - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Fluid.{Actuators,BaseClasses,Boilers,Chillers,CHPs,Delays}\"" + - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.Fluid.{Actuators,BaseClasses,Boilers,Chillers,CHPs,Delays}\"" - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Fluid.{Examples,FMI,FixedResistances,Geothermal}\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Fluid.{Examples,FMI,FixedResistances,Geothermal}\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.Fluid.{Examples,FMI,FixedResistances,Geothermal}\"" @@ -85,12 +81,6 @@ env: - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Fluid.{MassExchangers,MixingVolumes,Movers,Sensors,SolarCollectors,Sources,Storage,Utilities}\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Fluid.{MassExchangers,MixingVolumes,Movers,Sensors,SolarCollectors,Sources,Storage,Utilities}\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.Fluid.{MassExchangers,MixingVolumes,Movers,Sensors,SolarCollectors,Sources,Storage,Utilities}\"" - - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.Detailed.FLEXLAB\"" - - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.Detailed.FLEXLAB\"" - - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.Detailed.FLEXLAB\"" - - TEST_ARG="make test-dymola PACKAGE=\"Buildings.ThermalZones.ReducedOrder\"" - - TEST_ARG="make test-optimica PACKAGE=\"Buildings.ThermalZones.ReducedOrder\"" - - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.ThermalZones.ReducedOrder\"" - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Electrical\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Electrical\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.Electrical\"" @@ -100,37 +90,27 @@ env: - TEST_ARG="make test-dymola PACKAGE=\"Buildings.HeatTransfer\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.HeatTransfer\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.HeatTransfer\"" - - TEST_ARG="make test-dymola PACKAGE=\"Buildings.{Obsolete,Occupants,Media}\"" - - TEST_ARG="make test-optimica PACKAGE=\"Buildings.{Obsolete,Occupants,Media}\"" - - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.{Obsolete,Occupants,Media}\"" + - TEST_ARG="make test-dymola PACKAGE=\"Buildings.{Obsolete.Controls,Occupants,Media}\"" + - TEST_ARG="make test-optimica PACKAGE=\"Buildings.{Obsolete.Controls,Occupants,Media}\"" + - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.{Obsolete.Controls,Occupants,Media}\"" - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Utilities\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Utilities\"" - TEST_ARG="make test-jmodelica PACKAGE=\"Buildings.Utilities\"" + - TEST_ARG="make test-omc" before_install: + - sudo apt-get -y install python3.6-minimal # Provides /usr/bin/python3.6m - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -<<<<<<< HEAD - - if [[ "$TEST_ARG" == *test-dymola* ]]; then - docker pull "$DOCKER_USERNAME"/travis_ubuntu-1804_dymola-2020x-x86_64; - chmod +x Buildings/Resources/Scripts/travis/dymola/dymola; - cp Buildings/Resources/Scripts/travis/dymola/dymola $HOME/bin/; - fi; - - if [[ "$TEST_ARG" == *test-optimica* ]]; then - docker pull "$DOCKER_USERNAME"/travis-ubuntu-1804-optimica; - chmod +x Buildings/Resources/Scripts/travis/optimica/jm_ipython.sh; -======= - if [[ "$TEST_ARG" == *test-dymola* || "$TEST_ARG" == *test-bestest* || "$TEST_ARG" == *spawn-portability* ]]; then docker pull "$DOCKER_USERNAME"/travis_ubuntu-1804_dymola:2022-x86_64; cp Buildings/Resources/Scripts/travis/dymola/dymola $HOME/bin/; fi; - if [[ "$TEST_ARG" == *test-optimica* ]]; then docker pull "$DOCKER_USERNAME"/travis-ubuntu-1804-optimica:r19089; ->>>>>>> master cp Buildings/Resources/Scripts/travis/optimica/jm_ipython.sh $HOME/bin/jm_ipython.sh; fi; - if [[ "$TEST_ARG" == *test-jmodelica* ]]; then docker pull "$DOCKER_USERNAME"/ubuntu-1804_jmodelica_trunk; - chmod +x Buildings/Resources/Scripts/travis/jmodelica/jm_ipython.sh; cp Buildings/Resources/Scripts/travis/jmodelica/jm_ipython.sh $HOME/bin/jm_ipython.sh; fi; - if [[ "$TEST_ARG" == *test-energyplus* ]]; then @@ -167,3 +147,11 @@ install: # Execute tests script: - (cd Buildings/Resources/Scripts/travis && travis_wait 90 $TEST_ARG) + +after_failure: + - | + for ff in `find Buildings -maxdepth 1 -name '*.log'`; do + echo "*** Content of $ff" + cat $ff + echo "*** End of $ff" + done diff --git a/Buildings/.copiedFiles.txt b/Buildings/.copiedFiles.txt index 33dd51f7d4d..276c09870ef 100644 --- a/Buildings/.copiedFiles.txt +++ b/Buildings/.copiedFiles.txt @@ -82,6 +82,8 @@ Buildings/BoundaryConditions/SolarGeometry/BaseClasses/WallSolarAzimuth.mo Buildings/BoundaryConditions/SolarGeometry/BaseClasses/ZenithAngle.mo Buildings/BoundaryConditions/SolarGeometry/BaseClasses/package.mo Buildings/BoundaryConditions/SolarGeometry/BaseClasses/package.order +Buildings/BoundaryConditions/SolarGeometry/BaseClasses/solarAzimuthNoEvent.mo +Buildings/BoundaryConditions/SolarGeometry/BaseClasses/solarAzimuthWithEvent.mo Buildings/BoundaryConditions/SolarGeometry/Examples/IncidenceAngle.mo Buildings/BoundaryConditions/SolarGeometry/Examples/ZenithAngle.mo Buildings/BoundaryConditions/SolarGeometry/Examples/package.mo @@ -257,6 +259,9 @@ Buildings/Fluid/Actuators/Dampers/Examples/package.order Buildings/Fluid/Actuators/Dampers/Exponential.mo Buildings/Fluid/Actuators/Dampers/MixingBox.mo Buildings/Fluid/Actuators/Dampers/PressureIndependent.mo +Buildings/Fluid/Actuators/Dampers/Validation/PressureIndependent.mo +Buildings/Fluid/Actuators/Dampers/Validation/package.mo +Buildings/Fluid/Actuators/Dampers/Validation/package.order Buildings/Fluid/Actuators/Dampers/package.mo Buildings/Fluid/Actuators/Dampers/package.order Buildings/Fluid/Actuators/Motors/Examples/IdealMotor.mo @@ -1216,11 +1221,7 @@ Buildings/Media/Examples/PropyleneGlycolWaterProperties.mo Buildings/Media/Examples/PropyleneGlycolWaterTemperatureEnthalpyInversion.mo Buildings/Media/Examples/SteamDerivativeCheck.mo Buildings/Media/Examples/SteamProperties.mo -<<<<<<< HEAD -Buildings/Media/Examples/SteamSaturatedProperties.mo -======= Buildings/Media/Examples/SteamSaturationConsistencyCheck.mo ->>>>>>> master Buildings/Media/Examples/SteamTemperatureEnthalpyInversion.mo Buildings/Media/Examples/WaterDerivativeCheck.mo Buildings/Media/Examples/WaterProperties.mo @@ -1407,6 +1408,8 @@ Buildings/Resources/Images/Fluid/Sensors/onePortHex.png Buildings/Resources/Images/Fluid/Sensors/onePortHex.tiff Buildings/Resources/Images/Fluid/Sensors/twoPortHex.png Buildings/Resources/Images/Fluid/Sensors/twoPortHex.tiff +Buildings/Resources/Images/Fluid/Sensors/warningIcon.png +Buildings/Resources/Images/Fluid/Sensors/warningIcon.svg Buildings/Resources/Images/Fluid/Storage/Stratified.pdf Buildings/Resources/Images/Fluid/Storage/Stratified.png Buildings/Resources/Images/Fluid/Storage/Stratified.svg @@ -1426,8 +1429,6 @@ Buildings/Resources/Images/Media/Antifreeze/PropyleneGlycolWaterError20degC.png Buildings/Resources/Images/Media/Antifreeze/PropyleneGlycolWaterProperties.pdf Buildings/Resources/Images/Media/Antifreeze/PropyleneGlycolWaterProperties.png Buildings/Resources/Images/Media/Antifreeze/propyleneGlycol.py -Buildings/Resources/Images/Media/Steam/numericalError.pdf -Buildings/Resources/Images/Media/Steam/numericalError.png Buildings/Resources/Images/Media/Water/plotCp.pdf Buildings/Resources/Images/Media/Water/plotCp.png Buildings/Resources/Images/Media/Water/plotCp.py @@ -1516,6 +1517,7 @@ Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Ex Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Examples/GetTimeSpanTMY3.mos Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Examples/GetTimeSpanTMY3LongHeader.mos Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Examples/GetTimeSpanTMY3_NonzeroStart.mos +Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Examples/LimitMin.mos Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Examples/LocalCivilTime.mos Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/BaseClasses/Examples/SolarTime.mos Buildings/Resources/Scripts/Dymola/BoundaryConditions/WeatherData/Examples/ReaderTMY3.mos @@ -1544,6 +1546,7 @@ Buildings/Resources/Scripts/Dymola/Fluid/Actuators/BaseClasses/Examples/EqualPer Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Dampers/Examples/Damper.mos Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Dampers/Examples/MixingBox.mos Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Dampers/Examples/VAVBoxExponential.mos +Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Dampers/Validation/PressureIndependent.mos Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Motors/Examples/IdealMotor.mos Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Valves/Examples/ThreeWayValves.mos Buildings/Resources/Scripts/Dymola/Fluid/Actuators/Valves/Examples/TwoWayValvePressureIndependent.mos @@ -1866,11 +1869,7 @@ Buildings/Resources/Scripts/Dymola/Media/Examples/PropyleneGlycolWaterProperties Buildings/Resources/Scripts/Dymola/Media/Examples/PropyleneGlycolWaterTemperatureEnthalpyInversion.mos Buildings/Resources/Scripts/Dymola/Media/Examples/SteamDerivativeCheck.mos Buildings/Resources/Scripts/Dymola/Media/Examples/SteamProperties.mos -<<<<<<< HEAD -Buildings/Resources/Scripts/Dymola/Media/Examples/SteamSaturatedProperties.mos -======= Buildings/Resources/Scripts/Dymola/Media/Examples/SteamSaturationConsistencyCheck.mos ->>>>>>> master Buildings/Resources/Scripts/Dymola/Media/Examples/SteamTemperatureEnthalpyInversion.mos Buildings/Resources/Scripts/Dymola/Media/Examples/WaterDerivativeCheck.mos Buildings/Resources/Scripts/Dymola/Media/Examples/WaterProperties.mos @@ -1883,6 +1882,7 @@ Buildings/Resources/Scripts/Dymola/Media/Specialized/Water/Examples/TemperatureD Buildings/Resources/Scripts/Dymola/Media/Specialized/Water/Examples/TemperatureDependentDensityTemperatureEnthalpyInversion.mos Buildings/Resources/Scripts/Dymola/Media/Specialized/Water/Examples/WaterProperties_pT.mos Buildings/Resources/Scripts/Dymola/ThermalZones/ReducedOrder/Examples/SimpleRoomFourElements.mos +Buildings/Resources/Scripts/Dymola/ThermalZones/ReducedOrder/Examples/SimpleRoomFourElementsTraceSubstance.mos Buildings/Resources/Scripts/Dymola/ThermalZones/ReducedOrder/Examples/SimpleRoomOneElement.mos Buildings/Resources/Scripts/Dymola/ThermalZones/ReducedOrder/Examples/SimpleRoomThreeElements.mos Buildings/Resources/Scripts/Dymola/ThermalZones/ReducedOrder/Examples/SimpleRoomTwoElements.mos @@ -1988,24 +1988,19 @@ Buildings/Resources/Scripts/Dymola/Utilities/Time/Validation/CalendarTimeMonths. Buildings/Resources/Scripts/Dymola/Utilities/Time/Validation/CalendarTimeMonthsMinus.mos Buildings/Resources/Scripts/Dymola/Utilities/Time/Validation/CalendarTimeMonthsPlus.mos Buildings/Resources/Scripts/JModelica/buildingspy_to_csv.py -<<<<<<< HEAD -Buildings/Resources/Scripts/travis/bin/dymola -Buildings/Resources/Scripts/travis/bin/jm_ipython.sh -======= Buildings/Resources/Scripts/travis/dymola/dymola ->>>>>>> master Buildings/Resources/bin/ConvertWeatherData.jar Buildings/Resources/src/convertEPW/Makefile Buildings/Resources/src/convertEPW/doc/ConvertWeatherData.html -Buildings/Resources/src/convertEPW/doc/allclasses-frame.html -Buildings/Resources/src/convertEPW/doc/allclasses-noframe.html +Buildings/Resources/src/convertEPW/doc/allclasses-index.html +Buildings/Resources/src/convertEPW/doc/allclasses.html +Buildings/Resources/src/convertEPW/doc/allpackages-index.html Buildings/Resources/src/convertEPW/doc/constant-values.html Buildings/Resources/src/convertEPW/doc/deprecated-list.html +Buildings/Resources/src/convertEPW/doc/element-list Buildings/Resources/src/convertEPW/doc/help-doc.html Buildings/Resources/src/convertEPW/doc/index-all.html Buildings/Resources/src/convertEPW/doc/index.html -<<<<<<< HEAD -======= Buildings/Resources/src/convertEPW/doc/jquery/external/jquery/jquery.js Buildings/Resources/src/convertEPW/doc/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png Buildings/Resources/src/convertEPW/doc/jquery/images/ui-bg_glass_65_dadada_1x400.png @@ -2035,14 +2030,19 @@ Buildings/Resources/src/convertEPW/doc/jquery/jszip/dist/jszip.js Buildings/Resources/src/convertEPW/doc/jquery/jszip/dist/jszip.min.js Buildings/Resources/src/convertEPW/doc/member-search-index.js Buildings/Resources/src/convertEPW/doc/member-search-index.zip ->>>>>>> master Buildings/Resources/src/convertEPW/doc/overview-tree.html -Buildings/Resources/src/convertEPW/doc/package-frame.html -Buildings/Resources/src/convertEPW/doc/package-list +Buildings/Resources/src/convertEPW/doc/package-search-index.js +Buildings/Resources/src/convertEPW/doc/package-search-index.zip Buildings/Resources/src/convertEPW/doc/package-summary.html Buildings/Resources/src/convertEPW/doc/package-tree.html +Buildings/Resources/src/convertEPW/doc/resources/glass.png Buildings/Resources/src/convertEPW/doc/resources/inherit.gif +Buildings/Resources/src/convertEPW/doc/resources/x.png +Buildings/Resources/src/convertEPW/doc/script.js +Buildings/Resources/src/convertEPW/doc/search.js Buildings/Resources/src/convertEPW/doc/stylesheet.css +Buildings/Resources/src/convertEPW/doc/type-search-index.js +Buildings/Resources/src/convertEPW/doc/type-search-index.zip Buildings/Resources/src/convertEPW/src/ConvertWeatherData.java Buildings/Resources/src/convertEPW/src/Makefile Buildings/Resources/src/convertEPW/src/Manifest.txt @@ -2060,6 +2060,7 @@ Buildings/ThermalZones/ReducedOrder/EquivalentAirTemperature/VDI6007WithWindow.m Buildings/ThermalZones/ReducedOrder/EquivalentAirTemperature/package.mo Buildings/ThermalZones/ReducedOrder/EquivalentAirTemperature/package.order Buildings/ThermalZones/ReducedOrder/Examples/SimpleRoomFourElements.mo +Buildings/ThermalZones/ReducedOrder/Examples/SimpleRoomFourElementsTraceSubstance.mo Buildings/ThermalZones/ReducedOrder/Examples/SimpleRoomOneElement.mo Buildings/ThermalZones/ReducedOrder/Examples/SimpleRoomThreeElements.mo Buildings/ThermalZones/ReducedOrder/Examples/SimpleRoomTwoElements.mo diff --git a/Buildings/Air/Systems/SingleZone/VAV/BaseClasses/ControllerChillerDXHeatingEconomizer.mo b/Buildings/Air/Systems/SingleZone/VAV/BaseClasses/ControllerChillerDXHeatingEconomizer.mo index 20e98caa8a3..bcf2e856340 100644 --- a/Buildings/Air/Systems/SingleZone/VAV/BaseClasses/ControllerChillerDXHeatingEconomizer.mo +++ b/Buildings/Air/Systems/SingleZone/VAV/BaseClasses/ControllerChillerDXHeatingEconomizer.mo @@ -6,127 +6,200 @@ model ControllerChillerDXHeatingEconomizer parameter Modelica.SIunits.Temperature TSupChi_nominal "Design value for chiller leaving water temperature"; parameter Real minAirFlo( - min=0, - max=1, - unit="1") = 0.2 - "Minimum airflow rate of system" - annotation(Dialog(group="Air design")); + final min=0, + final max=1, + final unit="1") + "Minimum airflow fraction of system" + annotation(Dialog(group="Setpoints")); + parameter Modelica.SIunits.DimensionlessRatio minOAFra + "Minimum outdoor air fraction of system" + annotation(Dialog(group="Setpoints")); + parameter Modelica.SIunits.Temperature TSetSupAir + "Cooling supply air temperature setpoint" + annotation(Dialog(group="Setpoints")); + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeHea= + Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller" + annotation(Dialog(group="Heating coil control")); + parameter Real kHea( + final unit="1/K")=0.1 + "Gain for heating coil control signal" + annotation(Dialog(group="Heating coil control")); + parameter Real TiHea( + final unit="s", + final quantity="Time")=900 + "Time constant of integrator block for heating coil control signal" + annotation(Dialog(group="Heating coil control", + enable=controllerTypeHea == Buildings.Controls.OBC.CDL.Types.SimpleController.PI + or controllerTypeHea == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Real TdHea( + final unit="s", + final quantity="Time")=0.1 + "Time constant of derivative block for heating coil control signal" + annotation (Dialog(group="Heating coil control", + enable=controllerTypeHea == Buildings.Controls.OBC.CDL.Types.SimpleController.PD + or controllerTypeHea == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeCoo= + Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller" + annotation(Dialog(group="Cooling coil control")); + parameter Real kCoo( + final unit="1/K")=0.1 + "Gain for cooling coil control signal" + annotation(Dialog(group="Cooling coil control")); + parameter Real TiCoo( + final unit="s")=900 + "Time constant of integrator block for cooling coil control signal" + annotation(Dialog(group="Cooling coil control", + enable=controllerTypeCoo == Buildings.Controls.OBC.CDL.Types.SimpleController.PI + or controllerTypeCoo == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Real TdCoo( + final unit="s")=0.1 + "Time constant of derivative block for cooling coil control signal" + annotation (Dialog(group="Cooling coil control", + enable=controllerTypeCoo == Buildings.Controls.OBC.CDL.Types.SimpleController.PD + or controllerTypeCoo == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFan= + Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller" + annotation(Dialog(group="Fan control")); + parameter Real kFan(final unit="1/K")=0.1 + "Gain for fan signal" + annotation(Dialog(group="Fan control")); + parameter Real TiFan( + final unit="s", + final quantity="Time")=900 + "Time constant of integrator block for fan signal" + annotation(Dialog(group="Fan control", + enable=controllerTypeFan == Buildings.Controls.OBC.CDL.Types.SimpleController.PI + or controllerTypeFan == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Real TdFan( + final unit="s", + final quantity="Time")=0.1 + "Time constant of derivative block for fan signal" + annotation (Dialog(group="Fan control", + enable=controllerTypeFan == Buildings.Controls.OBC.CDL.Types.SimpleController.PD + or controllerTypeFan == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeEco= + Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller" + annotation(Dialog(group="Economizer control")); + parameter Real kEco(final unit="1/K")=0.1 + "Gain for economizer control signal" + annotation(Dialog(group="Economizer control")); + parameter Real TiEco=300 + "Time constant of integrator block for economizer control signal" + annotation(Dialog(group="Economizer control", + enable=controllerTypeEco == Buildings.Controls.OBC.CDL.Types.SimpleController.PI + or controllerTypeEco == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Real TdEco( + final unit="s", + final quantity="Time")=0.1 + "Time constant of derivative block for economizer control signal" + annotation (Dialog(group="Economizer control", + enable=controllerTypeEco == Buildings.Controls.OBC.CDL.Types.SimpleController.PD + or controllerTypeEco == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); - parameter Modelica.SIunits.DimensionlessRatio minOAFra "Minimum outdoor air fraction of system" - annotation(Dialog(group="Air design")); - - parameter Modelica.SIunits.Temperature TSetSupAir "Cooling supply air temperature setpoint" - annotation(Dialog(group="Air design")); - - parameter Real kHea(min=Modelica.Constants.small) = 2 - "Gain of heating controller" - annotation(Dialog(group="Control gain")); - - parameter Real kCoo(min=Modelica.Constants.small)=1 - "Gain of controller for cooling valve" - annotation(Dialog(group="Control gain")); - - parameter Real kFan(min=Modelica.Constants.small) = 0.5 - "Gain of controller for fan" - annotation(Dialog(group="Control gain")); - - parameter Real kEco(min=Modelica.Constants.small) = 4 - "Gain of controller for economizer" - annotation(Dialog(group="Control gain")); - - Modelica.Blocks.Interfaces.RealInput TRoo( + Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetRooCoo( final unit="K", - displayUnit="degC") "Zone temperature measurement" - annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - origin={-120,-60}))); - - Modelica.Blocks.Interfaces.RealInput TSetRooCoo( + displayUnit="degC", + final quantity="ThermodynamicTemperature") + "Zone cooling setpoint temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,10},{-100,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetRooHea( final unit="K", - displayUnit="degC") - "Zone cooling setpoint temperature" annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,60}))); - Modelica.Blocks.Interfaces.RealInput TSetRooHea( + displayUnit="degC", + final quantity="ThermodynamicTemperature") + "Zone heating setpoint temperature" + annotation (Placement(transformation(extent={{-140,100},{-100,140}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TRoo( final unit="K", - displayUnit="degC") - "Zone heating setpoint temperature" annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,100}))); - - Modelica.Blocks.Interfaces.RealInput TMix( + displayUnit="degC", + final quantity="ThermodynamicTemperature") + "Zone temperature measurement" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},origin={-120,-80}), + iconTransformation(extent={{-20,-20},{20,20}},origin={-120,-60}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TMix( final unit="K", - displayUnit="degC") + displayUnit="degC", + final quantity="ThermodynamicTemperature") "Measured mixed air temperature" - annotation (Placement(transformation(extent={{-140,0},{-100,40}}))); - - Modelica.Blocks.Interfaces.RealInput TSup( + annotation (Placement(transformation(extent={{-140,10},{-100,50}}), + iconTransformation(extent={{-140,70},{-100,110}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup( final unit="K", - displayUnit="degC") + displayUnit="degC", + final quantity="ThermodynamicTemperature") "Measured supply air temperature after the cooling coil" - annotation (Placement(transformation(extent={{-140,-110},{-100,-70}}))); - - Modelica.Blocks.Interfaces.RealInput TOut( + annotation (Placement(transformation(extent={{-140,-130},{-100,-90}}), + iconTransformation(extent={{-140,-110},{-100,-70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", - displayUnit="degC") + displayUnit="degC", + final quantity="ThermodynamicTemperature") "Measured outside air temperature" - annotation (Placement(transformation(extent={{-140,-40},{-100,0}}))); - - Modelica.Blocks.Interfaces.RealOutput yHea(final unit="1") "Control signal for heating coil" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - - Modelica.Blocks.Interfaces.RealOutput yFan(final unit="1") "Control signal for fan" - annotation (Placement(transformation(extent={{100,80},{120,100}}))); - - Modelica.Blocks.Interfaces.RealOutput yOutAirFra(final unit="1") + annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}), + iconTransformation(extent={{-140,-50},{-100,-10}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHea( + final unit="1") "Control signal for heating coil" + annotation (Placement(transformation(extent={{100,44},{120,64}}), + iconTransformation(extent={{100,30},{140,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yFan( + final unit="1") "Control signal for fan" + annotation (Placement(transformation(extent={{100,80},{120,100}}), + iconTransformation(extent={{100,60},{140,100}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutAirFra( + final unit="1") "Control signal for outside air fraction" - annotation (Placement(transformation(extent={{100,20},{120,40}}))); - - Modelica.Blocks.Interfaces.RealOutput yCooCoiVal(final unit="1") + annotation (Placement(transformation(extent={{100,10},{120,30}}), + iconTransformation(extent={{100,0},{140,40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCooCoiVal( + final unit="1") "Control signal for cooling coil valve" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - - Modelica.Blocks.Interfaces.RealOutput TSetSupChi( + annotation (Placement(transformation(extent={{100,-30},{120,-10}}), + iconTransformation(extent={{100,-40},{140,0}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput TSetSupChi( final unit="K", displayUnit="degC") "Set point for chiller leaving water temperature" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); - - Modelica.Blocks.Interfaces.BooleanOutput chiOn "On signal for chiller" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + annotation (Placement(transformation(extent={{100,-100},{120,-80}}), + iconTransformation(extent={{100,-100},{140,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput chiOn + "On signal for chiller" + annotation (Placement(transformation(extent={{100,-64},{120,-44}}), + iconTransformation(extent={{100,-70},{140,-30}}))); BaseClasses.ControllerHeatingFan conSup( - minAirFlo = minAirFlo, - kHea = kHea, - kFan = kFan) "Heating coil, cooling coil and fan controller" - annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + final controllerTypeHea=controllerTypeHea, + final kHea=kHea, + final TiHea=TiHea, + final TdHea=TdHea, + final controllerTypeFan=controllerTypeFan, + final kFan=kFan, + final TiFan=TiFan, + final TdFan=TdFan, + final minAirFlo = minAirFlo) + "Heating coil and fan controller" + annotation (Placement(transformation(extent={{-60,80},{-40,100}}))); BaseClasses.ControllerEconomizer conEco( - final kEco = kEco) + final controllerTypeEco=controllerTypeEco, + final kEco=kEco, + final TiEco=TiEco, + final TdEco=TdEco) "Economizer control" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); - - Controls.OBC.CDL.Continuous.Hysteresis hysChiPla( - uLow=-1, - uHigh=0) - "Hysteresis with delay to switch on cooling" - annotation (Placement(transformation(extent={{40,-50},{60,-30}}))); - - Modelica.Blocks.Math.Feedback errTRooCoo - "Control error on room temperature for cooling" - annotation (Placement(transformation(extent={{-42,-70},{-22,-50}}))); - Controls.Continuous.LimPID conCooVal( - controllerType=Modelica.Blocks.Types.SimpleController.P, + annotation (Placement(transformation(extent={{40,60},{60,80}}))); + Buildings.Controls.Continuous.LimPID conCooVal( + final controllerType=controllerTypeCoo, + final k=kCoo, + final Ti=TiCoo, + final Td=TdCoo, final yMax=1, final yMin=0, - final k=kCoo, - final reverseAction=true) + final reverseActing=false) "Cooling coil valve controller" annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); -<<<<<<< HEAD:Buildings/Air/Systems/SingleZone/VAV/ChillerDXHeatingEconomizerController.mo -======= Buildings.Controls.OBC.CDL.Logical.Switch swi "Switch the outdoor air fraction to 0 when in unoccupied mode" annotation (Placement(transformation(extent={{0,20},{20,40}}))); @@ -152,73 +225,22 @@ model ControllerChillerDXHeatingEconomizer Buildings.Controls.OBC.CDL.Continuous.Greater chiOnTRoo(h=1) "Chiller on signal based on room temperature" annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); ->>>>>>> master:Buildings/Air/Systems/SingleZone/VAV/BaseClasses/ControllerChillerDXHeatingEconomizer.mo protected Modelica.Blocks.Sources.Constant TSetSupChiConst( final k=TSupChi_nominal) "Set point for chiller temperature" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - + annotation (Placement(transformation(extent={{60,-100},{80,-80}}))); Modelica.Blocks.Sources.Constant conMinOAFra( final k=minOAFra) "Minimum outside air fraction" - annotation (Placement(transformation(extent={{-70,38},{-50,58}}))); - + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); Modelica.Blocks.Sources.Constant TSetSupAirConst( final k=TSetSupAir) "Set point for supply air temperature" - annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); equation -<<<<<<< HEAD:Buildings/Air/Systems/SingleZone/VAV/ChillerDXHeatingEconomizerController.mo - connect(conMinOAFra.y,conEco. minOAFra) annotation (Line(points={{-49,48},{ - -26,48},{-1,48}}, color={0,0,127})); - connect(TSetSupAirConst.y, conEco.TMixSet) annotation (Line(points={{-39,-20}, - {-20,-20},{-20,58},{-1,58}}, color={0,0,127})); - connect(errTRooCoo.y, hysChiPla.u) annotation (Line(points={{-23,-60},{0,-60}, - {0,-40},{38,-40}}, color={0,0,127})); - connect(TSetRooCoo, errTRooCoo.u2) annotation (Line(points={{-120,60},{-80,60}, - {-80,-80},{-32,-80},{-32,-68}}, color={0,0,127})); - connect(errTRooCoo.u1, TRoo) annotation (Line(points={{-40,-60},{-74,-60},{ - -120,-60}}, color={0,0,127})); - connect(TSetSupAirConst.y,conCooVal. u_s) - annotation (Line(points={{-39,-20},{-2,-20}}, color={0,0,127})); - connect(conSup.TSetRooHea, TSetRooHea) annotation (Line(points={{-41,86},{-88, - 86},{-88,100},{-120,100}}, - color={0,0,127})); - connect(conSup.TSetRooCoo, TSetRooCoo) annotation (Line(points={{-41,80},{-80, - 80},{-80,60},{-120,60}}, color={0,0,127})); - connect(conSup.TRoo, TRoo) annotation (Line(points={{-41,74},{-74,74},{-74, - -60},{-120,-60}}, - color={0,0,127})); - connect(conSup.yHea, conEco.yHea) annotation (Line(points={{-19,76},{-10,76}, - {-10,42},{-1,42}},color={0,0,127})); - connect(conEco.TMix, TMix) annotation (Line(points={{-1,55},{-40,55},{-40,20}, - {-120,20}}, color={0,0,127})); - connect(conEco.TRet, TRoo) annotation (Line(points={{-1,52},{-34,52},{-34,12}, - {-88,12},{-88,-60},{-120,-60}}, color={0,0,127})); - connect(conEco.TOut, TOut) annotation (Line(points={{-1,45},{-30,45},{-30,8}, - {-94,8},{-94,-20},{-120,-20}}, color={0,0,127})); - connect(conSup.yHea, yHea) annotation (Line(points={{-19,76},{40,76},{40,60}, - {80,60},{110,60}}, - color={0,0,127})); - connect(conSup.yFan, yFan) annotation (Line(points={{-19,84},{40,84},{40,90}, - {40,90},{40,90},{110,90},{110,90}}, - color={0,0,127})); - connect(conEco.yOutAirFra, yOutAirFra) annotation (Line(points={{21,50},{80,50}, - {80,30},{110,30}}, color={0,0,127})); - connect(conCooVal.y, yCooCoiVal) - annotation (Line(points={{21,-20},{76,-20},{76,0},{110,0}}, - color={0,0,127})); - connect(TSetSupChiConst.y, TSetSupChi) - annotation (Line(points={{61,-80},{110,-80}}, color={0,0,127})); - connect(conCooVal.u_m, TSup) - annotation (Line(points={{10,-32},{10,-90},{-120,-90}}, color={0,0,127})); - connect(hysChiPla.y, chiOn) annotation (Line(points={{61,-40},{80,-40},{110, - -40}}, color={255,0,255})); - annotation (Icon(graphics={Line(points={{-100,-100},{0,2},{-100,100}}, color= -======= connect(TSetSupAirConst.y,conCooVal. u_s) annotation (Line(points={{-19,-50}, {-10,-50},{-10,-20},{-2,-20}}, color={0,0,127})); connect(conSup.TRoo, TRoo) annotation (Line(points={{-61,84},{-74,84},{-74, @@ -286,16 +308,14 @@ equation annotation ( defaultComponentName="conChiDXHeaEco", Icon(graphics={Line(points={{-100,-100},{0,2},{-100,100}}, color= ->>>>>>> master:Buildings/Air/Systems/SingleZone/VAV/BaseClasses/ControllerChillerDXHeatingEconomizer.mo {0,0,0})}), Documentation(info="
-This is the controller for the VAV system with economizer, heating coil and cooling coil. +This is a controller for the single-zone VAV system with an economizer, a +heating coil and a cooling coil.
", revisions="