Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers

Economizer control of single zone VAV AHU

Information

The package contains a single zone VAV AHU economizer control sequence and the related economizer subsequences.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller Controller Single zone VAV AHU economizer control sequence
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences Subsequences Subsequences for economizer control
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller

Single zone VAV AHU economizer control sequence

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller

Information

Single zone VAV AHU economizer control sequence that calculates outdoor and return air damper positions based on ASHRAE Guidline 36, PART5 sections: P.4.d, P.5, P.9, P.3.b, A.17.

The sequence consists of three subsequences.

Parameters

TypeNameDefaultDescription
Booleanuse_enthalpyfalseSet to true if enthalpy measurement is used in addition to temperature measurement
Booleanuse_TMixtrueSet to true if mixed air temperature measurement is enabled
Booleanuse_G36FreProfalseSet to true if G36 freeze protection is implemented
RealuMin0Lower limit of controller output uTSup at which the dampers are at their limits [1]
RealuMax1Upper limit of controller output uTSup at which the dampers are at their limits [1]
Modulation
SimpleControllercontrollerTypeModBuildings.Controls.OBC.CDL.T...Type of controller
RealkMod1Gain of modulation controller [1/K]
TimeTiMod300Time constant of modulation controller integrator block [s]
TimeTdMod0.1Time constant of derivative block for modulation controller [s]
Freeze protection
SimpleControllercontrollerTypeFreBuildings.Controls.OBC.CDL.T...Type of controller
RealkFre0.1Gain for mixed air temperature tracking for freeze protection, used if use_TMix=true [1/K]
TimeTiFre120Time constant of controller for mixed air temperature tracking for freeze protection. Require TiFre < TiMinOut [s]
TimeTdFre0.1Time constant of derivative block for freeze protection [s]
TemperatureTFreSet277.15Lower limit for mixed air temperature for freeze protection, used if use_TMix=true [K]
Advanced
Hysteresis
TemperatureDifferencedelTOutHis1Delta between the temperature hysteresis high and low limit [K]
SpecificEnergydelEntHis1000Delta between the enthalpy hysteresis high and low limits [J/kg]
Commissioning
Damper position limits
RealyFanMin0.1Minimum supply fan operation speed [1]
RealyFanMax0.9Maximum supply fan operation speed [1]
VolumeFlowRateVOutMin_flow1.0Calculated minimum outdoor airflow rate [m3/s]
VolumeFlowRateVOutDes_flow2.0Calculated design outdoor airflow rate [m3/s]
RealyDam_VOutMin_minSpe0.4OA damper position to supply minimum outdoor airflow at minimum fan speed [1]
RealyDam_VOutMin_maxSpe0.3OA damper position to supply minimum outdoor airflow at maximum fan speed [1]
RealyDam_VOutDes_minSpe0.9OA damper position to supply design outdoor airflow at minimum fan speed [1]
RealyDam_VOutDes_maxSpe0.8OA damper position to supply design outdoor airflow at maximum fan speed [1]
Physical damper position limits
RealoutDamPhyPosMax1Physically fixed maximum position of the outdoor air (OA) damper [1]
RealoutDamPhyPosMin0Physically fixed minimum position of the outdoor air damper [1]
RealretDamPhyPosMax1Physically fixed maximum position of the return air damper [1]
RealretDamPhyPosMin0Physically fixed minimum position of the return air damper [1]

Connectors

TypeNameDescription
input RealInputTHeaSupSetSupply air temperature heating setpoint [K]
input RealInputTSupMeasured supply air temperature [K]
input RealInputTOutOutdoor air (OA) temperature [K]
input RealInputTOutCutOA temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement [K]
input RealInputhOutOutdoor air enthalpy [J/kg]
input RealInputhOutCutOA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement [J/kg]
input RealInputTMixMeasured mixed air temperature, used for freeze protection [K]
input RealInputVOutMinSet_flowMinimum outdoor airflow setpoint [m3/s]
input RealInputuSupFanSpeSupply fan speed [1]
input IntegerInputuZonStaZone state signal
input IntegerInputuFreProStaFreeze protection status
input IntegerInputuOpeModAHU operation mode status signal
input BooleanInputuSupFanSupply fan status
output RealOutputyRetDamPosReturn air damper position [1]
output RealOutputyOutDamPosOutdoor air damper position [1]

Modelica definition

