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

Package of sequences to calculate the damper position limits of the economizer

Information

The package contains the calculation of economizer dampers position limits.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.Common Common Outdoor air and return air damper position limits for units with common damper
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithAFMS SeparateWithAFMS Outdoor air and return air damper position limits for units with separated minimum outdoor air damper and airflow measurement
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP SeparateWithDP Outdoor air and return air damper position limits for units with separated minimum outdoor air damper and differential pressure control
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.Validation Validation Collection of validation models

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

Outdoor air and return air damper position limits for units with common damper

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

Information

This block models the multi zone VAV AHU minimum outdoor air control with a single common damper for minimum outdoor air and economizer functions based on outdoor airflow measurement, designed in line with the Section 5.16.6 of the ASHRAE Guideline 36, May 2020.

The controller is enabled when the supply fan is proven on (u1SupFan=true) and the AHU operation mode Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes equals occupied. Otherwise the damper position limits are set to their corresponding maximum and minimum physical or at commissioning fixed limits. The state machine chart below illustrates listed conditions:

Image of damper position limits state machine chart

The controller sets the outdoor and return damper position limits so that the outdoor airflow rate VOut_flow stays equal or above the minimum outdoor air setpoint VOutMinSet_flow. The fraction of the controller output signal between yMin and uRetDam_min is linearly mapped to the outdoor air damper minimal position yOutDam_min while the fraction of the controller output between uRetDam_min and yMax is linearly mapped to the return air damper maximum position yRetDam_max. Thus the dampers are not interlocked.

The following control charts show the input/output structure and an expected damper position limits for a well configured controller.

Image of damper position limits control diagram

The expected damper position limits vs. the control loop signal are as follows:

Image of damper position limits control chart

Parameters

TypeNameDefaultDescription
Controller
SimpleControllercontrollerTypeBuildings.Controls.OBC.CDL.T...Type of controller
Realk0.05Gain of damper limit controller [1]
RealTi120Time constant of damper limit controller integrator block [s]
RealTd0.1Time constant of damper limit controller derivative block [s]
Commissioning
Controller
RealuRetDam_min0.5Loop signal value to start decreasing the maximum return air damper position [1]
Physical damper position limits
RealretDamPhy_max1.0Physically fixed maximum position of the return air damper [1]
RealretDamPhy_min0.0Physically fixed minimum position of the return air damper [1]
RealoutDamPhy_max1.0Physically fixed maximum position of the outdoor air damper [1]
RealoutDamPhy_min0.0Physically fixed minimum position of the outdoor air damper [1]

Connectors

TypeNameDescription
input RealInputVOut_flow_normalizedMeasured outdoor volumetric airflow rate, normalized by design minimum outdoor airflow rate [1]
input RealInputVOutMinSet_flow_normalizedEffective minimum outdoor airflow setpoint, normalized by design minimum outdoor airflow rate [1]
input IntegerInputuOpeModAHU operation mode status signal
input BooleanInputu1SupFanSupply fan proven on
output RealOutputyOutDam_minMinimum outdoor air damper position limit [1]
output RealOutputyOutDam_maxMaximum outdoor air damper position limit [1]
output RealOutputyRetDam_minMinimum return air damper position limit [1]
output RealOutputyRetDam_maxMaximum return air damper position limit [1]
output RealOutputyRetDamPhy_maxPhysical maximum return air damper position limit. Required as an input for the economizer enable disable sequence [1]
output BooleanOutputyEnaMinOutTrue: enable minimum outdoor air control loop

Modelica definition

