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

Subsequences for economizer control

Information

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

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Enable Enable Single zone VAV AHU economizer enable/disable switch
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Limits Limits Single zone VAV AHU minimum outdoor air control - damper position limits
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Modulation Modulation Outdoor and return air damper position modulation sequence for single zone VAV AHU
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Validation Validation Collection of validation models

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

Single zone VAV AHU economizer enable/disable switch

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

Information

This is a single zone VAV AHU economizer enable/disable sequence based on ASHRAE G36 PART5.5 and PART5.A.17. Additional conditions included in the sequence are:

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 is 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

Parameters

TypeNameDefaultDescription
Conditional
Booleanuse_enthalpytrueSet to true to evaluate outdoor air (OA) enthalpy in addition to temperature
Advanced
Hysteresis
TemperatureDifferencedelTOutHis1Delta between the temperature hysteresis high and low limit [K]
SpecificEnergydelEntHis1000Delta between the enthalpy hysteresis high and low limits [J/kg]
Commissioning
Physical damper position limits
RealretDamPhyPosMax1Physically fixed maximum position of the return air damper [1]
RealretDamPhyPosMin0Physically fixed minimum position of the return air damper [1]

Connectors

TypeNameDescription
input RealInputTOutOutdoor air temperature [K]
input RealInputhOutOutdoor air enthalpy [J/kg]
input RealInputTOutCutOA temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement [K]
input RealInputhOutCutOA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement [J/kg]
input RealInputuOutDamPosMinMinimum outdoor air damper position, get from damper position limits sequence [1]
input RealInputuOutDamPosMaxMaximum outdoor air damper position, get from damper position limits sequence [1]
input BooleanInputuSupFanSupply fan on/off status signal
input IntegerInputuZonStaZone state status signal
input IntegerInputuFreProStaFreeze protection stage status signal
output RealOutputyOutDamPosMaxMaximum outdoor air damper position [1]
output RealOutputyRetDamPosMinMinimum return air damper position [1]
output RealOutputyRetDamPosMaxMaximum return air damper position [1]

Modelica definition

