Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV

Sequences for single zone VAV AHU control

Information

This package contains control sequences from ASHRAE Guideline 36, Section 5.18 for single zone VAV air handling unit control.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller Controller Single Zone AHU controller that composes subsequences for controlling fan speed, economizer, and supply air temperature
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Economizers Economizers Economizer control of single zone VAV AHU
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints SetPoints Output setpoints for AHU control
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller

Single Zone AHU controller that composes subsequences for controlling fan speed, economizer, and supply air temperature

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller

Information

Block for single zone VAV control. It outputs supply fan speed, supply air temperature setpoints for heating, economizer and cooling, zone air heating and cooling setpoints, outdoor and return air damper positions, and valve positions of heating and cooling coils. It is implemented according to the ASHRAE Guideline 36, Section 5.18.

The sequences consist of the following subsequences.

Supply fan speed control

The fan speed control is implemented according to Section 5.18.4. It outputs the control signal yFan to adjust the speed of the supply fan. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply for more detailed description.

Supply air temperature setpoints

The supply air temperature setpoints control sequences are implemented based on Section 5.18.4. They are implemented in the same control block as the supply fan speed control. The supply air temperature setpoint for heating and economizer is the same; while the supply air temperature setpoint for cooling has a separate control loop. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply for more detailed description.

Economizer control

The Economizer control block outputs outdoor and return air damper position, i.e. yOutDamPos and yRetDamPos, as well as control signal for heating coil yHeaCoi. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Economizers.Controller for more detailed description.

Minimum outdoor airflow

Control sequences are implemented to compute the minimum outdoor airflow setpoint, which is used as an input for the economizer control. More detailed information can be found at Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.

Zone air heating and cooling setpoints

Zone air heating and cooling setpoints as well as system operation modes are detailed at Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints.

Coil valve control

The subsequence retrieves supply air temperature setpoint from previous sequence. Along with the measured supply air temperature and the supply fan status, it generates coil valve positions. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.CoolingCoil for more detailed description.

Freeze protection

Based on the Section 5.18.11, the sequence enables freeze protection if the measured supply air temperature belows certain thresholds. There are three protection stages. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection for more detailed description.

Building pressure control

By selecting different building pressure control designs, which includes using actuated relief dampers without fans, using actuated relief dampers with relief fan, using return fans. See belows sequences for more detailed description:

Plant request

According to the Section 5.18.15, the sequence send out heating or cooling plant requests if the supply air temperature is below or above threshold value, or the heating or cooling valves have been widely open for certain times. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests for more detailed description.

Parameters

