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

Sequences for multi zone VAV AHU control

Information

This package contains control sequences from ASHRAE Guideline 36, Section 5.16 for multi zone VAV air handling unit control.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller Controller Multizone VAV air handling unit controller
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers Economizers Economizer control of multi zone VAV AHU
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints SetPoints Output setpoints for AHU control
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Validation Validation Collection of validation models

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

Multizone VAV air handling unit controller

Buildings.Controls.OBC.ASHRAE.G36.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 Section 5.16 of ASHRAE Guideline 36, May 2020.

The sequence consists of eight types of subsequences.

Supply fan speed control

The fan speed control is implemented according to Section 5.16.1. It outputs the boolean signal y1SupFan 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.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.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. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller for more detailed description.

Supply air temperature setpoint

Based on the Section 5.16.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.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.AHUs.MultiZone.VAV.SetPoints.SupplySignals for more detailed description.

Freeze protection

Based on the Section 5.16.12, the sequence enables freeze protection if the measured supply air temperature belows certain thresholds. There are three protection stages. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection for more detailed description.

Building pressure control

By selecting different building pressure control designs, which includes using actuated relief damper without fan, using actuated relief dampers with relief fan, using return fan with direct building pressure control, or using return fan with airflow tracking control, the sequences controls relief fans, relief dampers and return fans. See belows sequences for more detailed description:

Plant request

According to the Section 5.16.16, the sequence send out heating or cooling plant requests if the supply air temperature is below or above threshold value, or the heating or cooling valves have been widely open for certain times. See Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.PlantRequests for more detailed description.

Parameters

