+January 19, 2021, by Milica Grahovac:
+Added state chart illustration.
+
+
October 13, 2018, by Milica Grahovac:
First implementation.
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Generic/PlantEnable.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Generic/PlantEnable.mo
index 820d8c85de5..3e3518fad4a 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Generic/PlantEnable.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Generic/PlantEnable.mo
@@ -1,4 +1,4 @@
-within Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Generic;
+within Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Generic;
block PlantEnable "Sequence to enable and disable plant"
parameter Boolean have_WSE = true
@@ -54,7 +54,7 @@ block PlantEnable "Sequence to enable and disable plant"
"Plant enabling schedule allowing operators to lock out the plant during off-hour"
annotation (Placement(transformation(extent={{-140,40},{-120,60}})));
-protected
+//protected
final parameter Buildings.Controls.OBC.CDL.Types.Smoothness tabSmo=
Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments
"Smoothness of table interpolation";
@@ -231,8 +231,8 @@ annotation (
textString="STOP")}),
Documentation(info="
-Block that generates chiller plant enable signals and output the initial plant stage,
-according to ASHRAE RP-1711 Advanced Sequences of Operatoin for HVAC Systems Phase II -
+Block that generate chiller plant enable signals and output the initial plant stage,
+according to ASHRAE RP-1711 Advanced Sequences of Operation for HVAC Systems Phase II –
Central Plants and Hydronic Systems (Draft 4 on January 7, 2019), section 5.2.2 and
5.2.4.13 Table 2.
@@ -279,10 +279,21 @@ The chiller enable schedule is inactive.
+
+The following state machine chart illustrates the transitions between plant enable and plant disable:
+
+
+
+
",
revisions="
+January 19, 2021, by Milica Grahovac:
+Added state chart illustration.
+
+
March 12, 2020, by Milica Grahovac:
Removed initial stage determination as it is imlemented as a separate sequence. This is for
issue 1831.
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/HeadPressure/Controller.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/HeadPressure/Controller.mo
index 9a8224281de..f4d61e08d2f 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/HeadPressure/Controller.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/HeadPressure/Controller.mo
@@ -11,7 +11,7 @@ block Controller "Head pressure controller"
parameter Boolean have_WSE=true
"Flag indicating if the plant has waterside economizer"
annotation (Dialog(group="Plant"));
- parameter Boolean fixSpePum=false
+ parameter Boolean fixSpePum=true
"Flag indicating if the plant has fixed speed condenser water pumps"
annotation (Dialog(group="Plant", enable=not have_WSE));
parameter Real minChiLif=10
@@ -48,7 +48,7 @@ block Controller "Head pressure controller"
Buildings.Controls.OBC.CDL.Interfaces.RealInput desConWatPumSpe(
final min=0,
final max=1,
- final unit="1") if (not have_WSE and varSpePum) or have_WSE
+ final unit="1") if not ((not have_WSE) and fixSpePum)
"Design condenser water pump speed for current stage"
annotation (Placement(transformation(extent={{-140,0},{-100,40}}),
iconTransformation(extent={{-140,-40},{-100,0}})));
@@ -72,14 +72,14 @@ block Controller "Head pressure controller"
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHeaPreConVal(
final min=0,
final max=1,
- final unit="1") if have_WSE or (not have_WSE and not varSpePum)
+ final unit="1") if not ((not have_WSE) and not fixSpePum)
"Head pressure control valve position"
annotation (Placement(transformation(extent={{100,0},{140,40}}),
iconTransformation(extent={{100,-20},{140,20}})));
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yConWatPumSpeSet(
final min=0,
final max=1,
- final unit="1") if (not have_WSE and varSpePum) or have_WSE
+ final unit="1") if not ((not have_WSE) and fixSpePum)
"Condenser water pump speed setpoint"
annotation (Placement(transformation(extent={{100,-50},{140,-10}}),
iconTransformation(extent={{100,-80},{140,-40}})));
@@ -94,7 +94,7 @@ block Controller "Head pressure controller"
annotation (Placement(transformation(extent={{-20,80},{0,100}})));
Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.HeadPressure.Subsequences.MappingWithoutWSE
noWSE(
- final fixSpePum=not varSpePum,
+ final fixSpePum=fixSpePum,
final minTowSpe=minTowSpe,
final minConWatPumSpe=minConWatPumSpe,
final minHeaPreValPos=minHeaPreValPos) if not have_WSE
@@ -109,8 +109,6 @@ block Controller "Head pressure controller"
annotation (Placement(transformation(extent={{40,-40},{60,-20}})));
protected
- parameter Boolean varSpePum = not fixSpePum or have_WSE
- "Flag to indicate if the plant has variable speed condenser water pumps";
Buildings.Controls.OBC.CDL.Logical.Switch swi if have_HeaPreConSig
annotation (Placement(transformation(extent={{-20,-110},{0,-90}})));
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/SetpointController.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/SetpointController.mo
index 4261039a5ba..0a56b6c0e5d 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/SetpointController.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/SetpointController.mo
@@ -237,13 +237,6 @@ block SetpointController
annotation (Placement(transformation(extent={{-442,-30},{-402,10}}),
iconTransformation(extent={{-140,-40},{-100,0}})));
- Buildings.Controls.OBC.CDL.Interfaces.RealInput uLif(
- final unit="K",
- final quantity="TemperatureDifference") if anyVsdCen
- "Chiller lift"
- annotation (Placement(transformation(extent={{-442,30},{-402,70}}),
- iconTransformation(extent={{-140,0},{-100,40}})));
-
Buildings.Controls.OBC.CDL.Interfaces.RealInput uLifMax(
final unit="K",
final quantity="TemperatureDifference") if anyVsdCen
@@ -262,7 +255,7 @@ block SetpointController
final unit="K",
final quantity="ThermodynamicTemperature")
"Chilled water return temperature"
- annotation (Placement(transformation(extent={{-442,280},{-402,320}}),
+ annotation (Placement(transformation(extent={{-440,280},{-400,320}}),
iconTransformation(extent={{-140,-190},{-100,-150}})));
Buildings.Controls.OBC.CDL.Interfaces.RealInput VChiWat_flow(
@@ -288,7 +281,7 @@ block SetpointController
Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSup(
final unit="K",
final quantity="ThermodynamicTemperature")
- "Chilled water return temperature"
+ "Chilled water supply temperature"
annotation (Placement(transformation(extent={{-442,320},{-402,360}}),
iconTransformation(extent={{-140,30},{-100,70}})));
@@ -337,7 +330,14 @@ block SetpointController
final min=0)
"Minimum operating part load ratio at current stage"
annotation (Placement(transformation(extent={{120,320},{160,360}}),
- iconTransformation(extent={{100,-200},{140,-160}})));
+ iconTransformation(extent={{100,-202},{140,-162}})));
+
+ Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCapReq(
+ final quantity="Power",
+ final unit="W")
+ "Chilled water cooling capacity requirement" annotation (Placement(
+ transformation(extent={{120,370},{160,410}}), iconTransformation(extent=
+ {{100,-230},{140,-190}})));
Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Staging.SetPoints.Subsequences.Up staUp(
final have_WSE=have_WSE,
@@ -381,7 +381,8 @@ block SetpointController
CDL.Interfaces.BooleanOutput yDow "Stage down signal" annotation (Placement(
transformation(extent={{120,22},{156,58}}), iconTransformation(extent={
{100,130},{140,170}})));
-protected
+
+//protected
Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Staging.SetPoints.Subsequences.Initial iniSta(
final have_WSE=have_WSE)
annotation (Placement(transformation(extent={{-80,100},{-60,120}})));
@@ -423,6 +424,12 @@ protected
staMat=staMat) "Calculates chiller status setpoint vector"
annotation (Placement(transformation(extent={{40,-210},{60,-190}})));
+ Buildings.Controls.OBC.CDL.Continuous.Add lift(
+ final k1=1,
+ final k2=-1) if anyVsdCen
+ "Calculates chiller lift for variable speed centrifugal chiller containing configurations"
+ annotation (Placement(transformation(extent={{-260,40},{-240,60}})));
+
equation
connect(uChiAva, conf.uChiAva)
annotation (Line(points={{-422,-200},{-382,-200},{-382,-170},{-362,-170}},
@@ -432,9 +439,8 @@ equation
connect(TChiWatSupSet, capReq.TChiWatSupSet) annotation (Line(points={{-422,
370},{-370,370},{-370,319},{-322,319}},
color={0,0,127}));
- connect(TChiWatRet, capReq.TChiWatRet) annotation (Line(points={{-422,300},{
- -374,300},{-374,314},{-322,314}},
- color={0,0,127}));
+ connect(TChiWatRet, capReq.TChiWatRet) annotation (Line(points={{-420,300},{-374,
+ 300},{-374,314},{-322,314}}, color={0,0,127}));
connect(VChiWat_flow, capReq.VChiWat_flow) annotation (Line(points={{-422,270},
{-370,270},{-370,309},{-322,309}}, color={0,0,127}));
connect(conf.yDesCap, cap.uDesCap) annotation (Line(points={{-338,-162},{-322,
@@ -465,8 +471,6 @@ equation
connect(cap.yUpMin, PLRs.uUpCapMin) annotation (Line(points={{-248,-178},{
-242,-178},{-242,-187},{-184,-187}},
color={0,0,127}));
- connect(uLif, PLRs.uLif) annotation (Line(points={{-422,50},{-202,50},{-202,-190},
- {-184,-190}}, color={0,0,127}));
connect(uLifMax, PLRs.uLifMax) annotation (Line(points={{-422,20},{-212,20},{-212,
-192},{-184,-192}}, color={0,0,127}));
connect(uLifMin, PLRs.uLifMin) annotation (Line(points={{-422,-10},{-222,-10},
@@ -542,7 +546,7 @@ equation
connect(sta.yAvaUp, cha.uAvaUp) annotation (Line(points={{-298,-203},{-292,-203},
{-292,-148},{-40,-148},{-40,-164},{-22,-164}}, color={255,127,0}));
connect(sta.yAvaDow, cha.uAvaDow) annotation (Line(points={{-298,-206},{-290,-206},
- {-290,-150},{-42,-150},{-42,-168},{-22,-168}}, color={255,127,0}));
+ {-290,-150},{-44,-150},{-44,-168},{-22,-168}}, color={255,127,0}));
connect(staUp.y, cha.uUp) annotation (Line(points={{-78,-110},{-50,-110},{-50,
-172},{-22,-172}}, color={255,0,255}));
connect(staDow.y, cha.uDow) annotation (Line(points={{-78,-230},{-50,-230},{-50,
@@ -562,7 +566,7 @@ equation
{-100,370},{-100,113},{-82,113}}, color={0,0,127}));
connect(uTunPar, iniSta.uTunPar) annotation (Line(points={{-420,150},{-104,150},
{-104,116},{-82,116}}, color={0,0,127}));
- connect(iniSta.yIni, cha.uIni) annotation (Line(points={{-59,110},{-28,110},{-28,
+ connect(iniSta.yIni, cha.uIni) annotation (Line(points={{-59,110},{-30,110},{-30,
-160},{-22,-160}}, color={255,127,0}));
connect(TOutWet, iniSta.TOutWet) annotation (Line(points={{-420,400},{-96,400},
{-96,119},{-82,119}}, color={0,0,127}));
@@ -581,6 +585,14 @@ equation
{140,80}}, color={255,0,255}));
connect(staDow.y, yDow) annotation (Line(points={{-78,-230},{-60,-230},{-60,
40},{138,40}}, color={255,0,255}));
+ connect(TChiWatRet, lift.u1) annotation (Line(points={{-420,300},{-388,300},{-388,
+ 56},{-262,56}}, color={0,0,127}));
+ connect(TChiWatSupSet, lift.u2) annotation (Line(points={{-422,370},{-360,370},
+ {-360,44},{-262,44}}, color={0,0,127}));
+ connect(PLRs.uLif, lift.y) annotation (Line(points={{-184,-190},{-202,-190},{-202,
+ 50},{-238,50}}, color={0,0,127}));
+ connect(capReq.y, yCapReq) annotation (Line(points={{-298,310},{-80,310},{-80,
+ 390},{140,390}}, color={0,0,127}));
annotation (defaultComponentName = "staSetCon",
Icon(coordinateSystem(extent={{-100,-220},{100,200}}, initialScale=0.2),
graphics={
@@ -643,11 +655,6 @@ equation
lineColor={0,0,127},
pattern=LinePattern.Dash,
textString="uLifMax"),
- Text(
- extent={{-100,32},{-68,14}},
- lineColor={0,0,127},
- pattern=LinePattern.Dash,
- textString="uLif"),
Text(
extent={{-96,100},{-64,84}},
lineColor={244,125,35},
@@ -722,7 +729,12 @@ equation
extent={{48,168},{96,132}},
lineColor={217,67,180},
pattern=LinePattern.Dash,
- textString="yChaDow")}),
+ textString="yChaDow"),
+ Text(
+ extent={{42,-198},{94,-220}},
+ lineColor={0,0,127},
+ pattern=LinePattern.Dash,
+ textString="yCapReq")}),
Diagram(
coordinateSystem(preserveAspectRatio=false,
extent={{-400,-300},{120,420}})),
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Change.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Change.mo
index 012bc9eae21..05f1d707463 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Change.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Change.mo
@@ -12,12 +12,12 @@ block Change "Calculates the chiller stage signal"
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uPla
"Plant enable signal"
- annotation (Placement(transformation(extent={{-478,140},{-438,180}}),
+ annotation (Placement(transformation(extent={{-480,140},{-440,180}}),
iconTransformation(extent={{-140,-120},{-100,-80}})));
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uUp
"Stage up status"
- annotation (Placement(transformation(extent={{-478,-60},{-438,-20}}),
+ annotation (Placement(transformation(extent={{-480,-60},{-440,-20}}),
iconTransformation(extent={{-140,-40},{-100,0}})));
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uDow
@@ -29,21 +29,21 @@ block Change "Calculates the chiller stage signal"
final min=0,
final max=nSta)
"Initial chiller stage (at plant enable)"
- annotation (Placement(transformation(extent={{-478,200},{-438,240}}),
+ annotation (Placement(transformation(extent={{-480,200},{-440,240}}),
iconTransformation(extent={{-140,80},{-100,120}})));
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uAvaUp(
final min=0,
final max=nSta)
"Next available stage up"
- annotation (Placement(transformation(extent={{-478,80},{-438,120}}),
+ annotation (Placement(transformation(extent={{-480,80},{-440,120}}),
iconTransformation(extent={{-140,40},{-100,80}})));
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uAvaDow(
final min=0,
final max=nSta)
"Next available stage down"
- annotation (Placement(transformation(extent={{-478,0}, {-438,40}}),
+ annotation (Placement(transformation(extent={{-480,0},{-440,40}}),
iconTransformation(extent={{-140,0},{-100,40}})));
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yChaEdg
@@ -70,9 +70,9 @@ block Change "Calculates the chiller stage signal"
transformation(extent={{440,140},{480,180}}), iconTransformation(
extent={{100,20},{140,60}})));
-protected
+//protected
Buildings.Controls.OBC.CDL.Logical.Or or2 "Logical or"
- annotation (Placement(transformation(extent={{-380,-100},{-360,-80}})));
+ annotation (Placement(transformation(extent={{-360,-100},{-340,-80}})));
Buildings.Controls.OBC.CDL.Logical.Edge edg1
"Boolean signal change"
@@ -93,9 +93,6 @@ protected
Buildings.Controls.OBC.CDL.Conversions.IntegerToReal intToRea1 "Type converter"
annotation (Placement(transformation(extent={{-320,90},{-300,110}})));
- Buildings.Controls.OBC.CDL.Logical.Latch lat "Latch"
- annotation (Placement(transformation(extent={{-320,50},{-300,70}})));
-
Buildings.Controls.OBC.CDL.Conversions.IntegerToReal intToRea2
"Integer to real conversion"
annotation (Placement(transformation(extent={{-40,210},{-20,230}})));
@@ -184,17 +181,22 @@ protected
final trueHoldDuration=delayStaCha,
final falseHoldDuration=0)
"Stage change hold"
- annotation (Placement(transformation(extent={{340,-118},{360,-98}})));
+ annotation (Placement(transformation(extent={{340,-120},{360,-100}})));
Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"
- annotation (Placement(transformation(extent={{378,-118},{398,-98}})));
+ annotation (Placement(transformation(extent={{372,-120},{392,-100}})));
Buildings.Controls.OBC.CDL.Logical.Pre pre1 "Previous value"
- annotation (Placement(transformation(extent={{406,-118},{426,-98}})));
+ annotation (Placement(transformation(extent={{400,-120},{420,-100}})));
Buildings.Controls.OBC.CDL.Integers.Change cha "Integer change"
annotation (Placement(transformation(extent={{380,0},{400,20}})));
+ CDL.Logical.And and4
+ "Consider staging up only if stage down signal is not on"
+ annotation (Placement(transformation(extent={{-320,50},{-300,70}})));
+ CDL.Logical.Not not2 "Logical not"
+ annotation (Placement(transformation(extent={{-360,30},{-340,50}})));
equation
connect(reaToInt.y,ySta)
annotation (Line(points={{422,160},{460,160}}, color={255,127,0}));
@@ -209,7 +211,7 @@ equation
color={255,0,255}));
connect(triSam.y,switch2. u3) annotation (Line(points={{162,60},{170,60},{170,
192},{338,192}}, color={0,0,127}));
- connect(uIni,intToRea2. u) annotation (Line(points={{-458,220},{-42,220}},
+ connect(uIni,intToRea2. u) annotation (Line(points={{-460,220},{-42,220}},
color={255,127,0}));
connect(intToRea2.y,switch2. u1) annotation (Line(points={{-18,220},{140,220},
{140,208},{338,208}},
@@ -247,23 +249,20 @@ equation
color={255,0,255}));
connect(staChaHol1.y,edg2. u)
annotation (Line(points={{2,-170},{18,-170}}, color={255,0,255}));
- connect(uUp, lat.u) annotation (Line(points={{-458,-40},{-380,-40},{-380,60},{
- -322,60}}, color={255,0,255}));
- connect(uDow, lat.clr) annotation (Line(points={{-460,-140},{-340,-140},{-340,
- 54},{-322,54}}, color={255,0,255}));
- connect(uUp, or2.u1) annotation (Line(points={{-458,-40},{-400,-40},{-400,-90},
- {-382,-90}}, color={255,0,255}));
- connect(uDow, or2.u2) annotation (Line(points={{-460,-140},{-400,-140},{-400,-98},
- {-382,-98}}, color={255,0,255}));
+ connect(uUp, or2.u1) annotation (Line(points={{-460,-40},{-380,-40},{-380,-90},
+ {-362,-90}}, color={255,0,255}));
+ connect(uDow, or2.u2) annotation (Line(points={{-460,-140},{-380,-140},{-380,
+ -98},{-362,-98}},
+ color={255,0,255}));
connect(uAvaUp, intToRea1.u)
- annotation (Line(points={{-458,100},{-322,100}}, color={255,127,0}));
+ annotation (Line(points={{-460,100},{-322,100}}, color={255,127,0}));
connect(uAvaDow, intToRea.u)
- annotation (Line(points={{-458,20},{-322,20}}, color={255,127,0}));
+ annotation (Line(points={{-460,20},{-322,20}}, color={255,127,0}));
connect(holIniSta.y, not3.u) annotation (Line(points={{-298,160},{-230,160},{-230,
-60},{-222,-60}}, color={255,0,255}));
connect(not3.y, and6.u1) annotation (Line(points={{-198,-60},{-180,-60},{-180,
-72},{-162,-72}}, color={255,0,255}));
- connect(or2.y, and6.u2) annotation (Line(points={{-358,-90},{-180,-90},{-180,
+ connect(or2.y, and6.u2) annotation (Line(points={{-338,-90},{-180,-90},{-180,
-80},{-162,-80}}, color={255,0,255}));
connect(and6.y, and1.u1) annotation (Line(points={{-138,-80},{-100,-80},{-100,
-190},{-82,-190}}, color={255,0,255}));
@@ -271,18 +270,16 @@ equation
{60,-140},{60,-178},{78,-178}}, color={255,0,255}));
connect(and6.y, edg1.u)
annotation (Line(points={{-138,-80},{-2,-80}}, color={255,0,255}));
- connect(uPla, booToRea.u) annotation (Line(points={{-458,160},{-400,160},{
- -400,120},{40,120},{40,10},{198,10}}, color={255,0,255}));
+ connect(uPla, booToRea.u) annotation (Line(points={{-460,160},{-400,160},{-400,
+ 120},{40,120},{40,10},{198,10}}, color={255,0,255}));
connect(or3.y, triSam1.trigger) annotation (Line(points={{242,-50},{250,-50},
{250,-1.8}}, color={255,0,255}));
- connect(uPla, falEdg.u) annotation (Line(points={{-458,160},{-420,160},{-420,
- -20},{0,-20},{0,-30},{38,-30}}, color={255,0,255}));
+ connect(uPla, falEdg.u) annotation (Line(points={{-460,160},{-420,160},{-420,-20},
+ {0,-20},{0,-30},{38,-30}}, color={255,0,255}));
connect(falEdg.y, or3.u1) annotation (Line(points={{62,-30},{210,-30},{210,
-50},{218,-50}}, color={255,0,255}));
connect(uPla, edg.u)
- annotation (Line(points={{-458,160},{-382,160}}, color={255,0,255}));
- connect(lat.y, switch1.u2)
- annotation (Line(points={{-298,60},{-202,60}}, color={255,0,255}));
+ annotation (Line(points={{-460,160},{-382,160}}, color={255,0,255}));
connect(and3.u1, and6.y) annotation (Line(points={{278,100},{-100,100},{-100,-80},
{-138,-80}}, color={255,0,255}));
connect(lat1.y, switch2.u2) annotation (Line(points={{124,160},{160,160},{160,
@@ -296,21 +293,32 @@ equation
connect(edg1.y, or3.u2) annotation (Line(points={{22,-80},{210,-80},{210,-58},
{218,-58}}, color={255,0,255}));
connect(staChaHol3.y, not1.u)
- annotation (Line(points={{362,-108},{376,-108}}, color={255,0,255}));
+ annotation (Line(points={{362,-110},{370,-110}}, color={255,0,255}));
connect(not1.y, pre1.u)
- annotation (Line(points={{400,-108},{404,-108}}, color={255,0,255}));
- connect(pre1.y, and6.u3) annotation (Line(points={{428,-108},{428,-286},{-170,
- -286},{-170,-88},{-162,-88}}, color={255,0,255}));
+ annotation (Line(points={{394,-110},{398,-110}}, color={255,0,255}));
+ connect(pre1.y, and6.u3) annotation (Line(points={{422,-110},{428,-110},{428,-280},
+ {-170,-280},{-170,-88},{-162,-88}},
+ color={255,0,255}));
connect(reaToInt.y, cha.u) annotation (Line(points={{422,160},{430,160},{430,126},
{360,126},{360,10},{378,10}}, color={255,127,0}));
connect(cha.y, yChaEdg) annotation (Line(points={{402,10},{432,10},{432,0},{460,
0}}, color={255,0,255}));
connect(cha.y, staChaHol3.u) annotation (Line(points={{402,10},{410,10},{410,-60},
- {320,-60},{320,-108},{338,-108}}, color={255,0,255}));
+ {320,-60},{320,-110},{338,-110}}, color={255,0,255}));
connect(cha.up, yChaUpEdg) annotation (Line(points={{402,16},{420,16},{420,60},
{460,60}}, color={255,0,255}));
connect(cha.down, yChaDowEdg) annotation (Line(points={{402,4},{420,4},{420,-60},
{460,-60}}, color={255,0,255}));
+ connect(uUp, and4.u1) annotation (Line(points={{-460,-40},{-390,-40},{-390,60},
+ {-322,60}}, color={255,0,255}));
+ connect(uDow, not2.u) annotation (Line(points={{-460,-140},{-390,-140},{-390,
+ 40},{-362,40}},
+ color={255,0,255}));
+ connect(not2.y, and4.u2) annotation (Line(points={{-338,40},{-330,40},{-330,
+ 52},{-322,52}},
+ color={255,0,255}));
+ connect(and4.y, switch1.u2) annotation (Line(points={{-298,60},{-202,60}},
+ color={255,0,255}));
annotation (defaultComponentName = "cha",
Icon(graphics={
Rectangle(
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Down.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Down.mo
index a655525666a..7fad58cb2d8 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Down.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Down.mo
@@ -77,7 +77,7 @@ block Down "Generates a stage down signal"
Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSup(
final unit="K",
final quantity="ThermodynamicTemperature")
- "Chilled water return temperature"
+ "Chilled water supply temperature"
annotation (Placement(transformation(extent={{-220,10},{-180,50}}),
iconTransformation(extent={{-140,-40},{-100,0}})));
@@ -111,7 +111,7 @@ block Down "Generates a stage down signal"
annotation (Placement(transformation(extent={{180,-10},{200,10}}),
iconTransformation(extent={{100,-20},{140,20}})));
-protected
+//protected
Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Staging.SetPoints.Subsequences.FailsafeCondition faiSafCon(
final have_serChi=have_serChi,
final faiSafTruDelay=faiSafTruDelay,
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/FailsafeCondition.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/FailsafeCondition.mo
index bab48fc7170..d8c20b69781 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/FailsafeCondition.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/FailsafeCondition.mo
@@ -60,7 +60,7 @@ block FailsafeCondition
Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSup(
final unit="K",
final quantity="ThermodynamicTemperature")
- "Chilled water return temperature"
+ "Chilled water supply temperature"
annotation (Placement(transformation(extent={{-180,0},{-140,40}}),
iconTransformation(extent={{-140,0},{-100,40}})));
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Initial.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Initial.mo
index bf5f1a7a447..d3d422e8f1e 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Initial.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Staging/SetPoints/Subsequences/Initial.mo
@@ -194,10 +194,21 @@ annotation (defaultComponentName = "iniSta",
If predicted waterside economizer outlet temperature calculated using Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Economizers.Subsequences.PredictedOutletTemperature with predicted heat exchanger part load ratio PLRHeaExc set to 1 is at least wseDt below the chilled water supply temperature setpoint TChiWatSupSet, then the initial stage will be 0, meaning that the plant initiates in a waterside economizer only mode.
Otherwise, the initial stage will be the lowest available stage uUp.
+
+The following state machine chart illustrates the initial stage selection for plants with a waterside economizer:
+
+
+
+
",
revisions="
+January 19, 2021, by Milica Grahovac:
+Added state chart illustration.
+
+
March 12, 2020, by Milica Grahovac:
First implementation.