block Common "Outdoor air and return air damper position limits for units with common damper" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real k( final unit="1")=0.05 "Gain of damper limit controller"; parameter Real Ti( final unit="s", final quantity="Time")=120 "Time constant of damper limit controller integrator block"; parameter Real Td( final unit="s", final quantity="Time")=0.1 "Time constant of damper limit controller derivative block"; parameter Real uRetDam_min( final min=yMin, final max=yMax, final unit="1") = 0.5 "Loop signal value to start decreasing the maximum return air damper position"; parameter Real retDamPhy_max( final min=0, final max=1, final unit="1") = 1.0 "Physically fixed maximum position of the return air damper"; parameter Real retDamPhy_min( final min=0, final max=1, final unit="1") = 0.0 "Physically fixed minimum position of the return air damper"; parameter Real outDamPhy_max( final min=0, final max=1, final unit="1") = 1.0 "Physically fixed maximum position of the outdoor air damper"; parameter Real outDamPhy_min( final min=0, final max=1, final unit="1") = 0.0 "Physically fixed minimum position of the outdoor air damper"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOut_flow_normalized( final unit="1") "Measured outdoor volumetric airflow rate, normalized by design minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOutMinSet_flow_normalized( final unit="1") "Effective minimum outdoor airflow setpoint, normalized by design minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SupFan "Supply fan proven on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_min( final min=outDamPhy_min, final max=outDamPhy_max, final unit="1") "Minimum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_max( final min=outDamPhy_min, final max=outDamPhy_max, final unit="1") "Maximum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_min( final min=retDamPhy_min, final max=retDamPhy_max, final unit="1") "Minimum return air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_max( final min=retDamPhy_min, final max=retDamPhy_max, final unit="1") "Maximum return air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPhy_max( final min=0, final max=1, final unit="1") "Physical maximum return air damper position limit. Required as an input for the economizer enable disable sequence"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yEnaMinOut "True: enable minimum outdoor air control loop"; Buildings.Controls.OBC.CDL.Reals.PIDWithReset damLimCon( final controllerType=controllerType, final k=k, final Ti=Ti, final Td=Td, final yMax=yMax, final yMin=yMin) "Damper position limit controller"; protected parameter Real yMin=0 "Lower limit of control loop signal"; parameter Real yMax=1 "Upper limit of control loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPhyPosMinSig( final k=outDamPhy_min) "Physically fixed minimum position of the outdoor air damper. This is the initial position of the economizer damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPhyPosMaxSig( final k=outDamPhy_max) "Physically fixed maximum position of the outdoor air damper."; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMinSig( final k=retDamPhy_min) "Physically fixed minimum position of the return air damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMaxSig( final k=retDamPhy_max) "Physically fixed maximum position of the return air damper. This is the initial condition of the return air damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minSigLim( final k=yMin) "Equals minimum controller output signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant maxSigLim( final k=yMax) "Equals maximum controller output signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant sigFraForOutDam( final k=uRetDam_min) "Equals the fraction of the control loop signal below which the outdoor air damper limit gets modulated and above which the return air damper limit gets modulated"; Buildings.Controls.OBC.CDL.Reals.Line minOutDam( final limitBelow=true, final limitAbove=true) "Linear mapping of the outdoor air damper position to the control signal"; Buildings.Controls.OBC.CDL.Reals.Line minRetDam( final limitBelow=true, final limitAbove=true) "Linear mapping of the return air damper position to the control signal"; Buildings.Controls.OBC.CDL.Reals.Switch retDamPosMinSwitch "A switch to deactivate the return air damper minimal outdoor airflow control"; Buildings.Controls.OBC.CDL.Reals.Switch outDamPosMaxSwitch "A switch to deactivate the outdoor air damper minimal outdoor airflow control"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not block"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied) "Occupied mode index"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Check if operation mode is occupied"; Buildings.Controls.OBC.CDL.Logical.And and3 "Logical and"; equation connect(minRetDam.y, yRetDam_max); connect(retDamPosMinSwitch.y, minRetDam.f2); connect(sigFraForOutDam.y, minRetDam.x1); connect(maxSigLim.y, minRetDam.x2); connect(VOut_flow_normalized, damLimCon.u_m); connect(VOutMinSet_flow_normalized, damLimCon.u_s); connect(damLimCon.y, minRetDam.u); connect(outDamPosMaxSwitch.y, minOutDam.f2); connect(minSigLim.y, minOutDam.x1); connect(sigFraForOutDam.y, minOutDam.x2); connect(damLimCon.y, minOutDam.u); connect(outDamPosMaxSwitch.y, yOutDam_max); connect(minOutDam.y, yOutDam_min); connect(retDamPhyPosMaxSig.y, retDamPosMinSwitch.u1); connect(retDamPhyPosMaxSig.y, minRetDam.f1); connect(retDamPhyPosMinSig.y, retDamPosMinSwitch.u3); connect(outDamPhyPosMaxSig.y, outDamPosMaxSwitch.u3); connect(outDamPhyPosMinSig.y, outDamPosMaxSwitch.u1); connect(outDamPhyPosMinSig.y, minOutDam.f1); connect(not1.y, retDamPosMinSwitch.u2); connect(not1.y, outDamPosMaxSwitch.u2); connect(retDamPosMinSwitch.y, yRetDam_min); connect(retDamPhyPosMaxSig.y, yRetDamPhy_max); connect(uOpeMod, intEqu.u1); connect(conInt1.y, intEqu.u2); connect(damLimCon.trigger, u1SupFan); connect(and3.y, not1.u); connect(intEqu.y, and3.u2); connect(u1SupFan, and3.u1); connect(and3.y, yEnaMinOut); end Common;

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

