Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV

Sequences for multi zone VAV AHU control

Information

This package contains control sequences from ASHRAE Guideline 36, Part 5.N for multi zone VAV air handling unit control.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Controller Controller Multizone AHU controller that composes subsequences for controlling fan speed, dampers, and supply air temperature
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Economizers Economizers Economizer control of multi zone VAV AHU
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints SetPoints Output setpoints for AHU control
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Controller Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Controller

Multizone AHU controller that composes subsequences for controlling fan speed, dampers, and supply air temperature

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Controller

Information

Block that is applied for multizone VAV AHU control. It outputs the supply fan status and the operation speed, outdoor and return air damper position, supply air temperature setpoint and the valve position of the cooling and heating coils. It is implemented according to the ASHRAE Guideline 36, PART 5.N.

The sequence consists of five subsequences.

Supply fan speed control

The fan speed control is implemented according to PART 5.N.1. It outputs the boolean signal ySupFan to turn on or off the supply fan. In addition, based on the pressure reset request uZonPreResReq from the VAV zones controller, the sequence resets the duct pressure setpoint, and uses this setpoint to modulate the fan speed ySupFanSpe using a PI controller. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.SupplyFan for more detailed description.

Minimum outdoor airflow setting

According to current occupany, supply operation status ySupFan, zone temperatures and the discharge air temperature, the sequence computes the minimum outdoor airflow rate setpoint, which is used as input for the economizer control. More detailed information can be found in Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.

Economizer control

The block outputs outdoor and return air damper position, yOutDamPos and yRetDamPos. First, it computes the position limits to satisfy the minimum outdoor airflow requirement. Second, it determines the availability of the economizer based on the outdoor condition. The dampers are modulated to track the supply air temperature loop signal, which is calculated from the sequence below, subject to the minimum outdoor airflow requirement and economizer availability. Optionally, there is also an override for freeze protection. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Economizers.Controller for more detailed description.

Supply air temperature setpoint

Based on PART 5.N.2, the sequence first sets the maximum supply air temperature based on reset requests collected from each zone uZonTemResReq. The outdoor temperature TOut and operation mode uOpeMod are used along with the maximum supply air temperature, for computing the supply air temperature setpoint. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.SupplyTemperature for more detailed description.

Coil valve control

The subsequence retrieves supply air temperature setpoint from previous sequence. Along with the measured supply air temperature and the supply fan status, it generates coil valve positions. See Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.SupplySignals

Parameters

