Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences

Subsequences for economizer control

Information

This package contains subsequences for multi zone VAV AHU economizer control.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable Enable Multi zone VAV AHU economizer enable/disable switch
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits Limits Package of sequences to calculate the damper position limits of the economizer
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Modulations Modulations Package of sequences to modulate economizer dampers
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable

Multi zone VAV AHU economizer enable/disable switch

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable

Information

This is a multi zone VAV AHU economizer enable/disable sequence based on the Section 5.16.7 of the ASHRAE Guideline 36, May 2020. Additional conditions included in the sequence are: freeze protection (freeze protection stage 0-3, see Section 5.16.12), supply fan status (on or off, see Section 5.16.5).

The economizer is disabled whenever the outdoor air conditions exceed the economizer high limit setpoint. This sequence allows for all device types listed in ASHRAE 90.1-2013 and Title 24-2013.

In addition, the economizer gets disabled without a delay whenever any of the following is true:

The following state machine chart illustrates the transitions between enabling and disabling:

Image of economizer enable-disable state machine chart

After the disable signal is activated, the following procedure is applied, in order to prevent pressure fluctuations in the HVAC system:

Parameters

TypeNameDefaultDescription
Conditional
Booleanuse_enthalpytrueSet to true to evaluate outdoor air (OA) enthalpy in addition to temperature
Advanced
Hysteresis
RealdelTOutHis1Delta between the temperature hysteresis high and low limit [K]
RealdelEntHis1000Delta between the enthalpy hysteresis high and low limits [J/kg]
Delays at disable
RealretDamFulOpeTim180Time period to keep RA damper fully open before releasing it for minimum outdoor airflow control at disable to avoid pressure fluctuations [s]
RealdisDel15Short time delay before closing the OA damper at disable to avoid pressure fluctuations [s]

Connectors

TypeNameDescription
input RealInputTOutOutdoor air temperature [K]
input RealInputhOutOutdoor air enthalpy [J/kg]
input RealInputTOutCutOA temperature high limit cutoff. For differential dry bulb temperature condition use return air temperature measurement [K]
input RealInputhOutCutOA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement [J/kg]
input RealInputuOutDam_minMinimum outdoor air damper position, output from damper position limits sequence [1]
input RealInputuOutDam_maxMaximum outdoor air damper position, output from damper position limits sequence [1]
input RealInputuRetDam_maxMaximum return air damper position, output from damper position limits sequence [1]
input RealInputuRetDam_minMinimum return air damper position, output from damper position limits sequence [1]
input RealInputuRetDamPhy_maxPhysical maximum return air damper position, output from damper position limits sequence [1]
input BooleanInputu1SupFanSupply fan proven on
input IntegerInputuFreProStaFreeze protection stage status signal
output RealOutputyOutDam_maxMaximum outdoor air damper position [1]
output RealOutputyRetDam_minMinimum return air damper position [1]
output RealOutputyRetDam_maxMaximum return air damper position [1]

Modelica definition