Outdoor air and return air damper position limits for units with separated minimum outdoor air damper and airflow measurement

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

Information

Block that outputs the position limits of the return and outdoor air damper for units with a separated minimum outdoor air damper and airflow measurement. It is implemented according to Section 5.16.5 of the ASHRAE Guideline 36, May 2020.

Minimum outdoor air set point

Calculate the outdoor air set point with Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.

Minimum outdoor air control loop

Minimum outdoor air control loop is enabled when the supply fan is proven ON (u1SupFan=true) and in occupied mode, and disabled and output set to zero otherwise

The minimum outdoor airflow rate shall be maintained at the minimum outdoor air set point by a reverse-acting control loop whose output is 0% to 100%. From 0% to 50% loop output, the minimum outdoor air damper is opened from 0% (minOutDamPhy_min) to 100% (minOutDamPhy_max).

Return air damper

Parameters

TypeNameDefaultDescription
RealminSpe Minimum supply fan speed [1]
Minimum OA control
SimpleControllerminOAConTypBuildings.Controls.OBC.CDL.T...Type of minimum outdoor air controller
RealkMinOA1Gain of controller [1]
RealTiMinOA0.5Time constant of integrator block [s]
RealTdMinOA0.1Time constant of derivative block [s]
Commissioning
Physical damper position limits
RealretDamPhy_max1Physically fixed maximum position of the return air damper [1]
RealretDamPhy_min0Physically fixed minimum position of the return air damper [1]
RealoutDamPhy_max1Physically fixed maximum position of the outdoor air damper [1]
RealoutDamPhy_min0Physically fixed minimum position of the outdoor air damper [1]
RealminOutDamPhy_max1Physically fixed maximum position of the minimum outdoor air damper [1]
RealminOutDamPhy_min0Physically fixed minimum position of the minimum outdoor air damper [1]

Connectors

TypeNameDescription
input RealInputVOutMinSet_flow_normalizedEffective minimum outdoor airflow setpoint, normalized by design minimum outdoor airflow rate [1]
input RealInputVOut_flow_normalizedMeasured outdoor volumetric airflow rate, normalized by design minimum outdoor airflow rate [1]
input BooleanInputu1SupFanSupply fan proven on
input IntegerInputuOpeModAHU operation mode status signal
input RealInputuOutDamEconomizer outdoor air damper commanded position [1]
input RealInputuSupFanCommanded supply fan speed [1]
output RealOutputyMinOutDamMinimum outdoor air damper commanded position [1]
output BooleanOutputyEnaMinOutTrue: enable minimum outdoor air control loop
output RealOutputyOutDam_minPhysically minimum outdoor air damper position limit [1]
output RealOutputyOutDam_maxPhysically maximum outdoor air damper position limit [1]
output RealOutputyRetDam_minMinimum return air damper position limit [1]
output RealOutputyRetDam_maxMaximum return air damper position limit [1]
output RealOutputyRetDamPhy_maxPhysical maximum return air damper position limit. Required as an input for the economizer enable disable sequence [1]

Modelica definition