TypeNameDefaultDescription
RealsamplePeriod120Sample period of component, set to the same value to the trim and respond sequence [s]
System and building parameters
Booleanhave_perZonRehBoxtrueCheck if there is any VAV-reheat boxes on perimeter zones
Booleanhave_duaDucBoxfalseCheck if the AHU serves dual duct boxes
Booleanhave_airFloMeaStafalseCheck if the AHU has AFMS (Airflow measurement station)
Economizer PID controller
SimpleControllercontrollerTypeMinOutBuildings.Controls.OBC.CDL.T...Type of controller
RealkMinOut0.05Gain of controller for minimum outdoor air intake [1]
RealTiMinOut1200Time constant of controller for minimum outdoor air intake [s]
RealTdMinOut0.1Time constant of derivative block for minimum outdoor air intake [s]
Economizer freeze protection
Booleanuse_TMixtrueSet to true if mixed air temperature measurement is enabled
Booleanuse_G36FreProfalseSet to true to use G36 freeze protection
SimpleControllercontrollerTypeFreBuildings.Controls.OBC.CDL.T...Type of controller
RealkFre0.1Gain for mixed air temperature tracking for freeze protection, used if use_TMix=true [1/K]
RealTiFre120Time constant of controller for mixed air temperature tracking for freeze protection. Require TiFre < TiMinOut [s]
RealTdFre0.1Time constant of derivative block for freeze protection [s]
RealTFreSet279.15Lower limit for mixed air temperature for freeze protection, used if use_TMix=true [K]
Fan speed PID controller
SimpleControllercontrollerTypeFanSpeBuildings.Controls.OBC.CDL.T...Type of controller
RealkFanSpe0.1Gain of fan fan speed controller, normalized using pMaxSet [1]
RealTiFanSpe60Time constant of integrator block for fan speed [s]
RealTdFanSpe0.1Time constant of derivative block for fan speed [s]
RealyFanMax1Maximum allowed fan speed
RealyFanMin0.1Lowest allowed fan speed if fan is on
Supply air temperature
SimpleControllercontrollerTypeTSupBuildings.Controls.OBC.CDL.T...Type of controller for supply air temperature signal
RealkTSup0.05Gain of controller for supply air temperature signal [1/K]
RealTiTSup600Time constant of integrator block for supply air temperature control signal [s]
RealTdTSup0.1Time constant of integrator block for supply air temperature control signal [s]
RealuHeaMax-0.25Upper limit of controller signal when heating coil is off. Require -1 < uHeaMax < uCooMin < 1.
RealuCooMin0.25Lower limit of controller signal when cooling coil is off. Require -1 < uHeaMax < uCooMin < 1.
Economizer
Booleanuse_enthalpyfalseSet to true if enthalpy measurement is used in addition to temperature measurement
Realdelta5Time horizon over which the outdoor air flow measurment is averaged [s]
RealdelTOutHis1Delta between the temperature hysteresis high and low limit [K]
RealdelEntHis1000Delta between the enthalpy hysteresis high and low limits [J/kg]
Damper limits
RealretDamPhyPosMax1Physically fixed maximum position of the return air damper [1]
RealretDamPhyPosMin0Physically fixed minimum position of the return air damper [1]
RealoutDamPhyPosMax1Physically fixed maximum position of the outdoor air damper [1]
RealoutDamPhyPosMin0Physically fixed minimum position of the outdoor air damper [1]
RealyMinDamLim0Lower limit of damper position limits control signal output
RealyMaxDamLim1Upper limit of damper position limits control signal output
Economizer 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]
Fan speed
Trim and respond for reseting duct static pressure setpoint
RealpIniSet60Initial pressure setpoint for fan speed control [Pa]
RealpMinSet25Minimum pressure setpoint for fan speed control [Pa]
RealpMaxSet400Maximum pressure setpoint for fan speed control [Pa]
RealpDelTim600Delay time after which trim and respond is activated [s]
IntegerpNumIgnReq2Number of ignored requests for fan speed control
RealpTriAmo-12.0Trim amount for fan speed control [Pa]
RealpResAmo15Respond amount (must be opposite in to triAmo) for fan speed control [Pa]
RealpMaxRes32Maximum response per time interval (same sign as resAmo) for fan speed control [Pa]
Minimum outdoor airflow rate
Nominal conditions
RealVPriSysMax_flowVPriSysMax_flow(final unit="...Maximum expected system primary airflow at design stage [m3/s]
RealpeaSysPop Peak system population
Supply air temperature
Temperature limits
RealTSupSetMin285.15Lowest cooling supply air temperature setpoint [K]
RealTSupSetMax291.15Highest cooling supply air temperature setpoint. It is typically 18 degC (65 degF) in mild and dry climates, 16 degC (60 degF) or lower in humid climates [K]
RealTSupSetDes286.15Nominal supply air temperature setpoint [K]
RealTOutMin289.15Lower value of the outdoor air temperature reset range. Typically value is 16 degC (60 degF) [K]
RealTOutMax294.15Higher value of the outdoor air temperature reset range. Typically value is 21 degC (70 degF) [K]
Trim and respond for reseting TSup setpoint
RealiniSetSupTemsupTemSetPoi.maxSetInitial setpoint for supply temperature control [K]
RealmaxSetSupTemsupTemSetPoi.TSupSetMaxMaximum setpoint for supply temperature control [K]
RealminSetSupTemsupTemSetPoi.TSupSetDesMinimum setpoint for supply temperature control [K]
RealdelTimSupTem600Delay timer for supply temperature control [s]
IntegernumIgnReqSupTem2Number of ignorable requests for supply temperature control
RealtriAmoSupTem0.1Trim amount for supply temperature control [K]
RealresAmoSupTem-0.2Response amount for supply temperature control [K]
RealmaxResSupTem-0.6Maximum response per time interval for supply temperature control [K]

Connectors

TypeNameDescription
input RealInputTZonHeaSetZone air temperature heating setpoint [K]
input RealInputTZonCooSetZone air temperature cooling setpoint [K]
input RealInputTOutOutdoor air temperature [K]
input RealInputducStaPreMeasured duct static pressure [Pa]
input RealInputsumDesZonPopSum of the design population of the zones in the group [1]
input RealInputVSumDesPopBreZon_flowSum of the population component design breathing zone flow rate [m3/s]
input RealInputVSumDesAreBreZon_flowSum of the area component design breathing zone flow rate [m3/s]
input RealInputuDesSysVenEffDesign system ventilation efficiency, equals to the minimum of all zones ventilation efficiency [1]
input RealInputVSumUncOutAir_flowSum of all zones required uncorrected outdoor airflow rate [m3/s]
input RealInputVSumSysPriAir_flowSystem primary airflow rate, equals to the sum of the measured discharged flow rate of all terminal units [m3/s]
input RealInputuOutAirFra_maxMaximum zone outdoor air fraction, equals to the maximum of primary outdoor air fraction of all zones [1]
input RealInputTSupMeasured supply air temperature [K]
input RealInputTOutCutOA temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement [K]
input RealInputhOutOutdoor air enthalpy [J/kg]
input RealInputhOutCutOA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement [J/kg]
input RealInputVOut_flowMeasured outdoor volumetric airflow rate [m3/s]
input RealInputTMixMeasured mixed air temperature, used for freeze protection if use_TMix=true [K]
input IntegerInputuOpeModAHU operation mode status signal
input IntegerInputuZonTemResReqZone cooling supply air temperature reset request
input IntegerInputuZonPreResReqZone static pressure reset requests
input IntegerInputuFreProStaFreeze protection status, used if use_G36FrePro=true
output BooleanOutputySupFanSupply fan status, true if fan should be on
output RealOutputySupFanSpeSupply fan speed [1]
output RealOutputTSupSetSetpoint for supply air temperature [K]
output RealOutputVDesUncOutAir_flowDesign uncorrected minimum outdoor airflow rate [m3/s]
output RealOutputyAveOutAirFraPluAverage outdoor air flow fraction plus 1 [1]
output RealOutputVEffOutAir_flowEffective minimum outdoor airflow setpoint [m3/s]
output BooleanOutputyReqOutAirTrue if the AHU supply fan is on and the zone is in occupied mode
output RealOutputyHeaControl signal for heating [1]
output RealOutputyCooControl signal for cooling [1]
output RealOutputyRetDamPosReturn air damper position [1]
output RealOutputyOutDamPosOutdoor air damper position [1]

Modelica definition

block Controller "Multizone AHU controller that composes subsequences for controlling fan speed, dampers, and supply air temperature" parameter Real samplePeriod( final unit="s", final quantity="Time")=120 "Sample period of component, set to the same value to the trim and respond sequence"; parameter Boolean have_perZonRehBox=true "Check if there is any VAV-reheat boxes on perimeter zones"; parameter Boolean have_duaDucBox=false "Check if the AHU serves dual duct boxes"; parameter Boolean have_airFloMeaSta=false "Check if the AHU has AFMS (Airflow measurement station)"; // ----------- Parameters for economizer control ----------- parameter Boolean use_enthalpy=false "Set to true if enthalpy measurement is used in addition to temperature measurement"; parameter Real delta( final unit="s", final quantity="Time")=5 "Time horizon over which the outdoor air flow measurment is averaged"; 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 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"; 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 Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeMinOut= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kMinOut(final unit="1")=0.05 "Gain of controller for minimum outdoor air intake"; parameter Real TiMinOut( final unit="s", final quantity="Time")=1200 "Time constant of controller for minimum outdoor air intake"; parameter Real TdMinOut( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for minimum outdoor air intake"; parameter Boolean use_TMix=true "Set to true if mixed air temperature measurement is enabled"; parameter Boolean use_G36FrePro=false "Set to true to use G36 freeze protection"; 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", final max=TiMinOut)=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")= 279.15 "Lower limit for mixed air temperature for freeze protection, used if use_TMix=true"; parameter Real yMinDamLim=0 "Lower limit of damper position limits control signal output"; parameter Real yMaxDamLim=1 "Upper limit of damper position limits control signal output"; 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"; // ----------- parameters for fan speed control ----------- parameter Real pIniSet( final unit="Pa", final displayUnit="Pa", final quantity="PressureDifference")=60 "Initial pressure setpoint for fan speed control"; parameter Real pMinSet( final unit="Pa", final displayUnit="Pa", final quantity="PressureDifference")=25 "Minimum pressure setpoint for fan speed control"; parameter Real pMaxSet( final unit="Pa", final displayUnit="Pa", final quantity="PressureDifference")=400 "Maximum pressure setpoint for fan speed control"; parameter Real pDelTim( final unit="s", final quantity="Time")=600 "Delay time after which trim and respond is activated"; parameter Integer pNumIgnReq=2 "Number of ignored requests for fan speed control"; parameter Real pTriAmo( final unit="Pa", final displayUnit="Pa", final quantity="PressureDifference")=-12.0 "Trim amount for fan speed control"; parameter Real pResAmo( final unit="Pa", final displayUnit="Pa", final quantity="PressureDifference")=15 "Respond amount (must be opposite in to triAmo) for fan speed control"; parameter Real pMaxRes( final unit="Pa", final displayUnit="Pa", final quantity="PressureDifference")=32 "Maximum response per time interval (same sign as resAmo) for fan speed control"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFanSpe=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kFanSpe(final unit="1")=0.1 "Gain of fan fan speed controller, normalized using pMaxSet"; parameter Real TiFanSpe( final unit="s", final quantity="Time")=60 "Time constant of integrator block for fan speed"; parameter Real TdFanSpe( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for fan speed"; parameter Real yFanMax=1 "Maximum allowed fan speed"; parameter Real yFanMin=0.1 "Lowest allowed fan speed if fan is on"; // ----------- parameters for minimum outdoor airflow setting ----------- parameter Real VPriSysMax_flow( final unit="m3/s", final quantity="VolumeFlowRate") "Maximum expected system primary airflow at design stage"; parameter Real peaSysPop "Peak system population"; // ----------- parameters for supply air temperature control ----------- parameter Real TSupSetMin( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=285.15 "Lowest cooling supply air temperature setpoint"; parameter Real TSupSetMax( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=291.15 "Highest cooling supply air temperature setpoint. It is typically 18 degC (65 degF) in mild and dry climates, 16 degC (60 degF) or lower in humid climates"; parameter Real TSupSetDes( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=286.15 "Nominal supply air temperature setpoint"; parameter Real TOutMin( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=289.15 "Lower value of the outdoor air temperature reset range. Typically value is 16 degC (60 degF)"; parameter Real TOutMax( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=294.15 "Higher value of the outdoor air temperature reset range. Typically value is 21 degC (70 degF)"; parameter Real iniSetSupTem( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=supTemSetPoi.maxSet "Initial setpoint for supply temperature control"; parameter Real maxSetSupTem( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=supTemSetPoi.TSupSetMax "Maximum setpoint for supply temperature control"; parameter Real minSetSupTem( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=supTemSetPoi.TSupSetDes "Minimum setpoint for supply temperature control"; parameter Real delTimSupTem( final unit="s", final quantity="Time")=600 "Delay timer for supply temperature control"; parameter Integer numIgnReqSupTem=2 "Number of ignorable requests for supply temperature control"; parameter Real triAmoSupTem( final unit="K", final displayUnit="K", final quantity="TemperatureDifference")=0.1 "Trim amount for supply temperature control"; parameter Real resAmoSupTem( final unit="K", final displayUnit="K", final quantity="TemperatureDifference")=-0.2 "Response amount for supply temperature control"; parameter Real maxResSupTem( final unit="K", final displayUnit="K", final quantity="TemperatureDifference")=-0.6 "Maximum response per time interval for supply temperature control"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeTSup= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller for supply air temperature signal"; parameter Real kTSup(final unit="1/K")=0.05 "Gain of controller for supply air temperature signal"; parameter Real TiTSup( final unit="s", final quantity="Time")=600 "Time constant of integrator block for supply air temperature control signal"; parameter Real TdTSup( final unit="s", final quantity="Time")=0.1 "Time constant of integrator block for supply air temperature control signal"; parameter Real uHeaMax(min=-0.9)=-0.25 "Upper limit of controller signal when heating coil is off. Require -1 < uHeaMax < uCooMin < 1."; parameter Real uCooMin(max=0.9)=0.25 "Lower limit of controller signal when cooling coil is off. Require -1 < uHeaMax < uCooMin < 1."; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonHeaSet( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone air temperature heating setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonCooSet( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone air temperature cooling setpoint"; 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 ducStaPre( final unit="Pa", final displayUnit="Pa") "Measured duct static pressure"; Buildings.Controls.OBC.CDL.Interfaces.RealInput sumDesZonPop( final min=0, final unit="1") "Sum of the design population of the zones in the group"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumDesPopBreZon_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "Sum of the population component design breathing zone flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumDesAreBreZon_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "Sum of the area component design breathing zone flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uDesSysVenEff( final min=0, final unit = "1") "Design system ventilation efficiency, equals to the minimum of all zones ventilation efficiency"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumUncOutAir_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "Sum of all zones required uncorrected outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumSysPriAir_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "System primary airflow rate, equals to the sum of the measured discharged flow rate of all terminal units"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutAirFra_max( final min=0, final unit = "1") "Maximum zone outdoor air fraction, equals to the maximum of primary outdoor air fraction of all zones"; 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 TOutCut( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature") "OA temperature high limit cutoff. For differential dry bulb temeprature condition use return air temperature measurement"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hOut( final unit="J/kg", final quantity="SpecificEnergy") if use_enthalpy "Outdoor air enthalpy"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hOutCut( final unit="J/kg", final quantity="SpecificEnergy") if use_enthalpy "OA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VOut_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "Measured outdoor volumetric airflow rate"; 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 if use_TMix=true"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uZonTemResReq "Zone cooling supply air temperature reset request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uZonPreResReq "Zone static pressure reset requests"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uFreProSta if use_G36FrePro "Freeze protection status, used if use_G36FrePro=true"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput ySupFan "Supply fan status, true if fan should be on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput ySupFanSpe( final min=0, final max=1, final unit="1") "Supply fan speed"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TSupSet( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature") "Setpoint for supply air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput VDesUncOutAir_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "Design uncorrected minimum outdoor airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yAveOutAirFraPlu( final min=0, final unit = "1") "Average outdoor air flow fraction plus 1"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput VEffOutAir_flow( final min=0, final unit = "m3/s", final quantity = "VolumeFlowRate") "Effective minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yReqOutAir "True if the AHU supply fan is on and the zone is in occupied mode"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHea( final min=0, final max=1, final unit="1") "Control signal for heating"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCoo( final min=0, final max=1, final unit="1") "Control signal for cooling"; 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.CDL.Continuous.Average TZonSetPoiAve "Average of all zone set points"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.SupplyFan supFan( final samplePeriod=samplePeriod, final have_perZonRehBox=have_perZonRehBox, final have_duaDucBox=have_duaDucBox, final have_airFloMeaSta=have_airFloMeaSta, final iniSet=pIniSet, final minSet=pMinSet, final maxSet=pMaxSet, final delTim=pDelTim, final numIgnReq=pNumIgnReq, final triAmo=pTriAmo, final resAmo=pResAmo, final maxRes=pMaxRes, final controllerType=controllerTypeFanSpe, final k=kFanSpe, final Ti=TiFanSpe, final Td=TdFanSpe, final yFanMax=yFanMax, final yFanMin=yFanMin) "Supply fan controller"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.SupplyTemperature supTemSetPoi( final samplePeriod=samplePeriod, final TSupSetMin=TSupSetMin, final TSupSetMax=TSupSetMax, final TSupSetDes=TSupSetDes, final TOutMin=TOutMin, final TOutMax=TOutMax, final iniSet=iniSetSupTem, final maxSet=maxSetSupTem, final minSet=minSetSupTem, final delTim=delTimSupTem, final numIgnReq=numIgnReqSupTem, final triAmo=triAmoSupTem, final resAmo=resAmoSupTem, final maxRes=maxResSupTem) "Setpoint for supply temperature"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.AHU sysOutAirSet(final VPriSysMax_flow=VPriSysMax_flow, final peaSysPop= peaSysPop) "Minimum outdoor airflow setpoint"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Economizers.Controller eco( final use_enthalpy=use_enthalpy, final delTOutHis=delTOutHis, final delEntHis=delEntHis, final retDamFulOpeTim=retDamFulOpeTim, final disDel=disDel, final controllerTypeMinOut=controllerTypeMinOut, final kMinOut=kMinOut, final TiMinOut=TiMinOut, final TdMinOut=TdMinOut, final retDamPhyPosMax=retDamPhyPosMax, final retDamPhyPosMin=retDamPhyPosMin, final outDamPhyPosMax=outDamPhyPosMax, final outDamPhyPosMin=outDamPhyPosMin, final uHeaMax=uHeaMax, final uCooMin=uCooMin, final uOutDamMax=(uHeaMax + uCooMin)/2, final uRetDamMin=(uHeaMax + uCooMin)/2, final TFreSet=TFreSet, final controllerTypeFre=controllerTypeFre, final kFre=kFre, final TiFre=TiFre, final TdFre=TdFre, final delta=delta, final use_TMix=use_TMix, final use_G36FrePro=use_G36FrePro) "Economizer controller"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.SupplySignals val( final controllerType=controllerTypeTSup, final kTSup=kTSup, final TiTSup=TiTSup, final TdTSup=TdTSup, final uHeaMax=uHeaMax, final uCooMin=uCooMin) "AHU coil valve control"; protected Buildings.Controls.OBC.CDL.Continuous.Division VOut_flow_normalized( u1(final unit="m3/s"), u2(final unit="m3/s"), y(final unit="1")) "Normalization of outdoor air flow intake by design minimum outdoor air intake"; equation connect(eco.yRetDamPos, yRetDamPos); connect(eco.yOutDamPos, yOutDamPos); connect(eco.uSupFan, supFan.ySupFan); connect(supFan.ySupFanSpe, ySupFanSpe); connect(TOut, eco.TOut); connect(eco.TOutCut, TOutCut); connect(eco.hOut, hOut); connect(eco.hOutCut, hOutCut); connect(eco.uOpeMod, uOpeMod); connect(supTemSetPoi.TSupSet, TSupSet); connect(supTemSetPoi.TOut, TOut); connect(supTemSetPoi.uSupFan, supFan.ySupFan); connect(supTemSetPoi.uZonTemResReq, uZonTemResReq); connect(supTemSetPoi.uOpeMod, uOpeMod); connect(supFan.uOpeMod, uOpeMod); connect(supFan.uZonPreResReq, uZonPreResReq); connect(supFan.ducStaPre, ducStaPre); connect(supTemSetPoi.TZonSetAve, TZonSetPoiAve.y); connect(supFan.ySupFan, ySupFan); connect(TZonSetPoiAve.u2, TZonCooSet); connect(eco.TMix, TMix); connect(TSup, val.TSup); connect(supFan.ySupFan, val.uSupFan); connect(val.uTSup, eco.uTSup); connect(val.yHea, yHea); connect(val.yCoo, yCoo); connect(supTemSetPoi.TSupSet, val.TSupSet); connect(TZonHeaSet, TZonSetPoiAve.u1); connect(eco.uFreProSta, uFreProSta); connect(eco.VOut_flow_normalized, VOut_flow_normalized.y); connect(VOut_flow_normalized.u1, VOut_flow); connect(sysOutAirSet.VDesUncOutAir_flow, VDesUncOutAir_flow); connect(sysOutAirSet.VDesOutAir_flow, VOut_flow_normalized.u2); connect(sysOutAirSet.effOutAir_normalized, eco.VOutMinSet_flow_normalized); connect(supFan.ySupFan, sysOutAirSet.uSupFan); connect(uOpeMod, sysOutAirSet.uOpeMod); connect(sysOutAirSet.yAveOutAirFraPlu, yAveOutAirFraPlu); connect(sysOutAirSet.VEffOutAir_flow, VEffOutAir_flow); connect(sysOutAirSet.yReqOutAir, yReqOutAir); connect(sysOutAirSet.sumDesZonPop, sumDesZonPop); connect(sysOutAirSet.VSumDesPopBreZon_flow, VSumDesPopBreZon_flow); connect(sysOutAirSet.VSumDesAreBreZon_flow, VSumDesAreBreZon_flow); connect(sysOutAirSet.uDesSysVenEff, uDesSysVenEff); connect(sysOutAirSet.VSumUncOutAir_flow, VSumUncOutAir_flow); connect(sysOutAirSet.VSumSysPriAir_flow, VSumSysPriAir_flow); connect(uOutAirFra_max, sysOutAirSet.uOutAirFra_max); end Controller;