block Enable "Single 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 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 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 TOut( final unit="K", 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 quantity = "ThermodynamicTemperature") "OA temperature high limit cutoff. For differential dry bulb temeprature 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 uOutDamPosMin( final unit="1", final min=0, final max=1) "Minimum outdoor air damper position, get from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDamPosMax( final unit="1", final min=0, final max=1) "Maximum outdoor air damper position, get from damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSupFan "Supply fan on/off status signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uZonSta "Zone state status signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uFreProSta "Freeze protection stage status signal"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDamPosMax( final min=0, final max=1, final unit="1") "Maximum outdoor air damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPosMin( final min=retDamPhyPosMin, final max=retDamPhyPosMax, final unit="1") "Minimum return air damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPosMax( final min=retDamPhyPosMin, final max=retDamPhyPosMax, final unit="1") "Maximum return air damper position"; Buildings.Controls.OBC.CDL.Logical.And3 andEnaDis "Logical and that checks freeze protection stage and zone state"; Buildings.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol( trueHoldDuration=600) "10 min on/off delay"; protected final parameter Modelica.SIunits.Temperature TOutHigLimCutHig = 0 "Hysteresis high limit cutoff"; final parameter Real TOutHigLimCutLow = TOutHigLimCutHig - delTOutHis "Hysteresis low limit cutoff"; final parameter Modelica.SIunits.SpecificEnergy hOutHigLimCutHig = 0 "Hysteresis block high limit cutoff"; final parameter Real hOutHigLimCutLow = hOutHigLimCutHig - delEntHis "Hysteresis block low limit cutoff"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant entSubst( final k=false) if not use_enthalpy "Deactivates outdoor air enthalpy condition if there is no enthalpy sensor"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPhyPosMinSig( final k=retDamPhyPosMin) "Physically fixed minimum position of the return air damper"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPhyPosMaxSig( final k=retDamPhyPosMax) "Physically fixed maximum position of the return air damper. This is the initial condition of the return air damper"; Buildings.Controls.OBC.CDL.Continuous.Hysteresis hysOutTem( final uHigh=TOutHigLimCutHig, final uLow=TOutHigLimCutLow) "Outdoor air temperature hysteresis for both fixed and differential dry bulb temperature cutoff conditions"; Buildings.Controls.OBC.CDL.Continuous.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.Continuous.Add add2(final k2=-1) if use_enthalpy "Add block that determines the difference between hOut and hOutCut"; Buildings.Controls.OBC.CDL.Continuous.Add add1(final k2=-1) "Add block that determines difference the between TOut and TOutCut"; Buildings.Controls.OBC.CDL.Logical.Switch outDamSwitch "Set maximum OA damper position to minimum at disable (after time delay)"; Buildings.Controls.OBC.CDL.Logical.Switch minRetDamSwitch "Keep minimum RA damper position at physical maximum for a short time period after disable"; Buildings.Controls.OBC.CDL.Logical.Nor nor1 "Logical nor"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not that starts the timer at disable signal "; Buildings.Controls.OBC.CDL.Logical.And and1 "Logical and checks supply fan status"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage0); Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Logical block to check if the freeze protection is deactivated"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.ZoneStates.heating); Buildings.Controls.OBC.CDL.Integers.Equal intEqu1 "Logical block to check if the freeze protection is deactivated"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Negation for check of freeze protection status"; equation connect(outDamSwitch.y, yOutDamPosMax); connect(TOut, add1.u1); connect(TOutCut, add1.u2); connect(add1.y, hysOutTem.u); connect(hOut, add2.u1); connect(hOutCut, add2.u2); connect(add2.y, hysOutEnt.u); connect(hysOutTem.y, nor1.u1); connect(hysOutEnt.y, nor1.u2); connect(entSubst.y, nor1.u2); connect(uOutDamPosMin, outDamSwitch.u1); connect(uOutDamPosMax, outDamSwitch.u3); connect(nor1.y, truFalHol.u); connect(andEnaDis.y, not2.u); connect(minRetDamSwitch.y, yRetDamPosMin); connect(truFalHol.y, and1.u1); connect(and1.y, andEnaDis.u1); connect(uSupFan, and1.u2); connect(retDamPhyPosMaxSig.y, minRetDamSwitch.u1); connect(retDamPhyPosMinSig.y, minRetDamSwitch.u3); connect(retDamPhyPosMaxSig.y, yRetDamPosMax); connect(not2.y, minRetDamSwitch.u2); connect(not2.y, outDamSwitch.u2); connect(conInt.y,intEqu. u2); connect(conInt1.y,intEqu1. u2); connect(intEqu1.y,not3. u); connect(uZonSta, intEqu1.u1); connect(uFreProSta, intEqu.u1); connect(intEqu.y, andEnaDis.u2); connect(not3.y, andEnaDis.u3); end Enable;

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

Single zone VAV AHU minimum outdoor air control - damper position limits

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

Information

This block implements the single zone VAV AHU minimum outdoor air control with a single common damper for minimum outdoor air and economizer functions based on outdoor airflow setpoint (VOutMinSet_flow) and supply fan speed (uSupFanSpe), designed in line with ASHRAE Guidline 36, PART5.P.4.d.

The controller is enabled when the supply fan is proven on (uSupFan=true), the AHU operation mode uOpeMod is Occupied, and Freeze protection stage uFreProSta is 1 or smaller. Otherwise the damper position limits are set to their corresponding maximum and minimum physical or at commissioning fixed limits, as illustrated below:

Image of damper position limits state machine chart

If limit modulation is enabled, the outdoor air damper position yOutDamPosMin is computed as follows:

  1. Calculate outdoor air damper position yDam_VOutMin_curSpe which ensures minimum outdoor airflow rate VOutMin_flow at current supply fan speed uSupFanSpe as a linear interpolation between the following values set at commissioning:
    • minimum damper position at minimum fan speed for minimum outdoor airflow yDam_VOutMin_minSpe and
    • minimum damper position at maximum fan speed for minimum outdoor airflow yDam_VOutMin_maxSpe.
  2. Calculate outdoor air damper position yDam_VOutDes_curSpe which ensures design outdoor airflow rate VOutDes_flow at current supply fan speed uSupFanSpe, as a linear interpolation between the following values set at commissioning:
    • minimum damper position at minimum fan speed for design outdoor airflow yDam_VOutDes_minSpe and
    • minimum damper position at maximum fan speed for design outdoor airflow yDam_VOutDes_maxSpe.
  3. Calculate outdoor air damper position yOutDamPosMin which ensures outdoor airflow setpoint VOutMinSet_flow at current supply fan speed uSupFanSpe as a linear interpolation between yDam_VOutMin_curSpe and yDam_VOutDes_curSpe, proportional to ratios of VOutMinSet_flow to VOutDes_flow and VOutMin_flow.