TypeNameDefaultDescription
EnergyStandardeneStdBuildings.Controls.OBC.ASHRA...Energy standard, ASHRAE 90.1 or Title 24
VentilationStandardvenStdBuildings.Controls.OBC.ASHRA...Ventilation standard, ASHRAE 62.1 or Title 24
ControlEconomizerecoHigLimConBuildings.Controls.OBC.ASHRA...Economizer high limit control device
ASHRAEClimateZoneashCliZonBuildings.Controls.OBC.ASHRA...ASHRAE climate zone
Title24ClimateZonetit24CliZonBuildings.Controls.OBC.ASHRA...California Title 24 climate zone
FreezeStatfreStaBuildings.Controls.OBC.ASHRA...Type of freeze stat
Booleanhave_winSenfalseCheck if the zone has window status sensor
Booleanhave_occSenfalseCheck if the zone has occupancy sensor
Booleanhave_hotWatCoitrueTrue: the AHU has hot water heating coil
Booleanhave_eleHeaCoifalseTrue: the AHU has electric heating coil
Booleanhave_CO2SentrueTrue: the zone has CO2 sensor
BuildingPressureControlTypesbuiPreConBuildings.Controls.OBC.ASHRA...Type of building pressure control system
Booleanhave_ahuRelFantrueTrue: relief fan is part of AHU; False: the relief fans group that may associate multiple AHUs
Design conditions
RealVAreBreZon_flow0Design area component of the breathing zone outdoor airflow [m3/s]
RealVPopBreZon_flow0Design population component of the breathing zone outdoor airflow [m3/s]
Setpoints adjustment
Adjustable settings
Booleanhave_locAdjtrueTrue: the zone has local setpoint adjustment knob
BooleansepAdjtrueTrue: cooling and heating setpoint can be adjusted separately
BooleanignDemLimtrueFlag, set to true to exempt individual zone from demand limit setpoint adjustment
Limits
RealTActCoo_max300.15Maximum cooling setpoint during on [K]
RealTActCoo_min295.15Minimum cooling setpoint during on [K]
RealTActHea_max295.15Maximum heating setpoint during on [K]
RealTActHea_min291.15Minimum heating setpoint during on [K]
RealTWinOpeCooSet322.15Cooling setpoint when window is open [K]
RealTWinOpeHeaSet277.15Heating setpoint when window is open [K]
Demand control adjustment
RealincTSetDem_10.5Cooling setpoint increase value (degC) when cooling demand limit level 1 is imposed [K]
RealincTSetDem_21Cooling setpoint increase value (degC) when cooling demand limit level 2 is imposed [K]
RealincTSetDem_32Cooling setpoint increase value (degC) when cooling demand limit level 3 is imposed [K]
RealdecTSetDem_10.5Heating setpoint decrease value (degC) when heating demand limit level 1 is imposed [K]
RealdecTSetDem_21Heating setpoint decrease value (degC) when heating demand limit level 2 is imposed [K]
RealdecTSetDem_32Heating setpoint decrease value (degC) when heating demand limit level 3 is imposed [K]
Operation mode
RealpreWarCooTim10800Maximum cool-down or warm-up time [s]
RealTZonFreProOn277.15Threshold temperature to activate the freeze protection mode [K]
RealTZonFreProOff280.15Threshold temperature to end the freeze protection mode [K]
Hysteresis
RealbouLim1Threshold of temperature difference for indicating the end of setback or setup mode
RealuLow-0.1Low limit of the hysteresis for checking temperature difference
RealuHigh0.1High limit of the hysteresis for checking temperature difference
Loops control
Cooling loop
SimpleControllercooLooConBuildings.Controls.OBC.CDL.T...Cooling loop controller type
RealkCoo0.1Gain for cooling control loop signal [1/K]
RealTiCoo900Time constant of integrator block for cooling control loop signal [s]
RealTdCoo0.1Time constant of derivative block for cooling control loop signal [s]
Heating loop
SimpleControllerheaLooConBuildings.Controls.OBC.CDL.T...Heating loop controller type
RealkHea0.1Gain for heating control loop signal [1/K]
RealTiHea900Time constant of integrator block for heating control loop signal [s]
RealTdHea0.1Time constant of derivative block for heating control loop signal [s]
Supply setpoints
Temperature
RealTSup_max303.15Maximum supply air temperature for heating [K]
RealTSup_min291.15Minimum supply air temperature for cooling [K]
RealTSupDew_max290.15Maximum supply air dew-point temperature. It's typically only needed in humid type “A” climates. A typical value is 17°C. For mild and dry climates, a high set point (e.g. 24°C) should be entered for maximum efficiency [K]
RealTSupDea_min294.15Minimum supply temperature when it is in deadband state [K]
RealTSupDea_max297.15Maximum supply temperature when it is in deadband state [K]
RealtemPoiOne0.5Point 1 on x-axis of control map for temperature control, when it is in heating state
RealtemPoiTwo0.25Point 2 on x-axis of control map for temperature control, when it is in cooling state
RealtemPoiThr0.5Point 3 on x-axis of control map for temperature control, when it is in cooling state
RealtemPoiFou0.75Point 4 on x-axis of control map for temperature control, when it is in cooling state
Fan speed
RealmaxHeaSpe1Maximum fan speed for heating [1]
RealmaxCooSpe1Maximum fan speed for cooling [1]
RealminSpe0.1Minimum fan speed [1]
RealspePoiOne0.5Point 1 on x-axis of control map for speed control, when it is in heating state
RealspePoiTwo0.25Point 2 on x-axis of control map for speed control, when it is in cooling state
RealspePoiThr0.5Point 3 on x-axis of control map for speed control, when it is in cooling state
RealspePoiFou0.75Point 4 on x-axis of control map for speed control, when it is in cooling state
Hysteresis
ReallooHys0.05Loop output hysteresis below which the output will be seen as zero
Outdoor airflow
ASHRAE62.1
Booleanpermit_occStandbytrueTrue: occupied-standby mode is permitted
RealzonDisEff_cool1.0Zone cooling air distribution effectiveness
RealzonDisEff_heat0.8Zone heating air distribution effectiveness
Title 24
RealVOccMin_flow0Zone minimum outdoor airflow for occupants
RealVAreMin_flow0Zone minimum outdoor airflow for building area
RealVZonMin_flow0Design zone minimum airflow setpoint
Economizer
RealuMin0.1Lower limit of controller output at which the dampers are at their limits [1]
RealuMax0.9Upper limit of controller output at which the dampers are at their limits [1]
Modulation
SimpleControllerecoModConBuildings.Controls.OBC.CDL.T...Type of controller
RealkMod1Gain of modulation controller
RealTiMod300Time constant of modulation controller integrator block [s]
RealTdMod0.1Time constant of derivative block for modulation controller [s]
Commissioning
RealsupFanSpe_min0.1Minimum supply fan operation speed [1]
RealsupFanSpe_max0.9Maximum supply fan operation speed [1]
RealVOutMin_flow1.0Calculated minimum outdoor airflow rate [m3/s]
RealVOutDes_flow2.0Calculated design outdoor airflow rate [m3/s]
RealoutDamMinFloMinSpe0.4Outdoor air damper position to supply minimum outdoor airflow at minimum fan speed [1]
RealoutDamMinFloMaxSpe0.3Outdoor air damper position to supply minimum outdoor airflow at maximum fan speed [1]
RealoutDamDesFloMinSpe0.9Outdoor air damper position to supply design outdoor airflow at minimum fan speed [1]
RealoutDamDesFloMaxSpe0.8Outdoor air damper position to supply design outdoor airflow at maximum fan speed [1]
RealoutDamPhy_max1Physically fixed maximum position of the outdoor air damper [1]
RealoutDamPhy_min0Physically fixed minimum position of the outdoor air damper [1]
RealretDamPhy_max1Physically fixed maximum position of the return air damper [1]
RealretDamPhy_min0Physically fixed minimum position of the return air damper [1]
Hysteresis
RealdelTOutHys1Delta between the temperature hysteresis high and low limit [K]
Cooling coil
SimpleControllercooCoiConBuildings.Controls.OBC.CDL.T...Type of controller
RealkCooCoi0.1Gain for cooling coil control loop signal [1/K]
RealTiCooCoi900Time constant of integrator block for cooling coil control loop signal [s]
RealTdCooCoi0.1Time constant of derivative block for cooling coil control loop signal [s]
Freeze protection
IntegerminHotWatReq2Minimum heating hot-water plant request to active the heating plant
Heating coil control
SimpleControllerfreHeaCoiConBuildings.Controls.OBC.CDL.T...Heating coil controller
RealkFreHea1Gain of coil controller
RealTiFreHea0.5Time constant of integrator block [s]
RealTdFreHea0.1Time constant of derivative block [s]
RealyMaxFreHea1Upper limit of output
RealyMinFreHea0Lower limit of output
Pressure control
Relief damper
RealrelDam_min0.1Relief-damper position that maintains a building pressure of 12 Pa while the economizer damper is positioned to provide minimum outdoor air while the supply fan is at minimum speed [1]
RealrelDam_max1Relief-damper position that maintains a building pressure of 12 Pa while the economizer damper is fully open and the fan speed is at cooling maximum [1]
Return fan
RealspeDif-0.1Speed difference between supply and return fan to maintain building pressure at desired pressure
RealdpBuiSet12Building static pressure difference relative to ambient (positive to pressurize the building) [Pa]
Relief fan
RealrelFanSpe_min0.1Relief fan minimum speed
RealkRelFan1Gain of relief fan controller, normalized using dpBuiSet [1]
Advanced
Hysteresis
RealposHys0.05Hysteresis for damper position check
RealThys0.25Hysteresis for checking temperature difference [K]
RealdelEntHys1000Delta between the enthalpy hysteresis high and low limits [J/kg]
RealfloHys0.01Near zero flow rate, below which the flow rate or difference will be seen as zero