block SeparateWithAFMS "Outdoor air and return air damper position limits for units with separated minimum outdoor air damper and airflow measurement" parameter Real minSpe( final unit="1", final min=0, final max=1) "Minimum supply fan speed"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController minOAConTyp= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of minimum outdoor air controller"; parameter Real kMinOA( final unit="1")=1 "Gain of controller"; parameter Real TiMinOA( final unit="s", final quantity="Time")=0.5 "Time constant of integrator block"; parameter Real TdMinOA( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block"; parameter Real retDamPhy_max( final min=0, final max=1, final unit="1") = 1 "Physically fixed maximum position of the return air damper"; parameter Real retDamPhy_min( final min=0, final max=1, final unit="1") = 0 "Physically fixed minimum position of the return air damper"; parameter Real outDamPhy_max( final min=0, final max=1, final unit="1") = 1 "Physically fixed maximum position of the outdoor air damper"; parameter Real outDamPhy_min( final min=0, final max=1, final unit="1") = 0 "Physically fixed minimum position of the outdoor air damper"; parameter Real minOutDamPhy_max( final min=0, final max=1, final unit="1") = 1 "Physically fixed maximum position of the minimum outdoor air damper"; parameter Real minOutDamPhy_min( final min=0, final max=1, final unit="1") = 0 "Physically fixed minimum position of the minimum outdoor air damper"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOutMinSet_flow_normalized( final unit="1") "Effective minimum outdoor airflow setpoint, normalized by design minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOut_flow_normalized( final unit="1") "Measured outdoor volumetric airflow rate, normalized by design minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SupFan "Supply fan proven on"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDam( final min=0, final max=1, final unit="1") "Economizer outdoor air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSupFan( final min=0, final max=1, final unit="1") "Commanded supply fan speed"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yMinOutDam( final min=0, final max=1, final unit="1") "Minimum outdoor air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yEnaMinOut "True: enable minimum outdoor air control loop"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_min( final min=outDamPhy_min, final max=outDamPhy_max, final unit="1") "Physically minimum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_max( final min=outDamPhy_min, final max=outDamPhy_max, final unit="1") "Physically maximum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_min( final min=retDamPhy_min, final max=retDamPhy_max, final unit="1") "Minimum return air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_max( final min=retDamPhy_min, final max=retDamPhy_max, final unit="1") "Maximum return air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPhy_max( final min=0, final max=1, final unit="1") "Physical maximum return air damper position limit. Required as an input for the economizer enable disable sequence"; Buildings.Controls.OBC.CDL.Reals.PIDWithReset conMinOA( final controllerType=minOAConTyp, final k=kMinOA, final Ti=TiMinOA, final Td=TdMinOA, final yMax=minOutDamPhy_max, final yMin=minOutDamPhy_min) "Minimum outdoor air flow control"; protected Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied) "Occupied mode index"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Check if operation mode is occupied"; Buildings.Controls.OBC.CDL.Logical.And enaMinCon "Check if the minimum outdoor air control loop should be enabled"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer( final k=0) "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( final k=0.5) "Constant"; Buildings.Controls.OBC.CDL.Reals.Line minOutDamPos( final limitBelow=true, final limitAbove=true) "Minimum outdoor air damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minOutDamPhyPosMinSig( final k=minOutDamPhy_min) "Physically fixed minimum position of the minimum outdoor air damper. This is the initial position of the economizer damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minOutDamPhyPosMaxSig( final k=minOutDamPhy_max) "Physically fixed maximum position of the minimum outdoor air damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one( final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( final k=0.05) "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2( final k=0.8) "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minFanSpe( final k=minSpe) "Minimum fan speed"; Buildings.Controls.OBC.CDL.Reals.Line moaP( final limitBelow=true, final limitAbove=true) "Linear mapping of the supply fan speed to the control signal"; Buildings.Controls.OBC.CDL.Reals.Less les( final h=0.05) "Check if economizer outdoor air damper is less than projected position"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final t=0.98, final h=0.01) "Check if the minimum outdoor air damper position is fully open"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=1.1) "Projected position with a gain factor"; Buildings.Controls.OBC.CDL.Reals.Greater gre( final h=0.05) "Check if the economizer outdoor air damper is greater than threshold"; Buildings.Controls.OBC.CDL.Logical.And enaRetDamMin "Enable return air damper minimum outdoor air control"; Buildings.Controls.OBC.CDL.Logical.Latch enaDis "Enable or disable return air damper minimum outdoor air control"; Buildings.Controls.OBC.CDL.Logical.Not cloMinDam "Check if the minimum outdoor air damper is closed"; Buildings.Controls.OBC.CDL.Logical.Or disRetDamMin "Disable return air damper minimum outdoor air control"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPhyPosMinSig( final k=outDamPhy_min) "Physically fixed minimum position of the outdoor air damper. This is the initial position of the economizer damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPhyPosMaxSig( final k=outDamPhy_max) "Physically fixed maximum position of the outdoor air damper."; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMinSig( final k=retDamPhy_min) "Physically fixed minimum position of the return air damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMaxSig( final k=retDamPhy_max) "Physically fixed maximum position of the return air damper. This is the initial condition of the return air damper"; Buildings.Controls.OBC.CDL.Reals.Switch retDamPosMinSwi "A switch to deactivate the return air damper minimal outdoor airflow control"; Buildings.Controls.OBC.CDL.Reals.Switch retDamPosMaxSwi "A switch to deactivate the return air damper minimal outdoor airflow control"; Buildings.Controls.OBC.CDL.Reals.Line maxRetDamPos( final limitBelow=true, final limitAbove=true) "Maximum return air damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3( final k=0.5) "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4( final k=1) "Constant"; equation connect(uOpeMod, intEqu.u1); connect(conInt1.y, intEqu.u2); connect(intEqu.y, enaMinCon.u2); connect(VOutMinSet_flow_normalized,conMinOA. u_s); connect(VOut_flow_normalized,conMinOA. u_m); connect(enaMinCon.y,conMinOA. trigger); connect(zer.y, minOutDamPos.x1); connect(conMinOA.y, minOutDamPos.u); connect(minOutDamPhyPosMinSig.y, minOutDamPos.f1); connect(con.y, minOutDamPos.x2); connect(minOutDamPhyPosMaxSig.y, minOutDamPos.f2); connect(minFanSpe.y, moaP.x1); connect(con2.y, moaP.f1); connect(uSupFan, moaP.u); connect(con1.y, moaP.f2); connect(one.y, moaP.x2); connect(uOutDam, les.u1); connect(moaP.y, les.u2); connect(moaP.y, gai.u); connect(uOutDam, gre.u1); connect(gai.y, gre.u2); connect(minOutDamPos.y, greThr.u); connect(les.y, enaRetDamMin.u2); connect(greThr.y, enaRetDamMin.u1); connect(greThr.y, cloMinDam.u); connect(cloMinDam.y, disRetDamMin.u1); connect(gre.y, disRetDamMin.u2); connect(enaRetDamMin.y, enaDis.u); connect(disRetDamMin.y, enaDis.clr); connect(outDamPhyPosMinSig.y, yOutDam_min); connect(outDamPhyPosMaxSig.y, yOutDam_max); connect(retDamPhyPosMaxSig.y, yRetDamPhy_max); connect(retDamPosMinSwi.y, yRetDam_min); connect(con3.y, maxRetDamPos.x1); connect(con4.y, maxRetDamPos.x2); connect(retDamPhyPosMinSig.y, maxRetDamPos.f2); connect(enaDis.y, retDamPosMaxSwi.u2); connect(maxRetDamPos.y, retDamPosMaxSwi.u1); connect(retDamPhyPosMinSig.y, retDamPosMaxSwi.u3); connect(retDamPosMaxSwi.y, yRetDam_max); connect(enaDis.y, retDamPosMinSwi.u2); connect(retDamPhyPosMinSig.y, retDamPosMinSwi.u1); connect(retDamPhyPosMaxSig.y, maxRetDamPos.f1); connect(retDamPhyPosMaxSig.y, retDamPosMinSwi.u3); connect(conMinOA.y, maxRetDamPos.u); connect(minOutDamPos.y, yMinOutDam); connect(u1SupFan, enaMinCon.u1); connect(enaMinCon.y, yEnaMinOut); end SeparateWithAFMS;

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