model Controller "Single zone VAV AHU economizer control sequence" parameter Boolean use_enthalpy = false "Set to true if enthalpy measurement is used in addition to temperature measurement"; parameter Boolean use_TMix=true "Set to true if mixed air temperature measurement is enabled"; parameter Boolean use_G36FrePro=false "Set to true if G36 freeze protection is implemented"; parameter Modelica.SIunits.TemperatureDifference delTOutHis=1 "Delta between the temperature hysteresis high and low limit"; parameter Modelica.SIunits.SpecificEnergy delEntHis=1000 "Delta between the enthalpy hysteresis high and low limits"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeMod= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kMod(final unit="1/K")=1 "Gain of modulation controller"; parameter Modelica.SIunits.Time TiMod=300 "Time constant of modulation controller integrator block"; parameter Modelica.SIunits.Time TdMod=0.1 "Time constant of derivative block for modulation controller"; parameter Real uMin( final min=0, final max=1, final unit="1") = 0 "Lower limit of controller output uTSup at which the dampers are at their limits"; parameter Real uMax( final min=0, final max=1, final unit="1") = 1 "Upper limit of controller output uTSup at which the dampers are at their limits"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFre= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kFre(final unit="1/K") = 0.1 "Gain for mixed air temperature tracking for freeze protection, used if use_TMix=true"; parameter Modelica.SIunits.Time TiFre=120 "Time constant of controller for mixed air temperature tracking for freeze protection. Require TiFre < TiMinOut"; parameter Modelica.SIunits.Time TdFre=0.1 "Time constant of derivative block for freeze protection"; parameter Modelica.SIunits.Temperature TFreSet = 277.15 "Lower limit for mixed air temperature for freeze protection, used if use_TMix=true"; parameter Real yFanMin( final min=0, final max=1, final unit="1") = 0.1 "Minimum supply fan operation speed"; parameter Real yFanMax( final min=0, final max=1, final unit="1") = 0.9 "Maximum supply fan operation speed"; parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=1.0 "Calculated minimum outdoor airflow rate"; parameter Modelica.SIunits.VolumeFlowRate VOutDes_flow=2.0 "Calculated design outdoor airflow rate"; parameter Real yDam_VOutMin_minSpe( final min=outDamPhyPosMin, final max=outDamPhyPosMax, final unit="1") = 0.4 "OA damper position to supply minimum outdoor airflow at minimum fan speed"; parameter Real yDam_VOutMin_maxSpe( final min=outDamPhyPosMin, final max=outDamPhyPosMax, final unit="1") = 0.3 "OA damper position to supply minimum outdoor airflow at maximum fan speed"; parameter Real yDam_VOutDes_minSpe( final min=yDam_VOutMin_minSpe, final max=outDamPhyPosMax, final unit="1") = 0.9 "OA damper position to supply design outdoor airflow at minimum fan speed"; parameter Real yDam_VOutDes_maxSpe( final min=yDam_VOutMin_maxSpe, final max=outDamPhyPosMax, final unit="1") = 0.8 "OA damper position to supply design outdoor airflow at maximum fan speed"; parameter Real outDamPhyPosMax( final min=0, final max=1, final unit="1") = 1 "Physically fixed maximum position of the outdoor air (OA) damper"; parameter Real outDamPhyPosMin( final min=0, final max=1, final unit="1") = 0 "Physically fixed minimum position of the outdoor air damper"; parameter Real retDamPhyPosMax( final min=0, final max=1, final unit="1") = 1 "Physically fixed maximum position of the return air damper"; parameter Real retDamPhyPosMin( final min=0, final max=1, final unit="1") = 0 "Physically fixed minimum position of the return air damper"; Buildings.Controls.OBC.CDL.Interfaces.RealInput THeaSupSet( final unit="K", final quantity = "ThermodynamicTemperature") "Supply air temperature heating setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup( final unit="K", final quantity = "ThermodynamicTemperature") "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", final quantity = "ThermodynamicTemperature") "Outdoor air (OA) temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOutCut( final unit="K", final quantity = "ThermodynamicTemperature") "OA temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hOut( final unit="J/kg", final quantity="SpecificEnergy") if use_enthalpy "Outdoor air enthalpy"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hOutCut( final unit="J/kg", final quantity="SpecificEnergy") if use_enthalpy "OA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TMix( final unit="K", final quantity = "ThermodynamicTemperature") if use_TMix "Measured mixed air temperature, used for freeze protection"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOutMinSet_flow( final min=VOutMin_flow, final max=VOutDes_flow, final unit="m3/s", final quantity="VolumeFlowRate") "Minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSupFanSpe( final min=yFanMin, final max=yFanMax, final unit="1") "Supply fan speed"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uZonSta "Zone state signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uFreProSta if use_G36FrePro "Freeze protection status"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSupFan "Supply fan status"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPos( final min=0, final max=1, final unit="1") "Return air damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDamPos( final min=0, final max=1, final unit="1") "Outdoor air damper position"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Enable enaDis( final retDamPhyPosMax=retDamPhyPosMax, final use_enthalpy=use_enthalpy, final delTOutHis=delTOutHis, final delEntHis=delEntHis, final retDamPhyPosMin=retDamPhyPosMin) "Single zone VAV AHU economizer enable/disable sequence"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Limits damLim( final yFanMin=yFanMin, final yFanMax=yFanMax, final outDamPhyPosMax=outDamPhyPosMax, final outDamPhyPosMin=outDamPhyPosMin, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, final yDam_VOutMin_minSpe=yDam_VOutMin_minSpe, final yDam_VOutMin_maxSpe=yDam_VOutMin_maxSpe, final yDam_VOutDes_minSpe=yDam_VOutDes_minSpe, final yDam_VOutDes_maxSpe=yDam_VOutDes_maxSpe) "Single zone VAV AHU economizer minimum outdoor air requirement damper limit sequence"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Modulation mod( final controllerType=controllerTypeMod, final k=kMod, final Ti=TiMod, final Td=TdMod, final uMin=uMin, final uMax=uMax) "Single zone VAV AHU economizer damper modulation sequence"; Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.FreezeProtectionMixedAir freProTMix( final controllerType=controllerTypeFre, final k=kFre, final Ti=TiFre, final Td=TdFre, final TFreSet=TFreSet) if use_TMix "Block that tracks TMix against a freeze protection setpoint"; protected Buildings.Controls.OBC.CDL.Continuous.Max retDamMinFre "Minimum position for return air damper due to freeze protection"; Buildings.Controls.OBC.CDL.Continuous.Min outDamMaxFre "Maximum control signal for outdoor air damper due to freeze protection"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant noTMix1(k=1) if not use_TMix "Ignore min evaluation if there is no TMix sensor"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant noTMix(k=0) if not use_TMix "Ignore max evaluation if there is no TMix sensor"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage0) if not use_G36FrePro "Freeze protection status is 0. Used if G36 freeze protection is not implemented"; equation connect(uSupFan, enaDis.uSupFan); connect(uFreProSta, enaDis.uFreProSta); connect(hOutCut, enaDis.hOutCut); connect(hOut, enaDis.hOut); connect(TOutCut, enaDis.TOutCut); connect(TOut, enaDis.TOut); connect(uSupFan, damLim.uSupFan); connect(uOpeMod, damLim.uOpeMod); connect(uFreProSta, damLim.uFreProSta); connect(damLim.yOutDamPosMax, enaDis.uOutDamPosMax); connect(damLim.yOutDamPosMin, enaDis.uOutDamPosMin); connect(enaDis.yOutDamPosMax, mod.uOutDamPosMax); connect(enaDis.yRetDamPosMax, mod.uRetDamPosMax); connect(damLim.yOutDamPosMin, mod.uOutDamPosMin); connect(THeaSupSet, mod.THeaSupSet); connect(TSup, mod.TSup); connect(enaDis.yRetDamPosMin, mod.uRetDamPosMin); connect(uZonSta, enaDis.uZonSta); connect(uSupFanSpe, damLim.uSupFanSpe); connect(VOutMinSet_flow, damLim.VOutMinSet_flow); connect(outDamMaxFre.u2, noTMix1.y); connect(retDamMinFre.u1, noTMix.y); connect(retDamMinFre.y, yRetDamPos); connect(outDamMaxFre.y, yOutDamPos); connect(mod.yRetDamPos, retDamMinFre.u2); connect(mod.yOutDamPos, outDamMaxFre.u1); connect(freProTMix.yFrePro, retDamMinFre.u1); connect(freProTMix.yFreProInv, outDamMaxFre.u2); connect(TMix, freProTMix.TMix); connect(freProSta.y, enaDis.uFreProSta); connect(freProSta.y, damLim.uFreProSta); connect(uSupFan, mod.uSupFan); end Controller;