Skip to content

Commit

Permalink
Multizone AHU controller: Removed measured input, fixed singular issu…
Browse files Browse the repository at this point in the history
…es (#3531)

* removed coil valve position input connectors

* added revision note and conversion script

* added electric heating coil option

* added 2-position relief damper position output

* fixed singular error due to the choose of hardwired freezestat

* corrected validation model

* corrected condition for enabling returning air temperature input

* improved validation model

* changed pressure control enumeration name

* added coil type enumeration, changed pressure control type enumeration name

* added coil enumeration and removed the have_hotWatCoi or have_eleHeaCoi

* added conditional cooling coil types [ci skip]

* Differentiated heating and cooling coil enumeration

* Refactor templates for new enumerations from OBC [ci skip]

* corrected conditions enabled/disable blocks in freeze protection

* added boolean parameter to constrain heating coil options


---------

Co-authored-by: AntoineGautier <[email protected]>
  • Loading branch information
JayHuLBL and AntoineGautier authored Oct 24, 2023
1 parent 49f1132 commit dcf68dd
Show file tree
Hide file tree
Showing 64 changed files with 1,517 additions and 1,155 deletions.
11 changes: 7 additions & 4 deletions Buildings/Air/Systems/SingleZone/VAV/Examples/Guideline36.mo
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,18 @@ model Guideline36
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller con(
eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1,
venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1,

final VAreBreZon_flow=0.0144,
final VPopBreZon_flow=0.0075,
ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb,

ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_6B,

freSta=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat,
have_winSen=true,
have_CO2Sen=false,
buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.BarometricRelief,
buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.BarometricRelief,

have_locAdj=false,
ignDemLim=false,
kCoo=0.1,
Expand All @@ -36,11 +40,10 @@ model Guideline36
have_occSen=false,
TSup_max=343.15,
TSup_min=286.15,
outDamMinFloMinSpe = 0.2304,
outDamMinFloMinSpe=0.2304,
outDamMinFloMaxSpe=0.02304,
outDamDesFloMinSpe=0.4,
outDamDesFloMaxSpe=0.04)
"VAV controller"
outDamDesFloMaxSpe=0.04) "VAV controller"
annotation (Placement(transformation(extent={{-120,-20},{-80,60}})));

Buildings.Controls.OBC.CDL.Reals.Hysteresis hysChiPla(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,18 @@ block ZoneWithAHUG36
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller con(
eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1,
venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1,

VAreBreZon_flow=0.4989,
VPopBreZon_flow=0.2075,
ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb,

ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_6B,

freSta=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat,
have_winSen=false,
have_CO2Sen=false,
buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.BarometricRelief,
buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.BarometricRelief,

have_locAdj=false,
TSupDew_max=297.15,
maxHeaSpe=0.2,
Expand All @@ -71,8 +75,7 @@ block ZoneWithAHUG36
TSup_max=343.15,
TSup_min=286.15,
uLow=0,
uHigh=0.5)
"VAV controller"
uHigh=0.5) "VAV controller"
annotation (Placement(transformation(extent={{-80,-90},{-40,-10}})));
Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloor sinZonFlo(
redeclare package Medium = MediumA)
Expand Down
388 changes: 210 additions & 178 deletions Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/Controller.mo

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ block Controller

parameter Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection minOADes
"Design of minimum outdoor air and economizer function";
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes buiPreCon
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl buiPreCon
"Type of building pressure control system";
parameter Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard eneStd
"Energy standard, ASHRAE 90.1 or Title 24";
Expand Down Expand Up @@ -169,14 +169,14 @@ block Controller
"Maximum loop signal for the OA damper to be fully open"
annotation (__cdl(ValueInReference=false),
Dialog(tab="Commissioning", group="Modulation",
enable=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan));
enable=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan));
parameter Real uRetDamMin(unit="1")=(uHeaMax + uCooMin)/2
"Minimum loop signal for the RA damper to be fully open"
annotation (__cdl(ValueInReference=false),
Dialog(tab="Commissioning", group="Modulation",
enable=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan));
enable=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan));