Outdoor air and return air damper position limits for units with separated minimum outdoor air damper and differential pressure control

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

Information

Block that outputs the position limits of the return and outdoor air damper for units with a separated minimum outdoor air damper and differential pressure control. It is implemented according to Section 5.16.4 of the ASHRAE Guideline 36, May 2020.

Differential pressure setpoint across the minimum outdoor air damper

Open minimum outdoor air damper

Open minimum outdoor air damper when the supply air fan is proven ON and the system is in occupied mode and the minimum differential pressure set point is greater than zero. Damper shall be closed otherwise.

Return air damper

Parameters

TypeNameDefaultDescription
VentilationStandardvenStd Ventilation standard, ASHRAE 62.1 or Title 24
Booleanhave_CO2SenfalseTrue: some zones have CO2 sensor
RealdpAbsMinOutDam5Absolute minimum pressure difference across the minimum outdoor air damper. It provides the absolute minimum outdoor airflow [Pa]
RealdpDesMinOutDam20Design minimum pressure difference across the minimum outdoor air damper. It provides the design minimum outdoor airflow [Pa]
RealminSpe Minimum supply fan speed [1]
DP control
SimpleControllerdpConBuildings.Controls.OBC.CDL.T...Type of differential pressure setpoint controller
RealkDp1Gain of controller [1]
RealTiDp0.5Time constant of integrator block [s]
RealTdDp0.1Time constant of derivative block [s]
Commissioning
Physical damper position limits
RealretDamPhy_max1Physically fixed maximum position of the return air damper [1]
RealretDamPhy_min0Physically fixed minimum position of the return air damper [1]
RealoutDamPhy_max1Physically fixed maximum position of the outdoor air damper [1]
RealoutDamPhy_min0Physically fixed minimum position of the outdoor air damper [1]