The chart below illustrates the OA damper position limit calculation:

Image of damper position limits control chart

Parameters

TypeNameDefaultDescription
Commissioning
Damper position limits
RealyFanMin0.1Minimum supply fan operation speed [1]
RealyFanMax1Maximum supply fan operation speed [1]
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]
VolumeFlowRateVOutMin_flow Calculated minimum outdoor airflow rate [m3/s]
VolumeFlowRateVOutDes_flow Calculated design outdoor airflow rate [m3/s]
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]

Connectors

TypeNameDescription
input RealInputuSupFanSpeSupply fan speed [1]
input RealInputVOutMinSet_flowMinimum outdoor airflow setpoint [m3/s]
input IntegerInputuOpeModAHU operation mode status signal
input IntegerInputuFreProStaFreeze protection status signal
input BooleanInputuSupFanSupply fan status signal
output RealOutputyOutDamPosMinMinimum outdoor air damper position limit [1]
output RealOutputyOutDamPosMaxMaximum outdoor air damper position limit [1]

Modelica definition

block Limits "Single zone VAV AHU minimum outdoor air control - damper position limits" 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") = 1 "Maximum supply fan operation speed"; 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 Modelica.SIunits.VolumeFlowRate VOutMin_flow "Calculated minimum outdoor airflow rate"; parameter Modelica.SIunits.VolumeFlowRate VOutDes_flow "Calculated design outdoor airflow rate"; 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"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSupFanSpe( final min=0, final max=1, final unit="1") "Supply fan speed"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOutMinSet_flow( final unit="m3/s", final quantity="VolumeFlowRate", final min=VOutMin_flow, final max=VOutDes_flow) "Minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uFreProSta "Freeze protection status signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSupFan "Supply fan status signal"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDamPosMin( final min=outDamPhyPosMin, final max=outDamPhyPosMax, final unit="1") "Minimum outdoor air damper position limit"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDamPosMax( final min=outDamPhyPosMin, final max=outDamPhyPosMax, final unit="1") "Maximum outdoor air damper position limit"; protected Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yFanMinSig( final k=yFanMin) "Minimum supply fan speed"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPhyPosMinSig( final k=outDamPhyPosMin) "Physically fixed minimum position of the outdoor air (OA) damper"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPhyPosMaxSig( final k=outDamPhyPosMax) "Physically fixed maximum position of the outdoor air (OA) damper"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yFanMaxSig( final k=yFanMax) "Maximum supply fan speed"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yDam_VOutMin_minSpeSig( final k=yDam_VOutMin_minSpe) "OA damper position to supply minimum outdoor airflow at minimum fan speed"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yDam_VOutDes_minSpeSig( final k=yDam_VOutDes_minSpe) "OA damper position to supply design outdoor airflow at minimum fan speed"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yDam_VOutMin_maxSpeSig( final k=yDam_VOutMin_maxSpe) "OA damper position to supply minimum outdoor airflow at maximum fan speed"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yDam_VOutDes_maxSpeSig( final k=yDam_VOutDes_maxSpe) "OA damper position to supply design outdoor airflow at maximum fan speed"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minVOutSig( final k=VOutMin_flow) "Minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant desVOutSig( final k=VOutDes_flow) "Design outdoor airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Line yDam_VOutMin_curSpe( final limitBelow=true, final limitAbove=true) "Calculates OA damper position required to supply minimum outdoor airflow at current fan speed"; Buildings.Controls.OBC.CDL.Continuous.Line yDam_VOutDes_curSpe( final limitBelow=true, final limitAbove=true) "Calculates OA damper position required to supply design outdoor airflow at current fan speed"; Buildings.Controls.OBC.CDL.Continuous.Line minVOutSetCurFanSpePos( final limitBelow=true, final limitAbove=true) "Calculates OA damper position required to supply minimum outdoor airflow setpoint at current fan speed"; Buildings.Controls.OBC.CDL.Logical.Switch enaDis "Logical switch to enable damper position limit calculation or disable it (set min limit to physical minimum)"; Buildings.Controls.OBC.CDL.Logical.MultiAnd and1(final nu=3) "Logical and block"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not block"; Buildings.Controls.OBC.CDL.Logical.Switch enaDis1 "Logical switch to enable damper position limit calculation or disable it (set max limit to physical minimum)"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage1) "Freeze protection stage 1"; Buildings.Controls.OBC.CDL.Integers.LessEqual intLesEqu "Check if freeze protection stage is stage 0"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied) "Occupied mode index"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu1 "Check if operation mode is occupied"; equation connect(minVOutSig.y, minVOutSetCurFanSpePos.x1); connect(desVOutSig.y, minVOutSetCurFanSpePos.x2); connect(yDam_VOutMin_curSpe.y, minVOutSetCurFanSpePos.f1); connect(yDam_VOutDes_curSpe.y, minVOutSetCurFanSpePos.f2); connect(enaDis.y, yOutDamPosMin); connect(yDam_VOutDes_minSpeSig.y, yDam_VOutDes_curSpe.f1); connect(yDam_VOutDes_maxSpeSig.y, yDam_VOutDes_curSpe.f2); connect(yDam_VOutMin_minSpeSig.y, yDam_VOutMin_curSpe.f1); connect(yDam_VOutMin_maxSpeSig.y, yDam_VOutMin_curSpe.f2); connect(uSupFanSpe, yDam_VOutMin_curSpe.u); connect(yFanMaxSig.y, yDam_VOutMin_curSpe.x2); connect(yFanMinSig.y, yDam_VOutMin_curSpe.x1); connect(yFanMinSig.y, yDam_VOutDes_curSpe.x1); connect(yFanMaxSig.y, yDam_VOutDes_curSpe.x2); connect(VOutMinSet_flow, minVOutSetCurFanSpePos.u); connect(uSupFanSpe, yDam_VOutDes_curSpe.u); connect(and1.y,not1. u); connect(not1.y, enaDis.u2); connect(outDamPhyPosMinSig.y, enaDis.u1); connect(minVOutSetCurFanSpePos.y, enaDis.u3); connect(outDamPhyPosMinSig.y, enaDis1.u1); connect(outDamPhyPosMaxSig.y, enaDis1.u3); connect(enaDis1.y, yOutDamPosMax); connect(not1.y, enaDis1.u2); connect(uSupFan, and1.u[1]); connect(uOpeMod, intEqu1.u1); connect(conInt1.y, intEqu1.u2); connect(intLesEqu.y, and1.u[2]); connect(intEqu1.y, and1.u[3]); connect(intLesEqu.u2, conInt.y); connect(uFreProSta, intLesEqu.u1); end Limits;

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