TypeNameDefaultDescription
EnergyStandardeneStdBuildings.Controls.OBC.ASHRA...Energy standard, ASHRAE 90.1 or Title 24
VentilationStandardvenStdBuildings.Controls.OBC.ASHRA...Ventilation standard, ASHRAE 62.1 or Title 24
ASHRAEClimateZoneashCliZonBuildings.Controls.OBC.ASHRA...ASHRAE climate zone
Title24ClimateZonetit24CliZonBuildings.Controls.OBC.ASHRA...California Title 24 climate zone
FreezeStatfreStaBuildings.Controls.OBC.ASHRA...Type of freeze stat
Economizer design
OutdoorAirSectionminOADesBuildings.Controls.OBC.ASHRA...Type of outdoor air section
BuildingPressureControlTypesbuiPreConBuildings.Controls.OBC.ASHRA...Type of building pressure control system
Booleanhave_ahuRelFantrueTrue: relief fan is part of AHU; False: the relief fans group that may associate multiple AHUs
ControlEconomizerecoHigLimConBuildings.Controls.OBC.ASHRA...Economizer high limit control device
RealaveTimRan5Time horizon over which the outdoor air flow measurement is averaged [s]
System and building parameters
Booleanhave_hotWatCoitrueTrue: the AHU has hot water heating coil
Booleanhave_eleHeaCoifalseTrue: the AHU has electric heating coil
Booleanhave_perZonRehBoxfalseCheck if there is any VAV-reheat boxes on perimeter zones
Minimum outdoor air setpoint
RealVUncDesOutAir_flow0Uncorrected design outdoor airflow rate, including diversity where applicable. It can be determined using the 62MZCalc spreadsheet from ASHRAE 62.1 User's Manual [m3/s]
RealVDesTotOutAir_flow0Design total outdoor airflow rate. It can be determined using the 62MZCalc spreadsheet from ASHRAE 62.1 User's Manual [m3/s]
RealVAbsOutAir_flow0Design outdoor airflow rate when all zones with CO2 sensors or occupancy sensors are unpopulated. Needed when complying with Title 24 requirements [m3/s]
RealVDesOutAir_flow0Design minimum outdoor airflow rate with the areas served by the system are occupied at their design population, including diversity where applicable. Needed when complying with Title 24 requirements [m3/s]
Fan speed
Trim and respond for reseting duct static pressure setpoint
RealpIniSet120Initial pressure setpoint for fan speed control [Pa]
RealpMinSet25Minimum pressure setpoint for fan speed control [Pa]
RealpMaxSet1000Duct design maximum static pressure. It is the Max_DSP shown in Section 3.2.1.1 of Guideline 36 [Pa]
RealpDelTim600Delay time after which trim and respond is activated [s]
RealpSamplePeriod120Sample period [s]
IntegerpNumIgnReq2Number of ignored requests
RealpTriAmo-12.0Trim amount [Pa]
RealpResAmo15Respond amount (must be opposite in to trim amount) [Pa]
RealpMaxRes32Maximum response per time interval (same sign as respond amount) [Pa]
PID controller
SimpleControllerfanSpeConBuildings.Controls.OBC.CDL.T...Supply fan speed PID controller
RealkFanSpe0.1Gain of supply fan speed PID controller [1]
RealTiFanSpe60Time constant of integrator block for supply fan speed PID controller [s]
RealTdFanSpe0.1Time constant of derivative block for supply fan speed PID controller [s]
RealsupFanSpe_min0.1Lowest allowed supply fan speed if fan is on
Supply air temperature
Temperature limits
RealTSupCoo_min285.15Lowest cooling supply air temperature setpoint when the outdoor air temperature is at the higher value of the reset range and above [K]
RealTSupCoo_max291.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]
RealTOut_min289.15Lower value of the outdoor air temperature reset range. Typically value is 16 degC (60 degF) [K]
RealTOut_max294.15Higher value of the outdoor air temperature reset range. Typically value is 21 degC (70 degF) [K]
RealTSupWarUpSetBac308.15Supply temperature in warm up and set back mode [K]
Trim and respond for reseting supply air temperature setpoint
RealdelTimSupTem600Delay timer [s]
RealsamPerSupTem120Sample period of component [s]
IntegerignReqSupTem2Number of ignorable requests for TrimResponse logic
RealtriAmoSupTem0.1Trim amount [K]
RealresAmoSupTem-0.2Response amount [K]
RealmaxResSupTem-0.6Maximum response per time interval [K]
Coils
Valves PID controller
SimpleControllervalConBuildings.Controls.OBC.CDL.T...Type of controller for coil valves control
RealkVal0.05Gain of controller for valve control [1]
RealTiVal600Time constant of integrator block for valve control [s]
RealTdVal0.1Time constant of derivative block for valve control [s]
Limits
RealuHeaCoi_max-0.25Upper limit of controller signal when heating coil is off. Require -1 < uHea_max < uCoo_min < 1.
RealuCooCoi_min0.25Lower limit of controller signal when cooling coil is off. Require -1 < uHea_max < uCoo_min < 1.
Economizer
Limits, separated with AFMS
SimpleControllerminOAConTypBuildings.Controls.OBC.CDL.T...Type of minimum outdoor air controller
RealkMinOA0.03Gain of controller [1]
RealTiMinOA120Time constant of integrator block [s]
RealTdMinOA0.1Time constant of derivative block [s]
Limits, separated with DP
Booleanhave_CO2SenfalseTrue: some zones have CO2 sensor
RealdpAbsMinOutDam5Absolute minimum pressure difference across the minimum outdoor air damper. It provides the absolute minimum outdoor airflow
RealdpDesMinOutDam20Design minimum pressure difference across the minimum outdoor air damper. It provides the design minimum outdoor airflow [Pa]
SimpleControllerdpConTypBuildings.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]
Limits, Common
RealuRetDam_min0.5Loop signal value to start decreasing the maximum return air damper position [1]
Enable
RealdelTOutHis1Delta between the temperature hysteresis high and low limit [K]
RealdelEntHis1000Delta between the enthalpy hysteresis high and low limits [J/kg]
RealretDamFulOpeTim180Time period to keep return air damper fully open before releasing it for minimum outdoor airflow control at disable to avoid pressure fluctuations [s]
RealdisDel15Short time delay before closing the outdoor air damper at disable to avoid pressure fluctuations [s]
Commissioning, 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]
Commissioning, modulation
RealuHeaMax-0.25Lower limit of controller input when outdoor damper opens (see diagram) [1]
RealuCooMin+0.25Upper limit of controller input when return damper is closed (see diagram) [1]
Freeze protection
IntegerminHotWatReq2Minimum heating hot-water plant request to active the heating plant
Heating coil PID Controller
SimpleControllerfreProHeaCoiConBuildings.Controls.OBC.CDL.T...Freeze protection heating coil controller
RealkFrePro0.05Gain of coil controller [1]
RealTiFrePro120Time constant of integrator block [s]
RealTdFrePro0.1Time constant of derivative block [s]
RealyMaxFrePro1Upper limit of output
RealyMinFrePro0Lower limit of output
Pressure control
RealdpBuiSet12Building static pressure difference relative to ambient (positive to pressurize the building) [Pa]
Relief damper
RealkRelDam0.5Gain, applied to building pressure control error normalized with dpBuiSet [1]
Return fan
RealdifFloSet0.1Airflow differential between supply air and return air fans required to maintain building pressure at desired pressure [m3/s]
SimpleControllerretFanConBuildings.Controls.OBC.CDL.T...Type of controller for return fan
RealkRetFan1Gain, normalized using dpBuiSet [1]
RealTiRetFan0.5Time constant of integrator block [s]
RealTdRetFan0.1Time constant of derivative block [s]
RealretFanSpe_min0.1Minimum return fan speed
RealretFacA0.5Factor for mapping the commanded return fan speed to return airflow when the return flow is calculated
RealretFacB0Factor for mapping the commanded return fan speed to return airflow when the return flow is calculated
Realp_rel_RetFan_min2.4Minimum return fan discharge static pressure difference setpoint [Pa]
Realp_rel_RetFan_max40Maximum return fan discharge static pressure difference setpoint [Pa]
Relief fan
RealrelFanSpe_min0.1Relief fan minimum speed
RealkRelFan1Gain of relief fan controller, normalized using dpBuiSet [1]
Advanced
RealThys0.25Hysteresis for checking temperature difference
RealposHys0.05Hysteresis for checking valve position difference
Realhys0.005Hysteresis for checking the relief fan controller output value

Connectors

