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 |
---|---|
Controller | Single zone VAV AHU economizer control sequence |
Subsequences | Subsequences for economizer control |
Validation | Collection of validation models |
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller
Single zone VAV AHU economizer control sequence
Information
Single zone VAV AHU economizer control sequence that calculates outdoor and return air damper positions based on ASHRAE Guidline 36, PART 5 sections: P.4.d, P.5, P.9, P.3.b, A.17.
The sequence consists of three subsequences.
-
First, the block
damLim
computes the damper position limits to satisfy outdoor air requirements. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Limits for a description. -
Second, the block
enaDis
enables or disables the economizer based on outdoor temperature and optionally enthalpy, and based on the supply fan status, freeze protection stage and zone state. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Enable for a description. -
Third, the block
mod
modulates the outdoor and return damper position to track the supply air temperature setpoint for heating, subject to the limits of the damper positions that were computed in the above two blocks. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Subsequences.Modulation for a description.
Parameters
Type | Name | Default | Description |
---|---|---|---|
Boolean | use_enthalpy | false | Set to true if enthalpy measurement is used in addition to temperature measurement |
Boolean | use_fixed_plus_differential_drybulb | false | Set to true to only evaluate fixed plus differential dry bulb temperature high limit cutoff; shall not be used with enthalpy |
Boolean | use_TMix | true | Set to true if mixed air temperature measurement is enabled |
Boolean | use_G36FrePro | false | Set to true if G36 freeze protection is implemented |
Real | uMin | 0.1 | Lower limit of controller output at which the dampers are at their limits [1] |
Real | uMax | 0.9 | Upper limit of controller output at which the dampers are at their limits [1] |
Modulation | |||
SimpleController | controllerTypeMod | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kMod | 1 | Gain of modulation controller [1/K] |
Real | TiMod | 300 | Time constant of modulation controller integrator block [s] |
Real | TdMod | 0.1 | Time constant of derivative block for modulation controller [s] |
Freeze protection | |||
SimpleController | controllerTypeFre | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kFre | 0.1 | Gain for mixed air temperature tracking for freeze protection, used if use_TMix=true [1/K] |
Real | TiFre | 120 | Time constant of controller for mixed air temperature tracking for freeze protection. Require TiFre < TiMinOut [s] |
Real | TdFre | 0.1 | Time constant of derivative block for freeze protection [s] |
Real | TFreSet | 277.15 | Lower limit for mixed air temperature for freeze protection, used if use_TMix=true [K] |
Advanced | |||
Hysteresis | |||
Real | delTOutHis | 1 | Delta between the temperature hysteresis high and low limit [K] |
Real | delEntHis | 1000 | Delta between the enthalpy hysteresis high and low limits [J/kg] |
Commissioning | |||
Damper position limits | |||
Real | yFanMin | 0.1 | Minimum supply fan operation speed [1] |
Real | yFanMax | 0.9 | Maximum supply fan operation speed [1] |
Real | VOutMin_flow | 1.0 | Calculated minimum outdoor airflow rate [m3/s] |
Real | VOutDes_flow | 2.0 | Calculated design outdoor airflow rate [m3/s] |
Real | yDam_VOutMin_minSpe | 0.4 | Outdoor air damper position to supply minimum outdoor airflow at minimum fan speed [1] |
Real | yDam_VOutMin_maxSpe | 0.3 | Outdoor air damper position to supply minimum outdoor airflow at maximum fan speed [1] |
Real | yDam_VOutDes_minSpe | 0.9 | Outdoor air damper position to supply design outdoor airflow at minimum fan speed [1] |
Real | yDam_VOutDes_maxSpe | 0.8 | Outdoor air damper position to supply design outdoor airflow at maximum fan speed [1] |
Physical damper position limits | |||
Real | outDamPhyPosMax | 1 | Physically fixed maximum position of the outdoor air damper [1] |
Real | outDamPhyPosMin | 0 | Physically fixed minimum position of the outdoor air damper [1] |
Real | retDamPhyPosMax | 1 | Physically fixed maximum position of the return air damper [1] |
Real | retDamPhyPosMin | 0 | Physically fixed minimum position of the return air damper [1] |
Connectors
Type | Name | Description |
---|---|---|
input RealInput | THeaSupSet | Supply air temperature heating setpoint [K] |
input RealInput | TSup | Measured supply air temperature [K] |
input RealInput | TOut | Outdoor air temperature [K] |
input RealInput | TCut | Outdoor air temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement [K] |
input RealInput | TRet | Used only for fixed plus differential dry bulb temperature high limit cutoff [K] |
input RealInput | hOut | Outdoor air enthalpy [J/kg] |
input RealInput | hCut | Outdoor air enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement [J/kg] |
input RealInput | TMix | Measured mixed air temperature, used for freeze protection [K] |
input RealInput | VOutMinSet_flow | Minimum outdoor airflow setpoint [m3/s] |
input RealInput | uSupFanSpe | Supply fan speed [1] |
input IntegerInput | uZonSta | Zone state signal |
input IntegerInput | uFreProSta | Freeze protection status |
input IntegerInput | uOpeMod | AHU operation mode status signal |
input BooleanInput | uSupFan | Supply fan status |
output RealOutput | yRetDamPos | Return air damper position [1] |
output RealOutput | yOutDamPos | Outdoor air damper position [1] |
output RealOutput | yHeaCoi | Heating coil control signal |
Modelica definition
block 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_fixed_plus_differential_drybulb = false
"Set to true to only evaluate fixed plus differential dry bulb temperature high limit cutoff;
shall not be used with enthalpy";
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 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 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 Real TiMod(
final unit="s",
final quantity="Time")=300
"Time constant of modulation controller integrator block";
parameter Real TdMod(
final unit="s",
final quantity="Time")=0.1
"Time constant of derivative block for modulation controller";
parameter Real uMin(
final min=0.1,
final max=0.9,
final unit="1") = 0.1
"Lower limit of controller output at which the dampers are at their limits";
parameter Real uMax(
final min=0.1,
final max=1,
final unit="1") = 0.9
"Upper limit of controller output 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 Real TiFre(
final unit="s",
final quantity="Time")=120
"Time constant of controller for mixed air temperature tracking for freeze protection. Require TiFre < TiMinOut";
parameter Real TdFre(
final unit="s",
final quantity="Time")=0.1
"Time constant of derivative block for freeze protection";
parameter Real TFreSet(
final unit="K",
final displayUnit="degC",
final quantity="ThermodynamicTemperature") = 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 Real VOutMin_flow(
final unit="m3/s",
final quantity="VolumeFlowRate")=1.0
"Calculated minimum outdoor airflow rate";
parameter Real VOutDes_flow(
final unit="m3/s",
final quantity="VolumeFlowRate")=2.0
"Calculated design outdoor airflow rate";
parameter Real yDam_VOutMin_minSpe(
final min=outDamPhyPosMin,
final max=outDamPhyPosMax,
final unit="1") = 0.4
"Outdoor air 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
"Outdoor air 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
"Outdoor air 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
"Outdoor air 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 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 displayUnit="degC",
final quantity = "ThermodynamicTemperature")
"Supply air temperature heating setpoint";
Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup(
final unit="K",
final displayUnit="degC",
final quantity = "ThermodynamicTemperature")
"Measured supply air temperature";
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 TCut(
final unit="K",
final displayUnit="degC",
final quantity="ThermodynamicTemperature")
"Outdoor air temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement";
Buildings.Controls.OBC.CDL.Interfaces.RealInput TRet(
final unit="K",
final displayUnit="degC",
final quantity="ThermodynamicTemperature") if
use_fixed_plus_differential_drybulb
"Used only for fixed plus differential dry bulb temperature high limit cutoff";
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 hCut(final unit="J/kg",
final quantity="SpecificEnergy") if
use_enthalpy
"Outdoor air enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement";
Buildings.Controls.OBC.CDL.Interfaces.RealInput TMix(
final unit="K",
final displayUnit="degC",
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 use_fixed_plus_differential_drybulb=use_fixed_plus_differential_drybulb,
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";
public
CDL.Interfaces.RealOutput yHeaCoi "Heating coil control signal";
equation
connect(uSupFan, enaDis.uSupFan);
connect(uFreProSta, enaDis.uFreProSta);
connect(TRet, enaDis.TRet);
connect(hCut, enaDis.hCut);
connect(hOut, enaDis.hOut);
connect(TCut, enaDis.TCut);
connect(TOut, enaDis.TOut);
connect(uSupFan, damLim.uSupFan);
connect(uOpeMod, damLim.uOpeMod);
connect(uFreProSta, damLim.uFreProSta);
connect(damLim.yOutDamPosMax, enaDis.uOutDamPosMax);
connect(enaDis.yOutDamPosMax, mod.uOutDamPosMax);
connect(enaDis.yRetDamPosMax, mod.uRetDamPosMax);
connect(damLim.yOutDamPosMin, mod.uOutDamPosMin);
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(freProSta.y, enaDis.uFreProSta);
connect(freProSta.y, damLim.uFreProSta);
connect(uSupFan, mod.uSupFan);
connect(mod.yHeaCoi, yHeaCoi);
connect(damLim.yOutDamPosMin, enaDis.uOutDamPosMin);
connect(TMix, freProTMix.TMix);
connect(TSup, mod.TSup);
connect(THeaSupSet, mod.THeaSupSet);
end Controller;