Connectors

TypeNameDescription
input RealInputeffAbsOutAir_normalizedEffective minimum outdoor airflow setpoint, normalized by the absolute outdoor airflow rate [1]
input RealInputuCO2Loo_maxMaximum zone CO2 control loop [1]
input RealInputeffDesOutAir_normalizedEffective minimum outdoor airflow setpoint, normalized by the design outdoor airflow rate [1]
input RealInputdpMinOutDamMeasured pressure difference across the minimum outdoor air damper [Pa]
input RealInputVOutMinSet_flow_normalizedEffective minimum outdoor airflow setpoint, normalized by design minimum outdoor airflow rate [1]
input BooleanInputu1SupFanSupply fan proven on
input IntegerInputuOpeModAHU operation mode status signal
input RealInputuOutDamEconomizer outdoor air damper commanded position [1]
input RealInputuSupFanCommanded supply fan speed [1]
output BooleanOutputy1MinOutDamStatus of minimum outdoor air damper position, true means it's open
output RealOutputyOutDam_minPhysically minimum outdoor air damper position limit [1]
output RealOutputyOutDam_maxPhysically maximum outdoor air damper position limit [1]
output RealOutputyRetDam_minMinimum return air damper position limit [1]
output RealOutputyRetDam_maxMaximum return air damper position limit [1]
output RealOutputyRetDamPhy_maxPhysical maximum return air damper position limit. Required as an input for the economizer enable disable sequence [1]

Modelica definition