TypeNameDescription
input IntegerInputuAhuOpeModOperation mode for AHU operation
input IntegerInputuZonPreResReqZone static pressure reset requests
input RealInputdpDucMeasured duct static pressure [Pa]
input RealInputTOutOutdoor air temperature [K]
input IntegerInputuZonTemResReqZone cooling supply air temperature reset request
input BooleanInputu1SupFanSupply fan status
input RealInputTAirSupMeasured supply air temperature [K]
input RealInputVSumAdjPopBreZon_flowSum of the adjusted population component breathing zone flow rate [m3/s]
input RealInputVSumAdjAreBreZon_flowSum of the adjusted area component breathing zone flow rate [m3/s]
input RealInputVSumZonPri_flowSum of the zone primary airflow rates for all zones in all zone groups that are in occupied mode [m3/s]
input RealInputuOutAirFra_maxMaximum zone outdoor air fraction, equals to the maximum of primary outdoor air fraction of all zones [1]
input RealInputVSumZonAbsMin_flowSum of the zone absolute minimum outdoor airflow setpoint [m3/s]
input RealInputVSumZonDesMin_flowSum of the zone design minimum outdoor airflow setpoint [m3/s]
input RealInputVAirOut_flowMeasured outdoor air volumetric flow rate [m3/s]
input RealInputuSupFan_actualActual supply fan speed [1]
input RealInputuCO2Loo_maxMaximum zone CO2 control loop output [1]
input RealInputdpMinOutDamMeasured pressure difference across the minimum outdoor air damper [Pa]
input RealInputTAirRetUsed only for fixed plus differential dry bulb temperature high limit cutoff [K]
input RealInputhAirOutOutdoor air enthalpy [J/kg]
input RealInputhAirRetOA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement [J/kg]
input BooleanInputu1FreStaFreeze protection stat signal. If the stat is normally open (the input is normally true), when enabling freeze protection, the input becomes false. If the stat is normally close, vice versa.
input BooleanInputu1SofSwiResFreeze protection reset signal from software switch
input BooleanInputu1RelFanRelief fan commanded on
input RealInputuRelFanRelief fan commanded speed [1]
input RealInputTAirMixMeasured mixed air temperature [K]
input RealInputdpBuiMeasured building static pressure difference, relative to ambient (positive if pressurized) [Pa]
input RealInputVAirSup_flowMeasured AHU supply airflow rate [m3/s]
input RealInputVAirRet_flowMeasured AHU return airflow rate [m3/s]
input RealInputuCooCoi_actualActual cooling coil valve position [1]
input RealInputuHeaCoi_actualActual heating coil valve position [1]
output RealOutputTAirSupSetAHU supply air temperature setpoint [K]
output RealOutputVEffAirOut_flow_minEffective minimum outdoor airflow setpoint [m3/s]
output RealOutputyMinOutDamMinimum outdoor air damper commanded position [1]
output BooleanOutputy1MinOutDamMinimum outdoor air damper command on
output RealOutputyRetDamReturn air damper commanded position [1]
output RealOutputyRelDamRelief air damper commanded position [1]
output RealOutputyOutDamEconomizer outdoor air damper commanded position [1]
output BooleanOutputy1EneCHWPumCommanded on to energize chilled water pump
output BooleanOutputy1SupFanSupply fan command on
output RealOutputySupFanAir handler supply fan commanded speed [1]
output BooleanOutputy1RetFanReturn fan commanded on
output RealOutputyRetFanReturn fan commanded speed [1]
output BooleanOutputy1RelFanRelief fan commanded on
output RealOutputyRelFanRelief fan commanded speed [1]
output RealOutputyCooCoiCooling coil valve commanded position [1]
output RealOutputyHeaCoiHeating coil valve commanded position [1]
output IntegerOutputyAlaAlarm level
output RealOutputyDpBuiBuilding static pressure difference, relative to ambient (positive if pressurized) [Pa]
output RealOutputdpDisSetReturn fan discharge static pressure setpoint [Pa]
output IntegerOutputyChiWatResReqChilled water reset request
output IntegerOutputyChiPlaReqChiller plant request
output IntegerOutputyHotWatResReqHot water reset request
output IntegerOutputyHotWatPlaReqHot water plant request

Modelica definition