block Enable "Multi zone VAV AHU economizer enable/disable switch" parameter Boolean use_enthalpy = true "Set to true to evaluate outdoor air (OA) enthalpy in addition to temperature"; parameter Real delTOutHis( final unit="K", final displayUnit="K", final quantity="TemperatureDifference")=1 "Delta between the temperature hysteresis high and low limit"; parameter Real delEntHis( final unit="J/kg", final quantity="SpecificEnergy")=1000 "Delta between the enthalpy hysteresis high and low limits"; parameter Real retDamFulOpeTim( final unit="s", final quantity="Time")=180 "Time period to keep RA damper fully open before releasing it for minimum outdoor airflow control at disable to avoid pressure fluctuations"; parameter Real disDel( final unit="s", final quantity="Time")=15 "Short time delay before closing the OA damper at disable to avoid pressure fluctuations"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", final displayUnit="degC", final quantity = "ThermodynamicTemperature") "Outdoor air temperature"; 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 TOutCut( final unit="K", final displayUnit="degC", final quantity = "ThermodynamicTemperature") "OA temperature high limit cutoff. For differential dry bulb temperature condition use return air temperature measurement"; 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 uOutDam_min( final unit="1", final min=0, final max=1) "Minimum outdoor air damper position, output from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDam_max( final unit="1", final min=0, final max=1) "Maximum outdoor air damper position, output from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRetDam_max( final unit="1", final min=0, final max=1) "Maximum return air damper position, output from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRetDam_min( final unit="1", final min=0, final max=1) "Minimum return air damper position, output from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRetDamPhy_max( final unit="1", final min=0, final max=1) "Physical maximum return air damper position, output from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SupFan "Supply fan proven on"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uFreProSta "Freeze protection stage status signal"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_max( final unit="1", final min=0, final max=1) "Maximum outdoor air damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_min( final unit="1", final min=0, final max=1) "Minimum return air damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_max( final unit="1", final min=0, final max=1) "Maximum return air damper position"; Buildings.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol( final trueHoldDuration=600) "Economizer should not be enabled or disabled within 10 minutes of change"; Buildings.Controls.OBC.CDL.Logical.And andEnaDis "Check freeze protection stage and zone state"; protected final parameter Real TOutHigLimCutHig( final unit="K", final displayUnit="K", final quantity="TemperatureDifference")= 0 "Hysteresis high limit cutoff"; final parameter Real TOutHigLimCutLow = TOutHigLimCutHig - delTOutHis "Hysteresis low limit cutoff"; final parameter Real hOutHigLimCutHig( final unit="J/kg", final quantity="SpecificEnergy")= 0 "Hysteresis block high limit cutoff"; final parameter Real hOutHigLimCutLow = hOutHigLimCutHig - delEntHis "Hysteresis block low limit cutoff"; Buildings.Controls.OBC.CDL.Reals.Subtract sub2 if use_enthalpy "Add block determines difference between hOut and hOutCut"; Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Add block determines difference between TOut and TOutCut"; Buildings.Controls.OBC.CDL.Reals.Hysteresis hysOutTem( final uLow=TOutHigLimCutLow, final uHigh=TOutHigLimCutHig) "Outdoor air temperature hysteresis for both fixed and differential dry bulb temperature cutoff conditions"; Buildings.Controls.OBC.CDL.Reals.Hysteresis hysOutEnt( final uLow=hOutHigLimCutLow, final uHigh=hOutHigLimCutHig) if use_enthalpy "Outdoor air enthalpy hysteresis for both fixed and differential enthalpy cutoff conditions"; Buildings.Controls.OBC.CDL.Reals.Switch outDamSwitch "Set maximum OA damper position to minimum at disable (after a given time delay)"; Buildings.Controls.OBC.CDL.Reals.Switch retDamSwitch "Set minimum RA damper position to maximum at disable"; Buildings.Controls.OBC.CDL.Reals.Switch maxRetDamSwitch "Keep maximum RA damper position at physical maximum for a short time period after disable signal"; Buildings.Controls.OBC.CDL.Reals.Switch minRetDamSwitch "Keep minimum RA damper position at physical maximum for a short time period after disable"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not that starts the timer at disable signal "; Buildings.Controls.OBC.CDL.Logical.And and2 "Logical and"; Buildings.Controls.OBC.CDL.Logical.And and1 "Check supply fan status"; Buildings.Controls.OBC.CDL.Logical.And and3 "Check if delay time has been passed after economizer being disabled"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Logical block to check if the freeze protection is deactivated"; Buildings.Controls.OBC.CDL.Logical.TrueDelay delOutDamOsc( final delayTime=disDel) "Small delay before closing the outdoor air damper to avoid pressure fluctuations"; Buildings.Controls.OBC.CDL.Logical.TrueDelay delRetDam( final delayTime=retDamFulOpeTim) "Keep return damper open to its physical maximum for a short period of time before closing the outdoor air damper and resuming the maximum return air damper position, per G36 Part N7"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage0) "Integer constant, stage 0"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant entSubst1( final k=false) if not use_enthalpy "Deactivates outdoor air enthalpy condition if there is no enthalpy sensor"; Buildings.Controls.OBC.CDL.Logical.Or or2 "Check if either the temperature or the enthalpy condition is satisfied"; equation connect(TOut, sub1.u1); connect(TOutCut, sub1.u2); connect(sub1.y, hysOutTem.u); connect(hOut, sub2.u1); connect(hOutCut, sub2.u2); connect(sub2.y, hysOutEnt.u); connect(uOutDam_min, outDamSwitch.u1); connect(uOutDam_max, outDamSwitch.u3); connect(uRetDamPhy_max, maxRetDamSwitch.u1); connect(uRetDam_max, maxRetDamSwitch.u3); connect(andEnaDis.y, not2.u); connect(maxRetDamSwitch.y, yRetDam_max); connect(and2.y, maxRetDamSwitch.u2); connect(and2.y, minRetDamSwitch.u2); connect(not2.y, retDamSwitch.u2); connect(uRetDam_max, retDamSwitch.u1); connect(uRetDam_min, retDamSwitch.u3); connect(retDamSwitch.y, minRetDamSwitch.u3); connect(uRetDamPhy_max, minRetDamSwitch.u1); connect(truFalHol.y, and1.u1); connect(and1.y, andEnaDis.u1); connect(u1SupFan, and1.u2); connect(outDamSwitch.u2, and3.y); connect(not2.y, and3.u1); connect(and2.u1, not2.y); connect(and3.u2, delOutDamOsc.y); connect(delOutDamOsc.u, not2.y); connect(not2.y, delRetDam.u); connect(delRetDam.y, not1.u); connect(not1.y, and2.u2); connect(uFreProSta, intEqu.u1); connect(conInt.y, intEqu.u2); connect(intEqu.y, andEnaDis.u2); connect(outDamSwitch.y, yOutDam_max); connect(minRetDamSwitch.y, yRetDam_min); connect(or2.y, truFalHol.u); connect(hysOutTem.y, or2.u1); connect(hysOutEnt.y, or2.u2); connect(entSubst1.y, or2.u2); end Enable;