Outdoor and return air damper position modulation sequence for single zone VAV AHU

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

Information

This is a single zone VAV AHU economizer modulation block. It calculates the outdoor and return air damper positions based on the single zone VAV AHU supply air temperature control loop signal. Economizer dampers are modulated based on the calculated heating supply air temperature setpoint. The implementation is in line with ASHRAE Guidline 36 (G36), PART5.P.3.b. Damper positions are linearly mapped to the supply air control loop signal. This is a final sequence in the composite single zone VAV AHU economizer control sequence. Damper position limits, which are the inputs to the sequence, are the outputs of Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Limits and Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Enable sequences.

When the economizer is enabled, the PI controller modulates the damper positions. Return and outdoor damper are not interlocked. When the economizer is disabled, the damper positions are set to the minimum outdoor air damper position limits.

The control charts below show the input-output structure and an economizer damper modulation sequence assuming a well configured controller. Control diagram:

Image of the single zone AHU modulation sequence control diagram

Single zone AHU economizer modulation control chart:

Image of the single zone AHU modulation sequence expected performance

Parameters

TypeNameDefaultDescription
SimpleControllercontrollerTypeBuildings.Controls.OBC.CDL.T...Type of controller
Realk1Gain of controller [1/K]
TimeTi300Time constant of modulation controller integrator block [s]
TimeTd0.1Time constant of derivative block for cooling control loop signal [s]
RealuMin0Lower limit of controller output uTSup at which the dampers are at their limits
RealuMax1Upper limit of controller output uTSup at which the dampers are at their limits