Connectors

TypeNameDescription
input RealInputTOutOutside air temperature [K]
input RealInputcooDowTimCool-down time retrieved from optimal cool-down block [s]
input RealInputwarUpTimWarm-up time retrieved from optimal warm-up block [s]
input BooleanInputu1OccCurrent occupancy period, true if it is in occupant period
input RealInputtNexOccTime to next occupied period [s]
input RealInputTZonMeasured zone temperatures [K]
input RealInputTOccHeaSetZone occupied heating setpoint temperatures [K]
input RealInputTOccCooSetZone occupied cooling setpoint temperatures [K]
input RealInputTUnoHeaSetZone unoccupied heating setpoint temperatures [K]
input RealInputTUnoCooSetZone unoccupied cooling setpoint temperatures [K]
input RealInputsetAdjSetpoint adjustment value
input RealInputcooSetAdjCooling setpoint adjustment value
input RealInputheaSetAdjHeating setpoint adjustment value
input BooleanInputu1OccSenOccupancy sensor (occupied=true, unoccupied=false)
input IntegerInputuCooDemLimLevCooling demand limit level
input IntegerInputuHeaDemLimLevHeating demand limit level
input RealInputppmCO2SetCO2 concentration setpoint
input RealInputppmCO2Detected CO2 concentration
input RealInputTAirSupMeasured supply air temperature [K]
input BooleanInputu1WinWindow status, true if open, false if closed
input RealInputhOutOutdoor air enthalpy [J/kg]
input RealInputhAirRetReturn air enthalpy [J/kg]
input RealInputTAirRetUsed only for fixed plus differential dry bulb temperature high limit cutoff [K]
input BooleanInputu1FreStaFreeze protection stat signal
input BooleanInputu1SofSwiResFreeze protection reset signal from software switch
input RealInputdpBuiMeasured building static pressure difference, relative to ambient (positive if pressurized) [Pa]
input BooleanInputu1RelFanRelief fan commanded on
input RealInputuRelFanRelief fan commanded speed [1]
input RealInputTAirMixMeasured mixed air temperature, used for freeze protection [K]
input RealInputuOutDamOutdoor damper position [1]
input RealInputuSupFan_actualActual supply fan speed [1]
input RealInputuCooCoi_actualCooling coil valve actual position [1]
input RealInputuHeaCoi_actualHeating coil valve actual position [1]
output RealOutputTSupHeaEcoSetTemperature setpoint for heating coil and for economizer [K]
output RealOutputTSupCooSetCooling supply air temperature setpoint [K]
output RealOutputTZonHeaSetZone heating setpoint temperature [K]
output RealOutputTZonCooSetZone cooling setpoint temperature [K]
output BooleanOutputy1EneCHWPumCommanded on to energize chilled water pump
output RealOutputyRetDamReturn air damper commanded position [1]
output RealOutputyOutDamOutdoor air damper commanded position [1]
output BooleanOutputy1SupFanSupply fan commanded on
output RealOutputySupFanSupply fan commanded speed [1]
output BooleanOutputy1RetFanReturn fan commanded on
output RealOutputyRetFanReturn fan commanded speed [1]
output BooleanOutputy1RelFanRelief fan commanded on
output RealOutputyRelFanRelief fan commanded speed [1]
output RealOutputyCooCoiCooling coil valve commanded position [1]
output RealOutputyHeaCoiHeating coil valve commanded position [1]
output IntegerOutputyAlaAlarm level
output RealOutputyRelDamRelief damper commanded position [1]
output BooleanOutputy1ExhDamExhaust damper command on
output IntegerOutputyChiWatResReqChilled water reset request
output IntegerOutputyChiPlaReqChiller plant request
output IntegerOutputyHotWatResReqHot water reset request
output IntegerOutputyHotWatPlaReqHot water plant request

Modelica definition