Buildings.Controls.OBC.CDL.Interfaces.RealInput VOutMinSet_flow_normalized(
final unit="1")
Expand Down Expand Up @@ -238,8 +238,8 @@ block Controller
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
final quantity="ThermodynamicTemperature") if (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb
or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb)
"Used only for fixed plus differential dry bulb temperature high limit cutoff"
annotation (Placement(transformation(extent={{-280,-120},{-240,-80}}),
iconTransformation(extent={{-140,-80},{-100,-40}})));
Expand Down Expand Up @@ -305,8 +305,7 @@ block Controller
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRelDam(
final min=0,
final max=1,
final unit="1")
if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir
final unit="1") if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir
"Relief air damper commanded position"
annotation (Placement(transformation(extent={{260,-20},{300,20}}),
iconTransformation(extent={{100,-80},{140,-40}})));
Expand Down Expand Up @@ -375,22 +374,22 @@ block Controller
final disDel=disDel) "Enable or disable economizer"
annotation (Placement(transformation(extent={{20,-100},{40,-72}})));

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Modulations.ReturnFan modRet(
final have_dirCon=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp,
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Modulations.ReturnFan
modRet(
final have_dirCon=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp,

final uMin=uHeaMax,
final uMax=uCooMin)
if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp)
final uMax=uCooMin) if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp)
"Modulate economizer dampers position for buildings with return fan controlling pressure"
annotation (Placement(transformation(extent={{100,20},{120,40}})));
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Modulations.Reliefs modRel(
final uMin=uHeaMax,
final uMax=uCooMin,
final uOutDamMax=uOutDamMax,
final uRetDamMin=uRetDamMin)
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.BarometricRelief)
final uRetDamMin=uRetDamMin) if (buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan
or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.BarometricRelief)
"Modulate economizer dampers position for buildings with relief damper or fan controlling pressure"
annotation (Placement(transformation(extent={{100,-40},{120,-20}})));
Buildings.Controls.OBC.ASHRAE.G36.Generic.AirEconomizerHighLimits ecoHigLim(
Expand Down Expand Up @@ -589,7 +588,8 @@ annotation (defaultComponentName="ecoCon",
extent={{-100,-52},{-58,-66}},
textColor={0,0,127},
pattern=LinePattern.Dash,
visible=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb,
visible=(ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb
or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb),
textString="TAirRet"),
Text(
extent={{-100,-82},{-58,-98}},
Expand Down Expand Up @@ -635,7 +635,7 @@ annotation (defaultComponentName="ecoCon",
extent={{42,-50},{98,-66}},
textColor={0,0,127},
pattern=LinePattern.Dash,
visible=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir,
visible=buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir,
textString="yRelDam"),
Text(
extent={{42,-110},{98,-126}},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,31 @@ model Controller_Disable
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller
eco(
final minOADes=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper,
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper,

final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper,

final eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1,

final ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb,

final ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A,

final minOAConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.PI)
"Multi zone VAV AHU economizer "
annotation (Placement(transformation(extent={{20,0},{40,40}})));

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller
eco1(
final minOADes=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper,
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper,

final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper,

final eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1,

final ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb,

final ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A,

final minOAConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.PI)
"Multi zone VAV AHU economizer"
annotation (Placement(transformation(extent={{100,-40},{120,0}})));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,29 @@ model Controller_Mod_DamLim
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller
eco(
final minOADes=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow,
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan,

final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan,

final eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1,

final ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb,

final ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A)
"Multi zone VAV AHU economizer"
annotation (Placement(transformation(extent={{20,-20},{40,20}})));

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller
eco1(
final minOADes=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure,
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir,

final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir,

final eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1,

final ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb,

final ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1B,

final venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)
"Multi zone VAV AHU economizer"
annotation (Placement(transformation(extent={{100,-60},{120,-20}})));
Expand Down
Loading

0 comments on commit dcf68dd

Please sign in to comment.