block Controller "Multizone VAV air handling unit controller" parameter Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016 "Energy standard, ASHRAE 90.1 or Title 24"; parameter Types.VentilationStandard venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Ventilation standard, ASHRAE 62.1 or Title 24"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone ashCliZon= Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Not_Specified "ASHRAE climate zone"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone tit24CliZon= Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Not_Specified "California Title 24 climate zone"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat freSta=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat "Type of freeze stat"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection minOADes=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow "Type of outdoor air section"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes. BarometricRelief "Type of building pressure control system"; parameter Boolean have_ahuRelFan=true "True: relief fan is part of AHU; False: the relief fans group that may associate multiple AHUs"; parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer. FixedDryBulb "Economizer high limit control device"; parameter Real aveTimRan(unit="s")=5 "Time horizon over which the outdoor air flow measurement is averaged"; parameter Boolean have_hotWatCoi=true "True: the AHU has hot water heating coil"; parameter Boolean have_eleHeaCoi=false "True: the AHU has electric heating coil"; parameter Boolean have_perZonRehBox=false "Check if there is any VAV-reheat boxes on perimeter zones"; parameter Real VUncDesOutAir_flow(unit="m3/s")=0 "Uncorrected design outdoor airflow rate, including diversity where applicable. It can be determined using the 62MZCalc spreadsheet from ASHRAE 62.1 User's Manual"; parameter Real VDesTotOutAir_flow(unit="m3/s")=0 "Design total outdoor airflow rate. It can be determined using the 62MZCalc spreadsheet from ASHRAE 62.1 User's Manual"; parameter Real VAbsOutAir_flow(unit="m3/s")=0 "Design outdoor airflow rate when all zones with CO2 sensors or occupancy sensors are unpopulated. Needed when complying with Title 24 requirements"; parameter Real VDesOutAir_flow(unit="m3/s")=0 "Design minimum outdoor airflow rate with the areas served by the system are occupied at their design population, including diversity where applicable. Needed when complying with Title 24 requirements"; // ----------- parameters for fan speed control ----------- parameter Real pIniSet( unit="Pa", displayUnit="Pa")=120 "Initial pressure setpoint for fan speed control"; parameter Real pMinSet( unit="Pa", displayUnit="Pa")=25 "Minimum pressure setpoint for fan speed control"; parameter Real pMaxSet( unit="Pa", displayUnit="Pa")=1000 "Duct design maximum static pressure. It is the Max_DSP shown in Section 3.2.1.1 of Guideline 36"; parameter Real pDelTim(unit="s")=600 "Delay time after which trim and respond is activated"; parameter Real pSamplePeriod(unit="s")=120 "Sample period"; parameter Integer pNumIgnReq=2 "Number of ignored requests"; parameter Real pTriAmo( unit="Pa", displayUnit="Pa")=-12.0 "Trim amount"; parameter Real pResAmo( unit="Pa", displayUnit="Pa")=15 "Respond amount (must be opposite in to trim amount)"; parameter Real pMaxRes( unit="Pa", displayUnit="Pa")=32 "Maximum response per time interval (same sign as respond amount)"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController fanSpeCon=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Supply fan speed PID controller"; parameter Real kFanSpe(unit="1")=0.1 "Gain of supply fan speed PID controller"; parameter Real TiFanSpe(unit="s")=60 "Time constant of integrator block for supply fan speed PID controller"; parameter Real TdFanSpe(unit="s")=0.1 "Time constant of derivative block for supply fan speed PID controller"; final parameter Real supFanSpe_max=1 "Maximum allowed supply fan speed"; parameter Real supFanSpe_min=0.1 "Lowest allowed supply fan speed if fan is on"; // ----------- parameters for supply air temperature control ----------- parameter Real TSupCoo_min( unit="K", displayUnit="degC")=285.15 "Lowest cooling supply air temperature setpoint when the outdoor air temperature is at the higher value of the reset range and above"; parameter Real TSupCoo_max( unit="K", displayUnit="degC")=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 TOut_min( unit="K", displayUnit="degC")=289.15 "Lower value of the outdoor air temperature reset range. Typically value is 16 degC (60 degF)"; parameter Real TOut_max( unit="K", displayUnit="degC")=294.15 "Higher value of the outdoor air temperature reset range. Typically value is 21 degC (70 degF)"; parameter Real TSupWarUpSetBac( unit="K", displayUnit="degC")=308.15 "Supply temperature in warm up and set back mode"; parameter Real delTimSupTem(unit="s")=600 "Delay timer"; parameter Real samPerSupTem(unit="s")=120 "Sample period of component"; parameter Integer ignReqSupTem=2 "Number of ignorable requests for TrimResponse logic"; parameter Real triAmoSupTem( unit="K", displayUnit="K")=0.1 "Trim amount"; parameter Real resAmoSupTem( unit="K", displayUnit="K")=-0.2 "Response amount"; parameter Real maxResSupTem( unit="K", displayUnit="K")=-0.6 "Maximum response per time interval"; // ----------- parameters for heating and cooling coil control ----------- parameter Buildings.Controls.OBC.CDL.Types.SimpleController valCon=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller for coil valves control"; parameter Real kVal(unit="1")=0.05 "Gain of controller for valve control"; parameter Real TiVal(unit="s")=600 "Time constant of integrator block for valve control"; parameter Real TdVal(unit="s")=0.1 "Time constant of derivative block for valve control"; parameter Real uHeaCoi_max=-0.25 "Upper limit of controller signal when heating coil is off. Require -1 < uHea_max < uCoo_min < 1."; parameter Real uCooCoi_min=0.25 "Lower limit of controller signal when cooling coil is off. Require -1 < uHea_max < uCoo_min < 1."; // ----------- parameters for economizer control ----------- // Limits parameter Buildings.Controls.OBC.CDL.Types.SimpleController minOAConTyp= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of minimum outdoor air controller"; parameter Real kMinOA(unit="1")=0.03 "Gain of controller"; parameter Real TiMinOA(unit="s")=120 "Time constant of integrator block"; parameter Real TdMinOA(unit="s")=0.1 "Time constant of derivative block"; parameter Boolean have_CO2Sen=false "True: some zones have CO2 sensor"; parameter Real dpAbsMinOutDam=5 "Absolute minimum pressure difference across the minimum outdoor air damper. It provides the absolute minimum outdoor airflow"; parameter Real dpDesMinOutDam(unit="Pa")=20 "Design minimum pressure difference across the minimum outdoor air damper. It provides the design minimum outdoor airflow"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController dpConTyp= 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 uRetDam_min(unit="1")=0.5 "Loop signal value to start decreasing the maximum return air damper position"; // Enable parameter Real delTOutHis( unit="K", displayUnit="K")=1 "Delta between the temperature hysteresis high and low limit"; parameter Real delEntHis(unit="J/kg")=1000 "Delta between the enthalpy hysteresis high and low limits"; parameter Real retDamFulOpeTim(unit="s")=180 "Time period to keep return air damper fully open before releasing it for minimum outdoor airflow control at disable to avoid pressure fluctuations"; parameter Real disDel(unit="s")=15 "Short time delay before closing the outdoor air damper at disable to avoid pressure fluctuations"; // Commissioning 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"; parameter Real minOutDamPhy_max(unit="1")=1 "Physically fixed maximum position of the minimum outdoor air damper"; parameter Real minOutDamPhy_min(unit="1")=0 "Physically fixed minimum position of the minimum outdoor air damper"; parameter Real uHeaMax(unit="1")=-0.25 "Lower limit of controller input when outdoor damper opens (see diagram)"; parameter Real uCooMin(unit="1")=+0.25 "Upper limit of controller input when return damper is closed (see diagram)"; // ----------- parameters for freeze protection ----------- parameter Integer minHotWatReq=2 "Minimum heating hot-water plant request to active the heating plant"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController freProHeaCoiCon= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Freeze protection heating coil controller"; parameter Real kFrePro(unit="1")=0.05 "Gain of coil controller"; parameter Real TiFrePro(unit="s")=120 "Time constant of integrator block"; parameter Real TdFrePro(unit="s")=0.1 "Time constant of derivative block"; parameter Real yMaxFrePro=1 "Upper limit of output"; parameter Real yMinFrePro=0 "Lower limit of output"; // ----------- Building pressure control parameters ----------- parameter Real dpBuiSet( unit="Pa", displayUnit="Pa")=12 "Building static pressure difference relative to ambient (positive to pressurize the building)"; parameter Real kRelDam(unit="1")=0.5 "Gain, applied to building pressure control error normalized with dpBuiSet"; // parameter Real kRelFan(unit="1")=1 // "Gain, normalized using dpBuiSet" // annotation (Dialog(tab="Pressure control", group="Relief fans", // enable=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan)); // parameter Real minSpeRelFan(unit="1")=0.1 // "Minimum relief fan speed" // annotation (Dialog(tab="Pressure control", group="Relief fans", // enable=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan)); parameter Real difFloSet(unit="m3/s")=0.1 "Airflow differential between supply air and return air fans required to maintain building pressure at desired pressure"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController retFanCon=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller for return fan"; parameter Real kRetFan(unit="1")=1 "Gain, normalized using dpBuiSet"; parameter Real TiRetFan(unit="s")=0.5 "Time constant of integrator block"; parameter Real TdRetFan(unit="s")=0.1 "Time constant of derivative block"; final parameter Real retFanSpe_max=1 "Maximum return fan speed"; parameter Real retFanSpe_min=0.1 "Minimum return fan speed"; parameter Real retFacA = 0.5 "Factor for mapping the commanded return fan speed to return airflow when the return flow is calculated"; parameter Real retFacB = 0 "Factor for mapping the commanded return fan speed to return airflow when the return flow is calculated"; parameter Real p_rel_RetFan_min( unit="Pa", displayUnit="Pa")=2.4 "Minimum return fan discharge static pressure difference setpoint"; parameter Real p_rel_RetFan_max( unit="Pa", displayUnit="Pa")=40 "Maximum return fan discharge static pressure difference setpoint"; parameter Real relFanSpe_min( final min=0, final max=1)= 0.1 "Relief fan minimum speed"; parameter Real kRelFan(unit="1")=1 "Gain of relief fan controller, normalized using dpBuiSet"; // ----------- Advanced parameters ----------- parameter Real Thys=0.25 "Hysteresis for checking temperature difference"; parameter Real posHys=0.05 "Hysteresis for checking valve position difference"; parameter Real hys = 0.005 "Hysteresis for checking the relief fan controller output value"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uAhuOpeMod "Operation mode for AHU operation"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uZonPreResReq "Zone static pressure reset requests"; Buildings.Controls.OBC.CDL.Interfaces.RealInput dpDuc( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") "Measured duct static pressure"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Outdoor air temperature"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uZonTemResReq "Zone cooling supply air temperature reset request"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SupFan "Supply fan status"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TAirSup( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumAdjPopBreZon_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Sum of the adjusted population component breathing zone flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumAdjAreBreZon_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Sum of the adjusted area component breathing zone flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumZonPri_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Sum of the zone primary airflow rates for all zones in all zone groups that are in occupied mode"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutAirFra_max( final min=0, final unit="1") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Maximum zone outdoor air fraction, equals to the maximum of primary outdoor air fraction of all zones"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumZonAbsMin_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24_2016 "Sum of the zone absolute minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VSumZonDesMin_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24_2016 "Sum of the zone design minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VAirOut_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if (minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow or minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper) "Measured outdoor air volumetric flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSupFan_actual( final min=0, final max=1, final unit="1") if (minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow or minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure) "Actual supply fan speed"; 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_2016) "Maximum zone CO2 control loop output"; Buildings.Controls.OBC.CDL.Interfaces.RealInput dpMinOutDam( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") if minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure "Measured pressure difference across the minimum outdoor air damper"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TAirRet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") if ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb "Used only for fixed plus differential dry bulb temperature high limit cutoff"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hAirOut( final unit="J/kg", final quantity="SpecificEnergy") if (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb) "Outdoor air enthalpy"; Buildings.Controls.OBC.CDL.Interfaces.RealInput hAirRet( final unit="J/kg", final quantity="SpecificEnergy") if (eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016 and ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb) "OA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1FreSta if (freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Connected_to_BAS_NO or freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Connected_to_BAS_NC) "Freeze protection stat signal. If the stat is normally open (the input is normally true), when enabling freeze protection, the input becomes false. If the stat is normally close, vice versa."; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1SofSwiRes if (freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat or freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Hardwired_to_equipment) "Freeze protection reset signal from software switch"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1RelFan if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan and not have_ahuRelFan "Relief fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uRelFan( final min=0, final max=1, final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan and not have_ahuRelFan "Relief fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TAirMix( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") if have_hotWatCoi "Measured mixed air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput dpBui( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Measured building static pressure difference, relative to ambient (positive if pressurized)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VAirSup_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir "Measured AHU supply airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput VAirRet_flow( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir "Measured AHU return airflow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uCooCoi_actual( final min=0, final max=1, final unit="1") "Actual cooling coil valve position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uHeaCoi_actual( final min=0, final max=1, final unit="1") if have_hotWatCoi "Actual heating coil valve position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TAirSupSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "AHU supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput VEffAirOut_flow_min( final min=0, final unit="m3/s", final quantity="VolumeFlowRate") if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Effective minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yMinOutDam( final min=0, final max=1, final unit="1") if minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow "Minimum outdoor air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1MinOutDam if minOADes == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure "Minimum outdoor air damper command on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetDam( final min=0, final max=1, final unit="1") "Return air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRelDam( final min=0, final max=1, final unit="1") if not ((buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan and not have_ahuRelFan) or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.BarometricRelief) "Relief air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutDam( final min=0, final max=1, final unit="1") "Economizer outdoor air damper commanded position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1EneCHWPum "Commanded on to energize chilled water pump"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1SupFan "Supply fan command on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput ySupFan( final min=0, final max=1, final unit="1") "Air handler supply fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1RetFan if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Return fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRetFan( final min=0, final max=1, final unit="1") if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp) "Return fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1RelFan if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Relief fan commanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRelFan( final min=0, final max=1, final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Relief fan commanded speed"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCooCoi( final min=0, final max=1, final unit="1") "Cooling coil valve commanded position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHeaCoi( final min=0, final max=1, final unit="1") if have_hotWatCoi "Heating coil valve commanded position"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yAla "Alarm level"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDpBui( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan and have_ahuRelFan) or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp "Building static pressure difference, relative to ambient (positive if pressurized)"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput dpDisSet( final unit="Pa", displayUnit="Pa", final quantity="PressureDifference") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp "Return fan discharge static pressure setpoint"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yChiWatResReq "Chilled water reset request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yChiPlaReq "Chiller plant request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yHotWatResReq if have_hotWatCoi "Hot water reset request"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yHotWatPlaReq if have_hotWatCoi "Hot water plant request"; Buildings.Controls.OBC.CDL.Integers.GreaterThreshold freProMod "Check if it is in freeze protection mode"; Buildings.Controls.OBC.CDL.Integers.Switch intSwi if have_hotWatCoi "Hot water plant request"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection frePro( final buiPreCon=buiPreCon, final minOADes=minOADes, final freSta=freSta, final have_hotWatCoi=have_hotWatCoi, final minHotWatReq=minHotWatReq, final heaCoiCon=freProHeaCoiCon, final k=kFrePro, final Ti=TiFrePro, final Td=TdFrePro, final yMax=yMaxFrePro, final yMin=yMinFrePro, final Thys=Thys) "Freeze protection"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.PlantRequests plaReq( final have_hotWatCoi=have_hotWatCoi, final Thys=Thys, final posHys=posHys) "Plant requests"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller ecoCon( final minOADes=minOADes, final buiPreCon=buiPreCon, final eneStd=eneStd, final ecoHigLimCon=ecoHigLimCon, final ashCliZon=ashCliZon, final tit24CliZon=tit24CliZon, final aveTimRan=aveTimRan, final minSpe=supFanSpe_min, final minOAConTyp=minOAConTyp, final kMinOA=kMinOA, final TiMinOA=TiMinOA, final TdMinOA=TdMinOA, final venStd=venStd, final dpDesMinOutDam=dpDesMinOutDam, final dpConTyp=dpConTyp, final kDp=kDp, final TiDp=TiDp, final TdDp=TdDp, final uRetDam_min=uRetDam_min, final retDamPhy_max=retDamPhy_max, final retDamPhy_min=retDamPhy_min, final outDamPhy_max=outDamPhy_max, final outDamPhy_min=outDamPhy_min, final minOutDamPhy_max=minOutDamPhy_max, final minOutDamPhy_min=minOutDamPhy_min, final delTOutHis=delTOutHis, final delEntHis=delEntHis, final retDamFulOpeTim=retDamFulOpeTim, final disDel=disDel, final uHeaMax=uHeaMax, final uCooMin=uCooMin, final uOutDamMax=(uHeaMax + uCooMin)/2, final uRetDamMin=(uHeaMax + uCooMin)/2, final have_CO2Sen=have_CO2Sen, final dpAbsMinOutDam=dpAbsMinOutDam) "Economizer controller"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan conSupFan( final have_perZonRehBox=have_perZonRehBox, final iniSet=pIniSet, final minSet=pMinSet, final maxSet=pMaxSet, final delTim=pDelTim, final samplePeriod=pSamplePeriod, final numIgnReq=pNumIgnReq, final triAmo=pTriAmo, final resAmo=pResAmo, final maxRes=pMaxRes, final controllerType=fanSpeCon, final k=kFanSpe, final Ti=TiFanSpe, final Td=TdFanSpe, final maxSpe=supFanSpe_max, final minSpe=supFanSpe_min) "Supply fan speed setpoint"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals supSig( final have_heaCoi=have_hotWatCoi or have_eleHeaCoi, final controllerType=valCon, final kTSup=kVal, final TiTSup=TiVal, final TdTSup=TdVal, final uHea_max=uHeaCoi_max, final uCoo_min=uCooCoi_min) "Heating and cooling valve position"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyTemperature conTSupSet( final TSupCoo_min=TSupCoo_min, final TSupCoo_max=TSupCoo_max, final TOut_min=TOut_min, final TOut_max=TOut_max, final TSupWarUpSetBac=TSupWarUpSetBac, final delTim=delTimSupTem, final samplePeriod=samPerSupTem, final numIgnReq=ignReqSupTem, final triAmo=triAmoSupTem, final resAmo=resAmoSupTem, final maxRes=maxResSupTem) "Supply temperature setpoint"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.ASHRAE62_1.AHU ashOutAirSet( final minOADes=minOADes, final VUncDesOutAir_flow=VUncDesOutAir_flow, final VDesTotOutAir_flow=VDesTotOutAir_flow) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016 "Minimum outdoor airflow setpoint, when complying with ASHRAE 62.1 requirements"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefDamper relDam( final dpBuiSet=dpBuiSet, final k=kRelDam) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper "Relief damper control for AHUs using actuated dampers without fan"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure retFanDpCon( final dpBuiSet=dpBuiSet, final p_rel_RetFan_min=p_rel_RetFan_min, final p_rel_RetFan_max=p_rel_RetFan_max, final disSpe_min=retFanSpe_min, final disSpe_max=retFanSpe_max, final conTyp=retFanCon, final k=kRetFan, final Ti=TiRetFan, final Td=TdRetFan) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp "Return fan control with direct building pressure control, using the minimum outdoor air damper"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking retFanAirTra( final difFloSet=difFloSet, final conTyp=retFanCon, final k=kRetFan, final Ti=TiRetFan, final Td=TdRetFan, final maxSpe=retFanSpe_max, final minSpe=retFanSpe_min) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir "Return fan control for AHUs using return fan with airflow tracking"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.Title24.AHU tit24OutAirSet( final minOADes=minOADes, final have_CO2Sen=have_CO2Sen, final VAbsOutAir_flow=VAbsOutAir_flow, final VDesOutAir_flow=VDesOutAir_flow) if venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24_2016 "Minimum outdoor airflow setpoint, when complying with Title 24 requirements"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( final p=retFacB) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir "Mapping commanded fan speed to return flow"; Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( final k=retFacA) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir "Mapping commanded fan speed to return flow"; Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=1) if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanCalculatedAir "Gain factor"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noEneStd( final k=eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.Not_Specified) "No energy standard"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Logical not"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes( final message="Warning: Energy standard is not specified!") "Warning when the energy standard is not specified"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noVenStd( final k=venStd == Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.Not_Specified) "No ventilation standard"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( final message="Warning: Ventilation standard is not specified!") "Warning when the ventilation standard is not specified"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noAshCli( final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Not_Specified) "No ASHRAE climate zone"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noTit24Cli( final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Not_Specified) "No Title 24 climate zone"; Buildings.Controls.OBC.CDL.Logical.And noCli "Climate zone is not specified"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( final message="Warning: Climate zone is not specified!") "Warning when the climate zone is not specified"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFan relFanCon( final relFanSpe_min=relFanSpe_min, final dpBuiSet=dpBuiSet, final k=kRelFan, final hys=hys) if have_ahuRelFan and buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan "Control of relief fan when it is part of AHU"; equation connect(conSupFan.uZonPreResReq, uZonPreResReq); connect(dpDuc, conSupFan.dpDuc); connect(conTSupSet.TOut, TOut); connect(conTSupSet.uZonTemResReq, uZonTemResReq); connect(u1SupFan, conTSupSet.u1SupFan); connect(u1SupFan, supSig.u1SupFan); connect(conTSupSet.TAirSupSet, supSig.TAirSupSet); connect(supSig.TAirSup, TAirSup); connect(uOutAirFra_max, ashOutAirSet.uOutAirFra_max); connect(plaReq.yChiWatResReq, yChiWatResReq); connect(plaReq.yChiPlaReq, yChiPlaReq); connect(plaReq.yHotWatResReq, yHotWatResReq); connect(plaReq.uCooCoi_actual, uCooCoi_actual); connect(uHeaCoi_actual, plaReq.uHeaCoi_actual); connect(ashOutAirSet.effOutAir_normalized, ecoCon.VOutMinSet_flow_normalized); connect(ecoCon.uSupFan_actual, uSupFan_actual); connect(ecoCon.dpMinOutDam, dpMinOutDam); connect(supSig.uTSup, ecoCon.uTSup); connect(TOut, ecoCon.TOut); connect(TAirRet, ecoCon.TAirRet); connect(ecoCon.hAirOut, hAirOut); connect(hAirRet, ecoCon.hAirRet); connect(u1SupFan, ecoCon.u1SupFan); connect(ecoCon.yOutDam_min, frePro.uOutDamPosMin); connect(TAirSup, frePro.TAirSup); connect(frePro.u1FreSta, u1FreSta); connect(frePro.u1SofSwiRes, u1SofSwiRes); connect(frePro.uRelFan, uRelFan); connect(frePro.TAirMix, TAirMix); connect(ashOutAirSet.VEffAirOut_flow_min, VEffAirOut_flow_min); connect(ecoCon.yRelDam, yRelDam); connect(frePro.yFreProSta, ecoCon.uFreProSta); connect(ecoCon.yOutDam, frePro.uOutDam); connect(ecoCon.yRetDam, frePro.uRetDam); connect(supSig.yHeaCoi, frePro.uHeaCoi); connect(conSupFan.ySupFan, frePro.uSupFan); connect(supSig.yCooCoi, frePro.uCooCoi); connect(frePro.y1EneCHWPum, y1EneCHWPum); connect(frePro.yRetDam, yRetDam); connect(frePro.yOutDam, yOutDam); connect(ecoCon.yMinOutDam, frePro.uMinOutDam); connect(frePro.yMinOutDam, yMinOutDam); connect(frePro.ySupFan, ySupFan); connect(frePro.yRetFan, yRetFan); connect(frePro.yCooCoi, yCooCoi); connect(frePro.yHeaCoi, yHeaCoi); connect(intSwi.y, yHotWatPlaReq); connect(plaReq.yHotWatPlaReq, intSwi.u3); connect(freProMod.y, intSwi.u2); connect(frePro.yRelFan, yRelFan); connect(relDam.dpBui, dpBui); connect(relDam.yRelDam, yRelDam); connect(retFanAirTra.VAirSup_flow, VAirSup_flow); connect(retFanAirTra.VAirRet_flow, VAirRet_flow); connect(dpBui, retFanDpCon.dpBui); connect(retFanDpCon.yDpBui, yDpBui); connect(retFanDpCon.dpDisSet, dpDisSet); connect(u1SupFan, relDam.u1SupFan); connect(u1SupFan, retFanAirTra.u1SupFan); connect(u1SupFan, retFanDpCon.u1SupFan); connect(TAirSup, plaReq.TAirSup); connect(conTSupSet.TAirSupSet, plaReq.TAirSupSet); connect(frePro.yHotWatPlaReq, intSwi.u1); connect(retFanAirTra.yRetFan, frePro.uRetFan); connect(retFanDpCon.yRetFan, frePro.uRetFan); connect(frePro.yAla, yAla); connect(conTSupSet.TAirSupSet, TAirSupSet); connect(tit24OutAirSet.effAbsOutAir_normalized, ecoCon.effAbsOutAir_normalized); connect(tit24OutAirSet.effDesOutAir_normalized, ecoCon.effDesOutAir_normalized); connect(uCO2Loo_max, ecoCon.uCO2Loo_max); connect(uCO2Loo_max, tit24OutAirSet.uCO2Loo_max); connect(tit24OutAirSet.effOutAir_normalized, ecoCon.VOutMinSet_flow_normalized); connect(VAirOut_flow, tit24OutAirSet.VAirOut_flow); connect(VAirOut_flow, ashOutAirSet.VAirOut_flow); connect(ashOutAirSet.outAir_normalized, ecoCon.VOut_flow_normalized); connect(tit24OutAirSet.outAir_normalized, ecoCon.VOut_flow_normalized); connect(VSumZonDesMin_flow, tit24OutAirSet.VSumZonDesMin_flow); connect(VSumZonAbsMin_flow, tit24OutAirSet.VSumZonAbsMin_flow); connect(VSumZonPri_flow, ashOutAirSet.VSumZonPri_flow); connect(VSumAdjAreBreZon_flow, ashOutAirSet.VSumAdjAreBreZon_flow); connect(VSumAdjPopBreZon_flow, ashOutAirSet.VSumAdjPopBreZon_flow); connect(uAhuOpeMod, conSupFan.uOpeMod); connect(uAhuOpeMod, conTSupSet.uOpeMod); connect(uAhuOpeMod, ecoCon.uOpeMod); connect(ecoCon.y1MinOutDam, frePro.u1MinOutDam); connect(frePro.y1MinOutDam, y1MinOutDam); connect(retFanDpCon.yRelDam, yRelDam); connect(VSumZonPri_flow, gai1.u); connect(retFanAirTra.yRetFan, gai.u); connect(gai.y, addPar.u); connect(addPar.y, retFanAirTra.VAirRet_flow); connect(gai1.y, retFanAirTra.VAirSup_flow); connect(u1RelFan, frePro.u1RelFan); connect(retFanAirTra.y1RetFan, frePro.u1RetFan); connect(retFanDpCon.y1RetFan, frePro.u1RetFan); connect(frePro.y1RelFan, y1RelFan); connect(frePro.yFreProSta, freProMod.u); connect(conSupFan.y1SupFan, frePro.u1SupFan); connect(frePro.y1SupFan, y1SupFan); connect(frePro.y1RetFan, y1RetFan); connect(noEneStd.y, not3.u); connect(not3.y, assMes.u); connect(noVenStd.y, not1.u); connect(not1.y, assMes1.u); connect(noAshCli.y, noCli.u1); connect(noTit24Cli.y, noCli.u2); connect(noCli.y, not2.u); connect(not2.y, assMes2.u); connect(ecoCon.yEnaMinOut, retFanDpCon.u1MinOutAirDam); connect(dpBui, relFanCon.dpBui); connect(u1SupFan, relFanCon.u1SupFan); connect(relFanCon.yDpBui, yDpBui); connect(relFanCon.yRelFan, frePro.uRelFan); connect(relFanCon.y1RelFan, frePro.u1RelFan); connect(relFanCon.yDam, yRelDam); end Controller;