block Controller "Single Zone AHU controller that composes subsequences for controlling fan speed, economizer, and supply air temperature" parameter Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016 "Energy standard, ASHRAE 90.1 or Title 24"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Ventilation standard, ASHRAE 62.1 or Title 24"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer. FixedDryBulb "Economizer high limit control device"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_3A "ASHRAE climate zone"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone tit24CliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Not_Specified "California Title 24 climate zone"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat freSta=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat "Type of freeze stat"; parameter Boolean have_winSen=false "Check if the zone has window status sensor"; parameter Boolean have_occSen=false "Check if the zone has occupancy sensor"; parameter Boolean have_hotWatCoi=true "True: the AHU has hot water heating coil"; parameter Boolean have_eleHeaCoi=false "True: the AHU has electric heating coil"; parameter Boolean have_CO2Sen=true "True: the zone has CO2 sensor"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes. BarometricRelief "Type of building pressure control system"; parameter Boolean have_ahuRelFan=true "True: relief fan is part of AHU; False: the relief fans group that may associate multiple AHUs"; parameter Real VAreBreZon_flow(unit="m3/s")=0 "Design area component of the breathing zone outdoor airflow"; parameter Real VPopBreZon_flow(unit="m3/s")=0 "Design population component of the breathing zone outdoor airflow"; // ----------- parameters for setpoint adjustment ----------- parameter Boolean have_locAdj=true "True: the zone has local setpoint adjustment knob"; parameter Boolean sepAdj=true "True: cooling and heating setpoint can be adjusted separately"; parameter Boolean ignDemLim=true "Flag, set to true to exempt individual zone from demand limit setpoint adjustment"; parameter Real TActCoo_max( unit="K", displayUnit="degC")=300.15 "Maximum cooling setpoint during on"; parameter Real TActCoo_min( unit="K", displayUnit="degC")=295.15 "Minimum cooling setpoint during on"; parameter Real TActHea_max( unit="K", displayUnit="degC")=295.15 "Maximum heating setpoint during on"; parameter Real TActHea_min( unit="K", displayUnit="degC")=291.15 "Minimum heating setpoint during on"; parameter Real TWinOpeCooSet( unit="K", displayUnit="degC")=322.15 "Cooling setpoint when window is open"; parameter Real TWinOpeHeaSet( unit="K", displayUnit="degC")=277.15 "Heating setpoint when window is open"; parameter Real incTSetDem_1(unit="K")=0.5 "Cooling setpoint increase value (degC) when cooling demand limit level 1 is imposed"; parameter Real incTSetDem_2(unit="K")=1 "Cooling setpoint increase value (degC) when cooling demand limit level 2 is imposed"; parameter Real incTSetDem_3(unit="K")=2 "Cooling setpoint increase value (degC) when cooling demand limit level 3 is imposed"; parameter Real decTSetDem_1(unit="K")=0.5 "Heating setpoint decrease value (degC) when heating demand limit level 1 is imposed"; parameter Real decTSetDem_2(unit="K")=1 "Heating setpoint decrease value (degC) when heating demand limit level 2 is imposed"; parameter Real decTSetDem_3(unit="K")=2 "Heating setpoint decrease value (degC) when heating demand limit level 3 is imposed"; parameter Real preWarCooTim(unit="s")=10800 "Maximum cool-down or warm-up time"; parameter Real TZonFreProOn( unit="K", displayUnit="degC")=277.15 "Threshold temperature to activate the freeze protection mode"; parameter Real TZonFreProOff( unit="K", displayUnit="degC")=280.15 "Threshold temperature to end the freeze protection mode"; parameter Real bouLim=1 "Threshold of temperature difference for indicating the end of setback or setup mode"; parameter Real uLow=-0.1 "Low limit of the hysteresis for checking temperature difference"; parameter Real uHigh=0.1 "High limit of the hysteresis for checking temperature difference"; // ----------- parameters for cooling and heating loop ----------- parameter Buildings.Controls.OBC.CDL.Types.SimpleController cooLooCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Cooling loop controller type"; parameter Real kCoo(unit="1/K")=0.1 "Gain for cooling control loop signal"; parameter Real TiCoo(unit="s")=900 "Time constant of integrator block for cooling control loop signal"; parameter Real TdCoo(unit="s")=0.1 "Time constant of derivative block for cooling control loop signal"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController heaLooCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Heating loop controller type"; parameter Real kHea(unit="1/K")=0.1 "Gain for heating control loop signal"; parameter Real TiHea(unit="s")=900 "Time constant of integrator block for heating control loop signal"; parameter Real TdHea(unit="s")=0.1 "Time constant of derivative block for heating control loop signal"; // ----------- parameters for supply setpoints settings ----------- parameter Real TSup_max( unit="K", displayUnit="degC")=303.15 "Maximum supply air temperature for heating"; parameter Real TSup_min( unit="K", displayUnit="degC")=291.15 "Minimum supply air temperature for cooling"; parameter Real TSupDew_max( unit="K", displayUnit="degC")=290.15 "Maximum supply air dew-point temperature. It's typically only needed in humid type “A” climates. A typical value is 17°C. For mild and dry climates, a high set point (e.g. 24°C) should be entered for maximum efficiency"; parameter Real TSupDea_min( unit="K", displayUnit="degC")=294.15 "Minimum supply temperature when it is in deadband state"; parameter Real TSupDea_max( unit="K", displayUnit="degC")=297.15 "Maximum supply temperature when it is in deadband state"; parameter Real temPoiOne=0.5 "Point 1 on x-axis of control map for temperature control, when it is in heating state"; parameter Real temPoiTwo=0.25 "Point 2 on x-axis of control map for temperature control, when it is in cooling state"; parameter Real temPoiThr=0.5 "Point 3 on x-axis of control map for temperature control, when it is in cooling state"; parameter Real temPoiFou=0.75 "Point 4 on x-axis of control map for temperature control, when it is in cooling state"; parameter Real maxHeaSpe(unit="1")=1 "Maximum fan speed for heating"; parameter Real maxCooSpe(unit="1")=1 "Maximum fan speed for cooling"; parameter Real minSpe(unit="1")=0.1 "Minimum fan speed"; parameter Real spePoiOne=0.5 "Point 1 on x-axis of control map for speed control, when it is in heating state"; parameter Real spePoiTwo=0.25 "Point 2 on x-axis of control map for speed control, when it is in cooling state"; parameter Real spePoiThr=0.5 "Point 3 on x-axis of control map for speed control, when it is in cooling state"; parameter Real spePoiFou=0.75 "Point 4 on x-axis of control map for speed control, when it is in cooling state"; parameter Real looHys=0.05 "Loop output hysteresis below which the output will be seen as zero"; // ----------- parameters for minimum outdoor airflow setpoints ----------- parameter Boolean permit_occStandby=true "True: occupied-standby mode is permitted"; parameter Real zonDisEff_cool=1.0 "Zone cooling air distribution effectiveness"; parameter Real zonDisEff_heat=0.8 "Zone heating air distribution effectiveness"; parameter Real VOccMin_flow=0 "Zone minimum outdoor airflow for occupants"; parameter Real VAreMin_flow=0 "Zone minimum outdoor airflow for building area"; parameter Real VZonMin_flow=0 "Design zone minimum airflow setpoint"; // ----------- parameters for economizer control ----------- parameter Real uMin(unit="1")=0.1 "Lower limit of controller output at which the dampers are at their limits"; parameter Real uMax(unit="1")=0.9 "Upper limit of controller output at which the dampers are at their limits"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController ecoModCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kMod=1 "Gain of modulation controller"; parameter Real TiMod(unit="s")=300 "Time constant of modulation controller integrator block"; parameter Real TdMod(unit="s")=0.1 "Time constant of derivative block for modulation controller"; parameter Real supFanSpe_min(unit="1")=0.1 "Minimum supply fan operation speed"; parameter Real supFanSpe_max(unit="1")=0.9 "Maximum supply fan operation speed"; parameter Real VOutMin_flow(unit="m3/s")=1.0 "Calculated minimum outdoor airflow rate"; parameter Real VOutDes_flow(unit="m3/s")=2.0 "Calculated design outdoor airflow rate"; parameter Real outDamMinFloMinSpe(unit="1")=0.4 "Outdoor air damper position to supply minimum outdoor airflow at minimum fan speed"; parameter Real outDamMinFloMaxSpe(unit="1")=0.3 "Outdoor air damper position to supply minimum outdoor airflow at maximum fan speed"; parameter Real outDamDesFloMinSpe(unit="1")=0.9 "Outdoor air damper position to supply design outdoor airflow at minimum fan speed"; parameter Real outDamDesFloMaxSpe(unit="1")=0.8 "Outdoor air damper position to supply design outdoor airflow at maximum fan speed"; parameter Real outDamPhy_max(unit="1")=1 "Physically fixed maximum position of the outdoor air damper"; parameter Real outDamPhy_min(unit="1")=0 "Physically fixed minimum position of the outdoor air damper"; parameter Real retDamPhy_max(unit="1")=1 "Physically fixed maximum position of the return air damper"; parameter Real retDamPhy_min(unit="1")=0 "Physically fixed minimum position of the return air damper"; parameter Real delTOutHys( unit="K", displayUnit="K")=1 "Delta between the temperature hysteresis high and low limit"; // ----------- parameters for cooling coil control ----------- parameter Buildings.Controls.OBC.CDL.Types.SimpleController cooCoiCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kCooCoi(unit="1/K")=0.1 "Gain for cooling coil control loop signal"; parameter Real TiCooCoi(unit="s")=900 "Time constant of integrator block for cooling coil control loop signal"; parameter Real TdCooCoi(unit="s")=0.1 "Time constant of derivative block for cooling coil control loop signal"; // ----------- parameters for freeze protection ----------- parameter Integer minHotWatReq=2 "Minimum heating hot-water plant request to active the heating plant"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController freHeaCoiCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Heating coil controller"; parameter Real kFreHea=1 "Gain of coil controller"; parameter Real TiFreHea(unit="s")=0.5 "Time constant of integrator block"; parameter Real TdFreHea(unit="s")=0.1 "Time constant of derivative block"; parameter Real yMaxFreHea=1 "Upper limit of output"; parameter Real yMinFreHea=0 "Lower limit of output"; // ----------- parameters for building pressure control ----------- parameter Real relDam_min(unit="1")=0.1 "Relief-damper position that maintains a building pressure of 12 Pa while the economizer damper is positioned to provide minimum outdoor air while the supply fan is at minimum speed"; parameter Real relDam_max(unit="1")=1 "Relief-damper position that maintains a building pressure of 12 Pa while the economizer damper is fully open and the fan speed is at cooling maximum"; parameter Real speDif=-0.1 "Speed difference between supply and return fan to maintain building pressure at desired pressure"; parameter Real dpBuiSet( unit="Pa", displayUnit="Pa")=12 "Building static pressure difference relative to ambient (positive to pressurize the building)"; parameter Real relFanSpe_min( final min=0, final max=1)= 0.1 "Relief fan minimum speed"; parameter Real kRelFan(unit="1")=1 "Gain of relief fan controller, normalized using dpBuiSet"; // ----------- Advanced ----------- parameter Real posHys=0.05 "Hysteresis for damper position check"; parameter Real Thys(unit="K")=0.25 "Hysteresis for checking temperature difference"; parameter Real delEntHys(unit="J/kg")=1000 "Delta between the enthalpy hysteresis high and low limits"; parameter Real floHys=0.01 "Near zero flow rate, below which the flow rate or difference will be seen as zero"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", displayUnit="degC", final quantity = "ThermodynamicTemperature") "Outside air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput cooDowTim( final unit="s", final quantity="Time") "Cool-down time retrieved from optimal cool-down block"; Buildings.Controls.OBC.CDL.Interfaces.RealInput warUpTim( final unit="s", final quantity="Time") "Warm-up time retrieved from optimal warm-up block"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1Occ "Current occupancy period, true if it is in occupant period"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tNexOcc( final unit="s", final quantity="Time") "Time to next occupied period"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZon( final unit="K", displayUnit="degC", final quantity = "ThermodynamicTemperature") "Measured zone temperatures"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOccHeaSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone occupied heating setpoint temperatures"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOccCooSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone occupied cooling setpoint temperatures"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TUnoHeaSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone unoccupied heating setpoint temperatures"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TUnoCooSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone unoccupied cooling setpoint temperatures"; Buildings.Controls.OBC.CDL.Interfaces.RealInput setAdj if have_locAdj and not sepAdj "Setpoint adjustment value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput cooSetAdj if have_locAdj and sepAdj "Cooling setpoint adjustment value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput heaSetAdj if have_locAdj and sepAdj "Heating setpoint adjustment value"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1OccSen if have_occSen "Occupancy sensor (occupied=true, unoccupied=false)"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uCooDemLimLev "Cooling demand limit level"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uHeaDemLimLev "Heating demand limit level"; Buildings.Controls.OBC.CDL.Interfaces.RealInput ppmCO2Set if have_CO2Sen "CO2 concentration setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput ppmCO2 if have_CO2Sen "Detected CO2 concentration"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TAirSup( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1Win if have_winSen "Window status, true if open, false if closed"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hOut( final unit="J/kg", final quantity="SpecificEnergy") if (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb) "Outdoor air enthalpy"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hAirRet( final unit="J/kg", final quantity="SpecificEnergy") if (eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016 and ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb) "Return air enthalpy"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TAirRet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") if ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb "Used only for fixed plus differential dry bulb temperature high limit cutoff"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1FreSta if (freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Connected_to_BAS_NO or freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Connected_to_BAS_NC) "Freeze protection stat signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SofSwiRes if (freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat or freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Hardwired_to_equipment) "Freeze protection reset signal from software switch"; Buildings.Controls.OBC.CDL.Interfaces.RealInput dpBui( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") if have_ahuRelFan and buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Measured building static pressure difference, relative to ambient (positive if pressurized)"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1RelFan if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan and not have_ahuRelFan "Relief fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRelFan( final min=0, final max=1, final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan and not have_ahuRelFan "Relief fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TAirMix( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") if have_hotWatCoi "Measured mixed air temperature, used for freeze protection"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDam( final min=0, final max=1, final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper "Outdoor damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSupFan_actual( final min=0, final max=1, final unit="1") "Actual supply fan speed"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uCooCoi_actual( final min=0, final max=1, final unit="1") "Cooling coil valve actual position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uHeaCoi_actual( final min=0, final max=1, final unit="1") if have_hotWatCoi "Heating coil valve actual position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TSupHeaEcoSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Temperature setpoint for heating coil and for economizer"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TSupCooSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Cooling supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TZonHeaSet( final unit="K", displayUnit="degC", final quantity = "ThermodynamicTemperature") "Zone heating setpoint temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TZonCooSet( final unit="K", displayUnit="degC", final quantity = "ThermodynamicTemperature") "Zone cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1EneCHWPum "Commanded on to energize chilled water pump"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam( final min=0, final max=1, final unit="1") "Return air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam( final min=0, final max=1, final unit="1") "Outdoor air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1SupFan "Supply fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput ySupFan( final min=0, final max=1, final unit="1") "Supply fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1RetFan if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Return fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetFan( final min=0, final max=1, final unit="1") if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Return fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1RelFan if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Relief fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRelFan( final min=0, final max=1, final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Relief fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCooCoi( final min=0, final max=1, final unit="1") "Cooling coil valve commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHeaCoi( final min=0, final max=1, final unit="1") if have_hotWatCoi "Heating coil valve commanded position"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yAla "Alarm level"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRelDam( final min=0, final max=1, final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper or (have_ahuRelFan and buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan) "Relief damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1ExhDam if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Exhaust damper command on"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yChiWatResReq "Chilled water reset request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yChiPlaReq "Chiller plant request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yHotWatResReq if have_hotWatCoi "Hot water reset request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yHotWatPlaReq if have_hotWatCoi "Hot water plant request"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply setPoiVAV( final TSup_max=TSup_max, final TSup_min=TSup_min, final TSupDew_max=TSupDew_max, final TSupDea_min=TSupDea_min, final TSupDea_max=TSupDea_max, final maxHeaSpe=maxHeaSpe, final maxCooSpe=maxCooSpe, final minSpe=minSpe, final looHys=looHys, final temPoiOne=temPoiOne, final temPoiTwo=temPoiTwo, final temPoiThr=temPoiThr, final temPoiFou=temPoiFou, final spePoiOne=spePoiOne, final spePoiTwo=spePoiTwo, final spePoiThr=spePoiThr, final spePoiFou=spePoiFou) "Supply air set point and fan signal for single zone VAV system"; Buildings.Controls.OBC.CDL.Continuous.PIDWithReset cooPI( final controllerType=cooLooCon, final k=kCoo, final Ti=TiCoo, final Td=TdCoo, final reverseActing=false) "Zone cooling control signal"; Buildings.Controls.OBC.CDL.Continuous.PIDWithReset heaPI( final controllerType=heaLooCon, final k=kHea, final Ti=TiHea, final Td=TdHea) "Zone heating control signal"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Economizers.Controller conEco( final eneStd=eneStd, final ecoHigLimCon=ecoHigLimCon, final ashCliZon=ashCliZon, final tit24CliZon=tit24CliZon, final have_heaCoi=have_hotWatCoi or have_eleHeaCoi, final uMin=uMin, final uMax=uMax, final controllerTypeMod=ecoModCon, final kMod=kMod, final TiMod=TiMod, final TdMod=TdMod, final delTOutHys=delTOutHys, final delEntHys=delEntHys, final floHys=floHys, final supFanSpe_min=supFanSpe_min, final supFanSpe_max=supFanSpe_max, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, final outDamMinFloMinSpe=outDamMinFloMinSpe, final outDamMinFloMaxSpe=outDamMinFloMaxSpe, final outDamDesFloMinSpe=outDamDesFloMinSpe, final outDamDesFloMaxSpe=outDamDesFloMaxSpe, final outDamPhy_max=outDamPhy_max, final outDamPhy_min=outDamPhy_min, final retDamPhy_max=retDamPhy_max, final retDamPhy_min=retDamPhy_min) "Economizer control sequence"; Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints outAirSetPoi( final have_winSen=have_winSen, final have_occSen=have_occSen, final have_CO2Sen=have_CO2Sen, final have_SZVAV=true, final permit_occStandby=permit_occStandby, final VAreBreZon_flow=VAreBreZon_flow, final VPopBreZon_flow=VPopBreZon_flow, final VMin_flow=0, final zonDisEff_cool=zonDisEff_cool, final zonDisEff_heat=zonDisEff_heat, final dTHys=Thys) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Output the minimum outdoor airflow rate setpoint, when using ASHRAE 62.1"; Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.ZoneStates zonSta "Zone state"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.unoccupied) "Unoccupied mode"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Check if current operation mode is unoccupied mode"; Buildings.Controls.OBC.CDL.Logical.Not switch "If in unoccupied mode, switch off"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints modSetPoi( final have_winSen=have_winSen, final have_occSen=have_occSen, final have_locAdj=have_locAdj, final sepAdj=sepAdj, final ignDemLim=ignDemLim, final TActCoo_max=TActCoo_max, final TActCoo_min=TActCoo_min, final TActHea_max=TActHea_max, final TActHea_min=TActHea_min, final TWinOpeCooSet=TWinOpeCooSet, final TWinOpeHeaSet=TWinOpeHeaSet, final incTSetDem_1=incTSetDem_1, final incTSetDem_2=incTSetDem_2, final incTSetDem_3=incTSetDem_3, final decTSetDem_1=decTSetDem_1, final decTSetDem_2=decTSetDem_2, final decTSetDem_3=decTSetDem_3, final bouLim=bouLim, final uLow=uLow, final uHigh=uHigh, final preWarCooTim=preWarCooTim, final TZonFreProOn=TZonFreProOn, final TZonFreProOff=TZonFreProOff) "Output zone setpoint with operation mode selection"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.CoolingCoil cooCoi( final controllerTypeCooCoi=cooCoiCon, final kCooCoi=kCooCoi, final TiCooCoi=TiCooCoi, final TdCooCoi=TdCooCoi) "Controller for cooling coil valve"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection frePro( final buiPreCon=buiPreCon, final freSta=freSta, final have_hotWatCoi=have_hotWatCoi, final minHotWatReq=minHotWatReq, final heaCoiCon=freHeaCoiCon, final k=kFreHea, final Ti=TiFreHea, final Td=TdFreHea, final yMax=yMaxFreHea, final yMin=yMinFreHea, final Thys=Thys) "Freeze protection"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests plaReq( final have_hotWatCoi=have_hotWatCoi, final Thys=Thys, final posHys=posHys) "Plant request"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefDamper relDam( final relDam_min=relDam_min, final relDam_max=relDam_max, final posHys=posHys) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper "Relief damper control"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReturnFan retFan( final speDif=speDif) if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Return fan control"; Buildings.Controls.OBC.CDL.Integers.Switch intSwi if have_hotWatCoi "Hot water plant request"; Buildings.Controls.OBC.CDL.Integers.GreaterThreshold freProMod if have_hotWatCoi "Check if it is in freeze protection mode"; Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints minFlo( final have_winSen=have_winSen, final have_occSen=have_occSen, final have_CO2Sen=have_CO2Sen, final have_SZVAV=true, final VOccMin_flow=VOccMin_flow, final VAreMin_flow=VAreMin_flow, final VMin_flow=VZonMin_flow) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24_2016 "Output the minimum outdoor airflow rate setpoint, when using Title 24"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noEneStd( final k=eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.Not_Specified) "No energy standard"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Logical not"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes( final message="Warning: Energy standard is not specified!") "Warning when the energy standard is not specified"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noVenStd( final k=venStd ==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.Not_Specified) "No ventilation standard"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( final message="Warning: Ventilation standard is not specified!") "Warning when the ventilation standard is not specified"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noAshCli( final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Not_Specified) "No ASHRAE climate zone"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noTit24Cli( final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Not_Specified) "No Title 24 climate zone"; Buildings.Controls.OBC.CDL.Logical.And noCli "Climate zone is not specified"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( final message="Warning: Climate zone is not specified!") "Warning when the climate zone is not specified"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zerFlo(final k=0) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.Not_Specified "Zero flow when the ventilation standard is not specified"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan relFanCon( final relFanSpe_min=relFanSpe_min, final dpBuiSet=dpBuiSet, final k=kRelFan) if have_ahuRelFan and buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Control of relief fan when it is part of AHU"; equation connect(modSetPoi.tNexOcc, tNexOcc); connect(conEco.TAirSup, TAirSup); connect(setPoiVAV.TSupHeaEcoSet, conEco.TSupHeaEcoSet); connect(setPoiVAV.TSupHeaEcoSet, TSupHeaEcoSet); connect(setPoiVAV.TSupCooSet, TSupCooSet); connect(outAirSetPoi.TDis, TAirSup); connect(TOut, setPoiVAV.TOut); connect(conEco.TOut, setPoiVAV.TOut); connect(zonSta.yZonSta, conEco.uZonSta); connect(conInt.y, intEqu.u2); connect(intEqu.y, switch.u); connect(modSetPoi.THeaSet, heaPI.u_s); connect(modSetPoi.TCooSet, cooPI.u_s); connect(outAirSetPoi.u1Win, u1Win); connect(modSetPoi.u1Occ, u1Occ); connect(TZon, modSetPoi.TZon); connect(TZon, cooPI.u_m); connect(conEco.hOut, hOut); connect(conEco.TAirRet, TAirRet); connect(switch.y, cooCoi.u1SupFan); connect(zonSta.yZonSta, cooCoi.uZonSta); connect(cooCoi.TAirSup, TAirSup); connect(switch.y, conEco.u1SupFan); connect(heaPI.y, setPoiVAV.uHea); connect(heaPI.y, zonSta.uHea); connect(cooPI.y, setPoiVAV.uCoo); connect(cooPI.y, zonSta.uCoo); connect(switch.y, heaPI.trigger); connect(switch.y, cooPI.trigger); connect(modSetPoi.TCooSet, TZonCooSet); connect(TZon, heaPI.u_m); connect(intEqu.u1, modSetPoi.yOpeMod); connect(setPoiVAV.TSupCooSet, cooCoi.TSupCooSet); connect(TZon, setPoiVAV.TZon); connect(TZon, outAirSetPoi.TZon); connect(warUpTim, modSetPoi.warUpTim); connect(u1Win, modSetPoi.u1Win); connect(u1OccSen, modSetPoi.u1OccSen); connect(modSetPoi.TCooSet, setPoiVAV.TCooSet); connect(modSetPoi.THeaSet, setPoiVAV.THeaSet); connect(heaSetAdj, modSetPoi.heaSetAdj); connect(setAdj, modSetPoi.setAdj); connect(u1OccSen, outAirSetPoi.u1Occ); connect(outAirSetPoi.ppmCO2, ppmCO2); connect(outAirSetPoi.VMinOA_flow, conEco.VOutMinSet_flow); connect(conEco.yOutDam_min, frePro.uOutDamPosMin); connect(conEco.yOutDam, frePro.uOutDam); connect(conEco.yHeaCoi, frePro.uHeaCoi); connect(conEco.yRetDam, frePro.uRetDam); connect(TAirSup, frePro.TAirSup); connect(frePro.u1SofSwiRes, u1SofSwiRes); connect(frePro.u1FreSta, u1FreSta); connect(setPoiVAV.y, frePro.uSupFan); connect(uRelFan, frePro.uRelFan); connect(cooCoi.yCooCoi, frePro.uCooCoi); connect(TAirMix, frePro.TAirMix); connect(frePro.y1EneCHWPum, y1EneCHWPum); connect(frePro.yRetDam, yRetDam); connect(frePro.yOutDam, yOutDam); connect(frePro.ySupFan, ySupFan); connect(switch.y, relDam.u1SupFan); connect(switch.y, retFan.u1SupFan); connect(relDam.yRelDam, yRelDam); connect(retFan.y1ExhDam, y1ExhDam); connect(retFan.uSupFan_actual, uSupFan_actual); connect(frePro.yRetFan, yRetFan); connect(frePro.yRelFan, yRelFan); connect(frePro.yCooCoi, yCooCoi); connect(frePro.yHeaCoi, yHeaCoi); connect(retFan.yRetFan, frePro.uRetFan); connect(frePro.yFreProSta, conEco.uFreProSta); connect(TAirSup, plaReq.TAirSup); connect(setPoiVAV.TSupCooSet, plaReq.TSupCoo); connect(plaReq.uCooCoi_actual, uCooCoi_actual); connect(setPoiVAV.TSupHeaEcoSet, plaReq.TSupHeaEco); connect(plaReq.uHeaCoi_actual, uHeaCoi_actual); connect(plaReq.yChiWatResReq, yChiWatResReq); connect(plaReq.yChiPlaReq, yChiPlaReq); connect(plaReq.yHotWatResReq, yHotWatResReq); connect(freProMod.y, intSwi.u2); connect(plaReq.yHotWatPlaReq, intSwi.u3); connect(frePro.yFreProSta, freProMod.u); connect(frePro.yHotWatPlaReq, intSwi.u1); connect(frePro.yAla, yAla); connect(intSwi.y, yHotWatPlaReq); connect(uOutDam, relDam.uOutDam); connect(conEco.yOutDam_min, relDam.uOutDam_min); connect(cooSetAdj, modSetPoi.cooSetAdj); connect(ppmCO2Set, outAirSetPoi.ppmCO2Set); connect(hAirRet, conEco.hAirRet); connect(u1Win, minFlo.u1Win); connect(u1OccSen, minFlo.u1Occ); connect(ppmCO2Set, minFlo.ppmCO2Set); connect(ppmCO2, minFlo.ppmCO2); connect(cooDowTim, modSetPoi.cooDowTim); connect(uCooDemLimLev, modSetPoi.uCooDemLimLev); connect(uHeaDemLimLev, modSetPoi.uHeaDemLimLev); connect(modSetPoi.yOpeMod, setPoiVAV.uOpeMod); connect(modSetPoi.yOpeMod, outAirSetPoi.uOpeMod); connect(modSetPoi.yOpeMod, minFlo.uOpeMod); connect(modSetPoi.yOpeMod, conEco.uOpeMod); connect(modSetPoi.THeaSet, TZonHeaSet); connect(TOccHeaSet,modSetPoi.TOccHeaSet); connect(TOccCooSet,modSetPoi.TOccCooSet); connect(TUnoHeaSet,modSetPoi.TUnoHeaSet); connect(TUnoCooSet,modSetPoi.TUnoCooSet); connect(minFlo.VMinOA_flow, conEco.VOutMinSet_flow); connect(uSupFan_actual, conEco.uSupFan_actual); connect(switch.y, frePro.u1SupFan); connect(retFan.y1RetFan, frePro.u1RetFan); connect(u1RelFan, frePro.u1RelFan); connect(frePro.y1RetFan, y1RetFan); connect(frePro.y1RelFan, y1RelFan); connect(frePro.y1SupFan, y1SupFan); connect(noEneStd.y,not3. u); connect(not3.y,assMes. u); connect(noVenStd.y,not1. u); connect(not1.y,assMes1. u); connect(noAshCli.y,noCli. u1); connect(noTit24Cli.y,noCli. u2); connect(noCli.y,not2. u); connect(not2.y,assMes2. u); connect(zerFlo.y, conEco.VOutMinSet_flow); connect(relFanCon.y1RelFan, frePro.u1RelFan); connect(relFanCon.yRelFan, frePro.uRelFan); connect(switch.y, relFanCon.u1SupFan); connect(dpBui, relFanCon.dpBui); connect(relFanCon.yDam, yRelDam); end Controller;