block SeparateWithDP "Outdoor air and return air damper position limits for units with separated minimum outdoor air damper and differential pressure control" parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard venStd "Ventilation standard, ASHRAE 62.1 or Title 24"; parameter Boolean have_CO2Sen=false "True: some zones have CO2 sensor"; parameter Real dpAbsMinOutDam( unit="Pa", displayUnit="Pa")=5 "Absolute minimum pressure difference across the minimum outdoor air damper. It provides the absolute minimum outdoor airflow"; parameter Real dpDesMinOutDam( unit="Pa", displayUnit="Pa")=20 "Design minimum pressure difference across the minimum outdoor air damper. It provides the design minimum outdoor airflow"; parameter Real minSpe(unit="1") "Minimum supply fan speed"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController dpCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of differential pressure setpoint controller"; parameter Real kDp(unit="1")=1 "Gain of controller"; parameter Real TiDp(unit="s")=0.5 "Time constant of integrator block"; parameter Real TdDp(unit="s")=0.1 "Time constant of derivative block"; 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 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"; Buildings.Controls.OBC.CDL.Interfaces.RealInput effAbsOutAir_normalized( final unit="1") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Effective minimum outdoor airflow setpoint, normalized by the absolute outdoor airflow rate "; Buildings.Controls.OBC.CDL.Interfaces.RealInput uCO2Loo_max(final unit="1") if have_CO2Sen and venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Maximum zone CO2 control loop"; Buildings.Controls.OBC.CDL.Interfaces.RealInput effDesOutAir_normalized( final unit="1") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Effective minimum outdoor airflow setpoint, normalized by the design outdoor airflow rate "; Buildings.Controls.OBC.CDL.Interfaces.RealInput dpMinOutDam( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") "Measured pressure difference across the minimum outdoor air damper"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOutMinSet_flow_normalized( final unit="1") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1 "Effective minimum outdoor airflow setpoint, normalized by design minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SupFan "Supply fan proven on"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDam( final min=0, final max=1, final unit="1") "Economizer outdoor air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSupFan( final min=0, final max=1, final unit="1") "Commanded supply fan speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1MinOutDam "Status of minimum outdoor air damper position, true means it's open"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_min( final min=outDamPhy_min, final max=outDamPhy_max, final unit="1") "Physically minimum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam_max( final min=outDamPhy_min, final max=outDamPhy_max, final unit="1") "Physically maximum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_min( final min=retDamPhy_min, final max=retDamPhy_max, final unit="1") "Minimum return air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam_max( final min=retDamPhy_min, final max=retDamPhy_max, final unit="1") "Maximum return air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPhy_max( final min=0, final max=1, final unit="1") "Physical maximum return air damper position limit. Required as an input for the economizer enable disable sequence"; Buildings.Controls.OBC.CDL.Reals.Multiply minDp if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1 "Minimum pressure difference setpoint when complying with ASHRAE 62.1"; Buildings.Controls.OBC.CDL.Reals.PIDWithReset maxRetDam( final controllerType=dpCon, final k=kDp, final Ti=TiDp, final Td=TdDp) "Maximum return air damper position"; protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant minDesDp( final k=dpDesMinOutDam) "Design minimum outdoor air damper pressure difference"; Buildings.Controls.OBC.CDL.Reals.Multiply pro if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1 "Square of the normalized minimum airflow"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final h=1) "Check if the minimum pressure difference setpoint is greater than zero"; Buildings.Controls.OBC.CDL.Reals.Less les( final h=0.05) "Check if economizer outdoor air damper is less than projected position"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=1.1) "Projected position with a gain factor"; Buildings.Controls.OBC.CDL.Reals.Greater gre( final h=0.05) "Check if the economizer outdoor air damper is greater than threshold"; Buildings.Controls.OBC.CDL.Logical.Latch enaDis "Enable or disable return air damper minimum outdoor air control"; Buildings.Controls.OBC.CDL.Logical.And enaRetDamMin "Enable return air damper minimum outdoor air control"; Buildings.Controls.OBC.CDL.Logical.Or disRetDamMin "Disable return air damper minimum outdoor air control"; Buildings.Controls.OBC.CDL.Logical.Not disMinDam "Check if the minimum outdoor air damper is closed"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied) "Occupied mode index"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Check if operation mode is occupied"; Buildings.Controls.OBC.CDL.Logical.And enaMinDam1 "Check if the minimum outdoor air damper should be enabled, one of two stacked And blocks"; Buildings.Controls.OBC.CDL.Logical.And enaMinDam2 "Check if the minimum outdoor air damper should be enabled, one of two stacked And blocks"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one( final k=1) "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minFanSpe( final k=minSpe) "Minimum fan speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( final k=0.05) "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( final k=0.8) "Constant"; Buildings.Controls.OBC.CDL.Reals.Line moaP( final limitBelow=true, final limitAbove=true) "Linear mapping of the supply fan speed to the control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPhyPosMinSig( final k=outDamPhy_min) "Physically fixed minimum position of the outdoor air damper. This is the initial position of the economizer damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPhyPosMaxSig( final k=outDamPhy_max) "Physically fixed maximum position of the outdoor air damper."; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMinSig( final k=retDamPhy_min) "Physically fixed minimum position of the return air damper"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMaxSig( final k=retDamPhy_max) "Physically fixed maximum position of the return air damper. This is the initial condition of the return air damper"; Buildings.Controls.OBC.CDL.Reals.Switch retDamPosMaxSwi "A switch to deactivate the return air damper maximum outdoor airflow control"; Buildings.Controls.OBC.CDL.Reals.Switch retDamPosMinSwi "A switch to deactivate the return air damper minimal outdoor airflow control"; Buildings.Controls.OBC.CDL.Reals.Multiply pro1 if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Square of the normalized minimum airflow"; Buildings.Controls.OBC.CDL.Reals.Multiply pro2 if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Square of the normalized minimum airflow"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minAbsDp( final k=dpAbsMinOutDam) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Absolute minimum outdoor air damper pressure difference"; Buildings.Controls.OBC.CDL.Reals.Line minDp1( final limitAbove=true) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Minimum pressure difference setpoint when complying with Title 24"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one1( final k=1) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Design fan speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hal( final k=0.5) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one2( final k=1) if not have_CO2Sen and venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Design fan speed"; Buildings.Controls.OBC.CDL.Reals.Multiply actAbsMinDp if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Active absolute minimum pressure difference setpoint"; Buildings.Controls.OBC.CDL.Reals.Multiply actDesMinDp if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Active design minimum pressure difference setpoint"; equation connect(VOutMinSet_flow_normalized, pro.u1); connect(VOutMinSet_flow_normalized, pro.u2); connect(uOpeMod, intEqu.u1); connect(conInt1.y, intEqu.u2); connect(minDp.y, greThr.u); connect(minFanSpe.y, moaP.x1); connect(con1.y, moaP.f1); connect(con.y, moaP.f2); connect(one.y, moaP.x2); connect(uSupFan, moaP.u); connect(uOutDam, les.u1); connect(moaP.y, les.u2); connect(uOutDam, gre.u1); connect(gai.y, gre.u2); connect(moaP.y, gai.u); connect(enaMinDam2.y, enaRetDamMin.u1); connect(les.y, enaRetDamMin.u2); connect(enaRetDamMin.y, enaDis.u); connect(enaMinDam2.y, disMinDam.u); connect(disMinDam.y, disRetDamMin.u1); connect(gre.y, disRetDamMin.u2); connect(disRetDamMin.y, enaDis.clr); connect(minDp.y, maxRetDam.u_s); connect(dpMinOutDam, maxRetDam.u_m); connect(enaDis.y, maxRetDam.trigger); connect(retDamPhyPosMaxSig.y, yRetDamPhy_max); connect(enaDis.y, retDamPosMaxSwi.u2); connect(maxRetDam.y, retDamPosMaxSwi.u1); connect(retDamPosMaxSwi.y, yRetDam_max); connect(retDamPhyPosMaxSig.y, retDamPosMaxSwi.u3); connect(enaDis.y, retDamPosMinSwi.u2); connect(retDamPhyPosMinSig.y, retDamPosMinSwi.u1); connect(retDamPhyPosMaxSig.y, retDamPosMinSwi.u3); connect(retDamPosMinSwi.y, yRetDam_min); connect(outDamPhyPosMinSig.y, yOutDam_min); connect(outDamPhyPosMaxSig.y, yOutDam_max); connect(enaMinDam2.y, y1MinOutDam); connect(effAbsOutAir_normalized, pro1.u1); connect(effAbsOutAir_normalized, pro1.u2); connect(effDesOutAir_normalized, pro2.u1); connect(effDesOutAir_normalized, pro2.u2); connect(pro1.y, actAbsMinDp.u2); connect(minAbsDp.y, actAbsMinDp.u1); connect(minDesDp.y, actDesMinDp.u2); connect(pro2.y, actDesMinDp.u1); connect(pro.y, minDp.u2); connect(minDesDp.y, minDp.u1); connect(uCO2Loo_max, minDp1.u); connect(actAbsMinDp.y, minDp1.f1); connect(actDesMinDp.y, minDp1.f2); connect(hal.y, minDp1.x1); connect(one1.y, minDp1.x2); connect(minDp1.y, maxRetDam.u_s); connect(minDp1.y, greThr.u); connect(one2.y, minDp1.u); connect(intEqu.y, enaMinDam1.u2); connect(u1SupFan, enaMinDam1.u1); connect(greThr.y, enaMinDam2.u1); connect(enaMinDam1.y, enaMinDam2.u2); end SeparateWithDP;