Connectors

TypeNameDescription
input RealInputTSupMeasured supply air temperature [K]
input RealInputTHeaSupSetSupply air temperature heating setpoint [K]
input BooleanInputuSupFanSupply fan status
input RealInputuOutDamPosMinMinimum economizer damper position limit as returned by the damper position limits sequence [1]
input RealInputuOutDamPosMaxMaximum economizer damper position limit as returned by the economizer enable-disable sequence. If the economizer is disabled, this value equals uOutDamPosMin [1]
input RealInputuRetDamPosMinMinimum return air damper position limit as returned by the economizer enable-disable sequence [1]
input RealInputuRetDamPosMaxMaximum return air damper position limit as returned by the economizer enable-disable sequence [1]
output RealOutputyOutDamPosEconomizer damper position [1]
output RealOutputyRetDamPosReturn air damper position [1]

Modelica definition

block Modulation "Outdoor and return air damper position modulation sequence for single zone VAV AHU" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real k(final unit="1/K") = 1 "Gain of controller"; parameter Modelica.SIunits.Time Ti=300 "Time constant of modulation controller integrator block"; parameter Modelica.SIunits.Time Td=0.1 "Time constant of derivative block for cooling control loop signal"; parameter Real uMin=0 "Lower limit of controller output uTSup at which the dampers are at their limits"; parameter Real uMax=1 "Upper limit of controller output uTSup at which the dampers are at their limits"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup( final unit="K", final quantity = "ThermodynamicTemperature") "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput THeaSupSet( final unit="K", final quantity = "ThermodynamicTemperature") "Supply air temperature heating setpoint"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSupFan "Supply fan status"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDamPosMin( final min=0, final max=1, final unit="1") "Minimum economizer damper position limit as returned by the damper position limits sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDamPosMax( final min=0, final max=1, final unit="1") "Maximum economizer damper position limit as returned by the economizer enable-disable sequence. If the economizer is disabled, this value equals uOutDamPosMin"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRetDamPosMin( final min=0, final max=1, final unit="1") "Minimum return air damper position limit as returned by the economizer enable-disable sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRetDamPosMax( final min=0, final max=1, final unit="1") "Maximum return air damper position limit as returned by the economizer enable-disable sequence"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDamPos( final min=0, final max=1, final unit="1") "Economizer damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDamPos( final min=0, final max=1, final unit="1") "Return air damper position"; Buildings.Controls.OBC.CDL.Continuous.LimPID uTSup( final controllerType=controllerType, final k=k, final Ti=Ti, final Td=Td, final yMax=uMax, final yMin=uMin, reset=Buildings.Controls.OBC.CDL.Types.Reset.Parameter) "Contoller that outputs a signal based on the error between the measured SAT and SAT heating setpoint"; protected Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamMinLimSig( final k=uMin) "Minimal control loop signal for the outdoor air damper"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamMaxLimSig( final k=uMax) "Maximal control loop signal for the return air damper"; Buildings.Controls.OBC.CDL.Continuous.Line outDamPos( final limitBelow=true, final limitAbove=true) "Damper position is linearly proportional to the control signal between signal limits"; Buildings.Controls.OBC.CDL.Continuous.Line retDamPos( final limitBelow=true, final limitAbove=true) "Damper position is linearly proportional to the control signal between signal limits"; equation connect(TSup, uTSup.u_m); connect(outDamPos.y, yOutDamPos); connect(retDamPos.y, yRetDamPos); connect(retDamMaxLimSig.y,retDamPos. x2); connect(uTSup.y, retDamPos.u); connect(uTSup.y, outDamPos.u); connect(uRetDamPosMax,retDamPos. f1); connect(uOutDamPosMin, outDamPos.f1); connect(outDamMinLimSig.y, outDamPos.x1); connect(THeaSupSet, uTSup.u_s); connect(uRetDamPosMin,retDamPos. f2); connect(uOutDamPosMax, outDamPos.f2); connect(retDamMaxLimSig.y, outDamPos.x2); connect(outDamMinLimSig.y, retDamPos.x1); connect(uSupFan, uTSup.trigger); end Modulation;