This package contains generic sequences that would be needed for both AHU and
terminal units control.
This block outputs the air economizer high limits according to the energy standard,
device type and climate zone. The implementation is according to the Section 5.1.17 of ASHRAE
Guideline 36, May 2020.
When ASHRAE 90.1-2016 is used.
When California Title 24-2016 is used.
block AirEconomizerHighLimits
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard eneStd
;
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer ecoHigLimCon
;
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Not_Specified
;
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone tit24CliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Not_Specified
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TRet(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
if (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb
or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb)
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput hRet(
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)
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput TCut(
final quantity="ThermodynamicTemperature",
final unit="K",
displayUnit="degC")
if not eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.Not_Specified
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput hCut(
final quantity="SpecificEnergy",
final unit="J/kg")
if (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb
or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fixDryBul(
final k=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant difDryBul(
final k=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fixEntFixDryBul(
final k=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant difEntFixDryBul(
final k=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash1A(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash1B(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1B)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash2A(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_2A)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash2B(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_2B)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash3A(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_3A)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash3B(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_3B)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash3C(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_3C)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash4A(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_4A)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash4B(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_4B)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash4C(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_4C)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash5A(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_5A)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash5B(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_5B)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash5C(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_5C)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash6A(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_6A)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash6B(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_6B)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash7(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_7)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant ash8(
final k=ashCliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_8)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or3
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or1
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or2
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or4
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or or6
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or or7
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or or5
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and2
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and1
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and3
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(
final k=273.15 + 24)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi1
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con1(
final k=273.15 + 21)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi2
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con2(
final k=273.15 + 18)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or10
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or11
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or12
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or13
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or14
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or15
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi3
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or8
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Or or9
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and4
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Utilities.Assert assMes(
final message="Warning: Differential dry bulb high-limit-control device is not allowed in climate zone 1A, 2A, 3A and 4A!")
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Not not1
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con3(
final k=273.15 + 24)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi4
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con4(
final k=66000)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon1(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_1)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon2(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_2)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon3(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_3)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon4(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_4)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon5(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_5)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon6(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_6)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon8(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_8)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon9(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_9)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon10(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_10)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon11(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_11)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon12(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_12)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon13(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_13)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon14(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_14)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon15(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_15)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titZon16(
final k=tit24CliZon == Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_16)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or16
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or17
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or18
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or20
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and5
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi5
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con5(
final k=273.15 + 24)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or19
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and6
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi6
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con6(
final k=273.15 + 23)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Or3 or21
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and7
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con7(
final k=273.15 + 22)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi7
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con8(
final k=273.15 + 21)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi8
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and8
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi9
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and9
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi10
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(
final p=-1)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi11
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and10
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(
final p=-2)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi12
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(
final p=-3)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con9(
final k=273.15 + 24)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea(
final realTrue=66000)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant titEngSta(
final k=eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and11
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Utilities.Assert assMes1(
final message="Warning: When Title 24 energy standard is used, the device type cannot be differential enthalpy with fixed dry bulb!")
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.Not not2
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con10(
final k=0)
if (eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
and not ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con11(
final k=0)
if not (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb
or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fixDryBulDifDryBul(
final k=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb)
;
Buildings.Controls.OBC.CDL.Logical.And and12
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Min min1
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi13
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and13
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Min min2
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con12(
final k=273.15 + 21)
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi14
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and14
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.Not not3
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Utilities.Assert assMes2(
final message="Warning: Fixed dry bulb with differential dry bulb high-limit-control device is not allowed in climate zone 1A, 2A, 3A and 4A!")
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016
;
Buildings.Controls.OBC.CDL.Logical.And and15
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi15
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Min min3
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and16
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Min min4
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi16
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Logical.And and17
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi17
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Min min5
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi18
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
Buildings.Controls.OBC.CDL.Continuous.Min min6
if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24_2016
;
equation
connect(ash1B.y, or3.u1);
connect(ash2B.y, or3.u2);
connect(ash3B.y, or3.u3);
connect(ash3C.y, or1.u1);
connect(ash4B.y, or1.u2);
connect(ash4C.y, or1.u3);
connect(ash5B.y, or2.u1);
connect(ash5C.y, or2.u2);
connect(ash6B.y, or2.u3);
connect(or3.y, or4.u1);
connect(or1.y, or4.u2);
connect(or2.y, or4.u3);
connect(ash7.y, or6.u1);
connect(ash8.y, or6.u2);
connect(or4.y, or7.u1);
connect(or6.y, or7.u2);
connect(ash5A.y, or5.u1);
connect(ash6A.y, or5.u2);
connect(or7.y, and2.u1);
connect(fixDryBul.y, and2.u2);
connect(fixDryBul.y, and1.u2);
connect(or5.y, and1.u1);
connect(and2.y, swi.u2);
connect(con.y, swi.u1);
connect(con1.y, swi1.u1);
connect(and1.y, swi1.u2);
connect(fixDryBul.y, swi2.u2);
connect(con2.y, swi2.u1);
connect(swi2.y, swi1.u3);
connect(ash1B.y, or10.u1);
connect(ash2B.y, or10.u2);
connect(ash3B.y, or10.u3);
connect(ash3C.y, or11.u1);
connect(ash4B.y, or11.u2);
connect(ash4C.y, or11.u3);
connect(ash5A.y, or12.u1);
connect(ash5B.y, or12.u2);
connect(ash5C.y, or12.u3);
connect(ash6A.y, or13.u1);
connect(ash6B.y, or13.u2);
connect(ash7.y, or13.u3);
connect(or10.y, or14.u1);
connect(or11.y, or14.u2);
connect(or12.y, or14.u3);
connect(or14.y, or15.u1);
connect(or13.y, or15.u2);
connect(ash8.y, or15.u3);
connect(or15.y, and3.u1);
connect(difDryBul.y, and3.u2);
connect(and3.y, swi3.u2);
connect(TRet, swi3.u1);
connect(ash1A.y, or8.u3);
connect(ash2A.y, or8.u2);
connect(ash3A.y, or8.u1);
connect(or8.y, or9.u2);
connect(ash4A.y, or9.u1);
connect(or9.y, and4.u1);
connect(difDryBul.y, and4.u2);
connect(and4.y, not1.u);
connect(not1.y, assMes.u);
connect(swi1.y, swi.u3);
connect(swi3.y, swi2.u3);
connect(con4.y, swi4.u1);
connect(fixEntFixDryBul.y, swi4.u2);
connect(hRet, swi4.u3);
connect(swi.y, TCut);
connect(swi4.y, hCut);
connect(titZon1.y, or16.u1);
connect(titZon3.y, or16.u2);
connect(titZon5.y, or16.u3);
connect(titZon11.y, or17.u1);
connect(titZon12.y, or17.u2);
connect(titZon13.y, or17.u3);
connect(titZon14.y, or18.u1);
connect(titZon15.y, or18.u2);
connect(titZon16.y, or18.u3);
connect(or16.y, or20.u1);
connect(or17.y, or20.u2);
connect(or18.y, or20.u3);
connect(or20.y, and5.u1);
connect(fixDryBul.y, and5.u2);
connect(and5.y, swi5.u2);
connect(con5.y, swi5.u1);
connect(titZon2.y, or19.u1);
connect(titZon4.y, or19.u2);
connect(titZon10.y, or19.u3);
connect(or19.y, and6.u1);
connect(fixDryBul.y, and6.u2);
connect(and6.y, swi6.u2);
connect(con6.y, swi6.u1);
connect(swi6.y, swi5.u3);
connect(and7.y, swi7.u2);
connect(con7.y, swi7.u1);
connect(titZon6.y, or21.u1);
connect(or21.y, and7.u1);
connect(titZon8.y, or21.u2);
connect(titZon9.y, or21.u3);
connect(fixDryBul.y, and7.u2);
connect(swi7.y, swi6.u3);
connect(con8.y, swi8.u1);
connect(fixDryBul.y, swi8.u2);
connect(or20.y, and8.u1);
connect(difDryBul.y, and8.u2);
connect(and8.y, swi9.u2);
connect(TRet, swi9.u1);
connect(swi10.y, swi9.u3);
connect(or19.y, and9.u1);
connect(difDryBul.y, and9.u2);
connect(TRet, addPar.u);
connect(and9.y, swi10.u2);
connect(addPar.y, swi10.u1);
connect(and10.y, swi11.u2);
connect(swi11.y, swi10.u3);
connect(or21.y, and10.u1);
connect(difDryBul.y, and10.u2);
connect(addPar1.y, swi11.u1);
connect(TRet, addPar1.u);
connect(addPar2.y, swi12.u1);
connect(swi12.y, swi11.u3);
connect(difDryBul.y, swi12.u2);
connect(TRet, addPar2.u);
connect(swi8.y, swi7.u3);
connect(swi9.y, swi8.u3);
connect(fixEntFixDryBul.y, booToRea.u);
connect(swi5.y, TCut);
connect(booToRea.y, hCut);
connect(titEngSta.y, and11.u2);
connect(difEntFixDryBul.y, and11.u1);
connect(not2.y, assMes1.u);
connect(and11.y, not2.u);
connect(con10.y, swi4.u3);
connect(con11.y, swi3.u1);
connect(con11.y, swi9.u1);
connect(con11.y, addPar.u);
connect(con11.y, addPar1.u);
connect(con11.y, addPar2.u);
connect(fixDryBulDifDryBul.y, and12.u2);
connect(or7.y, and12.u1);
connect(and12.y, swi13.u2);
connect(con3.y, min1.u1);
connect(TRet, min1.u2);
connect(min1.y, swi13.u1);
connect(swi13.y, swi3.u3);
connect(or5.y, and13.u2);
connect(fixDryBulDifDryBul.y, and13.u1);
connect(con12.y, min2.u1);
connect(TRet, min2.u2);
connect(and13.y, swi14.u2);
connect(min2.y, swi14.u1);
connect(con3.y, swi14.u3);
connect(swi14.y, swi13.u3);
connect(and14.y, not3.u);
connect(or9.y, and14.u2);
connect(not3.y, assMes2.u);
connect(fixDryBulDifDryBul.y, and14.u1);
connect(and15.y, swi15.u2);
connect(con5.y, min3.u1);
connect(TRet, min3.u2);
connect(min3.y, swi15.u1);
connect(fixDryBulDifDryBul.y, and15.u2);
connect(fixDryBulDifDryBul.y, and16.u2);
connect(or20.y, and15.u1);
connect(or19.y, and16.u1);
connect(con6.y, min4.u2);
connect(addPar.y, min4.u1);
connect(min4.y, swi16.u1);
connect(and16.y, swi16.u2);
connect(swi16.y, swi15.u3);
connect(con7.y, min5.u2);
connect(addPar1.y, min5.u1);
connect(min5.y, swi17.u1);
connect(and17.y, swi17.u2);
connect(or21.y, and17.u1);
connect(fixDryBulDifDryBul.y, and17.u2);
connect(swi17.y, swi16.u3);
connect(fixDryBulDifDryBul.y, swi18.u2);
connect(con8.y, min6.u2);
connect(addPar2.y, min6.u1);
connect(min6.y, swi18.u1);
connect(con9.y, swi18.u3);
connect(swi18.y, swi17.u3);
connect(swi15.y, swi12.u3);
connect(con11.y, min3.u2);
connect(con11.y, min1.u2);
connect(con11.y, min2.u2);
end AirEconomizerHighLimits;
This sequence checks if there is setpoint change and if the time-based suppression
has finished. The implementation is according to the Section 5.1.20 of ASHRAE
Guideline 36, May 2020.
Calculate a time-delay period after any change in setpoint based on the difference
between the controlled variable at the time of the change and the new setpoint. The
default time delay period shall be as follows:
This block implements the trim and respond logic according to ASHRAE guideline G36,
Section 5.1.14.3 and 5.1.14.4.
For each upstream system or plant set point being controlled by a trim and respond
loop, define the initial values in system or plant sequences. Values for trim,
respond, time step, etc. shall be tuned to provide stable control.