From e9ae31a15c2cf48f20ddfbc5328a239a3b5ec440 Mon Sep 17 00:00:00 2001
From: JayHuLBL
Date: Wed, 24 Jan 2024 16:56:38 -0800
Subject: [PATCH] updated tower control sequences [ci skip]
---
.../EnabledWSE/Subsequences/WSEOperation.mo | 5 +-
.../Staging/Subsequences/StageProcesses.mo | 386 ++++++++++--------
.../Subsequences/Validation/StageProcesses.mo | 4 +-
.../Towers/Staging/Validation/Controller.mo | 119 ++++--
...E_Subsequences_Validation_WSEOperation.txt | 7 +-
...ng_Subsequences_Validation_ChangeCells.txt | 18 +-
...t_Towers_Staging_Validation_Controller.txt | 9 +-
...ng.Subsequences.Validation.ChangeCells.mos | 6 +-
8 files changed, 321 insertions(+), 233 deletions(-)
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/FanSpeed/EnabledWSE/Subsequences/WSEOperation.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/FanSpeed/EnabledWSE/Subsequences/WSEOperation.mo
index 1a5a438f76f..63073744db0 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/FanSpeed/EnabledWSE/Subsequences/WSEOperation.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/FanSpeed/EnabledWSE/Subsequences/WSEOperation.mo
@@ -60,6 +60,9 @@ block WSEOperation
annotation (Placement(transformation(extent={{240,140},{280,180}}),
iconTransformation(extent={{100,-20},{140,20}})));
+ Buildings.Controls.OBC.CDL.Logical.Latch fanCycOff "Cycle off fan"
+ annotation (Placement(transformation(extent={{100,150},{120,170}})));
+
protected
Buildings.Controls.OBC.CDL.Logical.And and2
"Check if the fan is at minimum speed and the chiller water supply temperature is lower than the setpoint"
@@ -87,8 +90,6 @@ protected
annotation (Placement(transformation(extent={{-100,150},{-80,170}})));
Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"
annotation (Placement(transformation(extent={{-60,150},{-40,170}})));
- Buildings.Controls.OBC.CDL.Logical.Latch fanCycOff "Cycle off fan"
- annotation (Placement(transformation(extent={{100,150},{120,170}})));
Buildings.Controls.OBC.CDL.Reals.Switch swi "Logical switch"
annotation (Placement(transformation(extent={{200,150},{220,170}})));
Buildings.Controls.OBC.CDL.Reals.Hysteresis hys3(
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/StageProcesses.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/StageProcesses.mo
index fe52dc9d68f..022c662835b 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/StageProcesses.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/StageProcesses.mo
@@ -10,335 +10,383 @@ block StageProcesses "Sequence for process of staging cells"
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChaCel[nTowCel]
"Vector of boolean flags to show if a cell should change its status: true = the cell should change status (be enabled or disabled)"
- annotation (Placement(transformation(extent={{-240,270},{-200,310}}),
+ annotation (Placement(transformation(extent={{-240,350},{-200,390}}),
iconTransformation(extent={{-140,60},{-100,100}})));
Buildings.Controls.OBC.CDL.Interfaces.RealInput uIsoVal[nTowCel](
final unit=fill("1", nTowCel),
final min=fill(0, nTowCel),
final max=fill(1, nTowCel)) "Cooling tower cells isolation valve position"
- annotation (Placement(transformation(extent={{-240,30},{-200,70}}),
+ annotation (Placement(transformation(extent={{-240,60},{-200,100}}),
iconTransformation(extent={{-140,-20},{-100,20}})));
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uTowSta[nTowCel]
"Vector of tower cells proven on status: true=enabled tower cell"
- annotation (Placement(transformation(extent={{-240,-200},{-200,-160}}),
+ annotation (Placement(transformation(extent={{-240,-260},{-200,-220}}),
iconTransformation(extent={{-140,-100},{-100,-60}})));
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yIsoVal[nTowCel](
final unit=fill("1", nTowCel),
final min=fill(0, nTowCel),
final max=fill(1, nTowCel)) "Cooling tower cells isolation valve setpoint"
- annotation (Placement(transformation(extent={{200,70},{240,110}}),
+ annotation (Placement(transformation(extent={{200,80},{240,120}}),
iconTransformation(extent={{100,40},{140,80}})));
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yTowSta[nTowCel]
"Vector of tower cells status setpoint"
- annotation (Placement(transformation(extent={{200,-220},{240,-180}}),
+ annotation (Placement(transformation(extent={{200,-280},{240,-240}}),
iconTransformation(extent={{100,-20},{140,20}})));
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yEndSta
"Rising edge to indicate the staging process is done"
- annotation (Placement(transformation(extent={{200,-320},{240,-280}}),
+ annotation (Placement(transformation(extent={{200,-380},{240,-340}}),
iconTransformation(extent={{100,-80},{140,-40}})));
protected
Buildings.Controls.OBC.CDL.Reals.Switch swi2[nTowCel] "Logical switch"
- annotation (Placement(transformation(extent={{100,100},{120,120}})));
+ annotation (Placement(transformation(extent={{60,20},{80,40}})));
Buildings.Controls.OBC.CDL.Logical.Timer tim
"Count the time after changing up-stream device status"
- annotation (Placement(transformation(extent={{-120,210},{-100,230}})));
+ annotation (Placement(transformation(extent={{-120,290},{-100,310}})));
Buildings.Controls.OBC.CDL.Reals.Sources.Constant con9(final k=0)
"Constant zero"
- annotation (Placement(transformation(extent={{-40,230},{-20,250}})));
+ annotation (Placement(transformation(extent={{-40,310},{-20,330}})));
Buildings.Controls.OBC.CDL.Reals.Sources.Constant con7(
final k=chaTowCelIsoTim) "Time to change cooling tower isolation valve"
- annotation (Placement(transformation(extent={{-120,180},{-100,200}})));
+ annotation (Placement(transformation(extent={{-120,260},{-100,280}})));
Buildings.Controls.OBC.CDL.Reals.Sources.Constant con8(final k=1)
"Fully open valve"
- annotation (Placement(transformation(extent={{-40,180},{-20,200}})));
+ annotation (Placement(transformation(extent={{-40,260},{-20,280}})));
Buildings.Controls.OBC.CDL.Reals.Line lin1
"Chilled water isolation valve setpoint"
- annotation (Placement(transformation(extent={{20,210},{40,230}})));
+ annotation (Placement(transformation(extent={{40,290},{60,310}})));
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator reaRep(
final nout=nTowCel)
"Replicate real input"
- annotation (Placement(transformation(extent={{100,140},{120,160}})));
+ annotation (Placement(transformation(extent={{140,220},{160,240}})));
Buildings.Controls.OBC.CDL.Reals.Switch swi[nTowCel] "Logical switch"
- annotation (Placement(transformation(extent={{160,80},{180,100}})));
+ annotation (Placement(transformation(extent={{120,-30},{140,-10}})));
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep(
final nout=nTowCel)
"Replicate boolean input"
- annotation (Placement(transformation(extent={{60,20},{80,40}})));
+ annotation (Placement(transformation(extent={{-40,-20},{-20,0}})));
Buildings.Controls.OBC.CDL.Reals.Hysteresis hys3[nTowCel](
final uLow=fill(0.025, nTowCel),
final uHigh=fill(0.05, nTowCel)) "Check if isolation valve is enabled"
- annotation (Placement(transformation(extent={{-140,-60},{-120,-40}})));
+ annotation (Placement(transformation(extent={{-140,-120},{-120,-100}})));
Buildings.Controls.OBC.CDL.Reals.Hysteresis hys4[nTowCel](
final uLow=fill(0.925, nTowCel),
final uHigh=fill(0.975, nTowCel)) "Check if isolation valve is open more than 95%"
- annotation (Placement(transformation(extent={{-140,-90},{-120,-70}})));
+ annotation (Placement(transformation(extent={{-140,-150},{-120,-130}})));
Buildings.Controls.OBC.CDL.Logical.MultiAnd fulOpe(
final nin=nTowCel)
"Enabled valves are fully open"
- annotation (Placement(transformation(extent={{80,-60},{100,-40}})));
+ annotation (Placement(transformation(extent={{80,-120},{100,-100}})));
Buildings.Controls.OBC.CDL.Logical.And and5
"Check if it has fully open the valve and the opening process time has past the threshold"
- annotation (Placement(transformation(extent={{100,-100},{120,-80}})));
+ annotation (Placement(transformation(extent={{100,-160},{120,-140}})));
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greEquThr(
final t=chaTowCelIsoTim)
"Check if it has past the target time of open isolation valve "
- annotation (Placement(transformation(extent={{0,-120},{20,-100}})));
+ annotation (Placement(transformation(extent={{0,-180},{20,-160}})));
Buildings.Controls.OBC.CDL.Logical.And and1[nTowCel]
"True: cells should be enabled"
- annotation (Placement(transformation(extent={{20,-170},{40,-150}})));
+ annotation (Placement(transformation(extent={{20,-230},{40,-210}})));
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep1(
final nout=nTowCel)
"Replicate boolean input"
- annotation (Placement(transformation(extent={{140,-100},{160,-80}})));
+ annotation (Placement(transformation(extent={{140,-160},{160,-140}})));
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con1[nTowCel](
final k=fill(true, nTowCel)) "Enable cells"
- annotation (Placement(transformation(extent={{-60,-150},{-40,-130}})));
+ annotation (Placement(transformation(extent={{-60,-210},{-40,-190}})));
Buildings.Controls.OBC.CDL.Logical.Switch enaNexCel[nTowCel]
"Enable next cells"
- annotation (Placement(transformation(extent={{80,-170},{100,-150}})));
+ annotation (Placement(transformation(extent={{80,-230},{100,-210}})));
Buildings.Controls.OBC.CDL.Logical.And and2[nTowCel] "Logical and"
- annotation (Placement(transformation(extent={{-120,140},{-100,160}})));
+ annotation (Placement(transformation(extent={{-120,220},{-100,240}})));
Buildings.Controls.OBC.CDL.Logical.Not not1[nTowCel] "Logical and"
- annotation (Placement(transformation(extent={{-60,140},{-40,160}})));
+ annotation (Placement(transformation(extent={{-60,220},{-40,240}})));
Buildings.Controls.OBC.CDL.Logical.MultiAnd enaCel(
final nin=nTowCel) "New cells should be enabled"
- annotation (Placement(transformation(extent={{-20,140},{0,160}})));
+ annotation (Placement(transformation(extent={{-20,220},{0,240}})));
Buildings.Controls.OBC.CDL.Reals.Switch celPosSet
"Slowly change the opening setpoint to 1 of the enabling cells isolation valve, or change the setpoint to 0 of the disabling cells"
- annotation (Placement(transformation(extent={{60,140},{80,160}})));
+ annotation (Placement(transformation(extent={{100,220},{120,240}})));
Buildings.Controls.OBC.CDL.Logical.And enaPro "Enabling cells process"
- annotation (Placement(transformation(extent={{-60,-10},{-40,10}})));
+ annotation (Placement(transformation(extent={{-60,-70},{-40,-50}})));
Buildings.Controls.OBC.CDL.Logical.Not disCel "Disable cell"
- annotation (Placement(transformation(extent={{-100,80},{-80,100}})));
+ annotation (Placement(transformation(extent={{-100,50},{-80,70}})));
Buildings.Controls.OBC.CDL.Logical.And disPro "Disabling cells process"
- annotation (Placement(transformation(extent={{-20,80},{0,100}})));
+ annotation (Placement(transformation(extent={{-40,40},{-20,60}})));
Buildings.Controls.OBC.CDL.Logical.Switch newTowCell[nTowCel]
"New tower cell status"
- annotation (Placement(transformation(extent={{160,-210},{180,-190}})));
+ annotation (Placement(transformation(extent={{160,-270},{180,-250}})));
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep2(
final nout=nTowCel) "In the enabling process"
- annotation (Placement(transformation(extent={{80,-210},{100,-190}})));
+ annotation (Placement(transformation(extent={{80,-270},{100,-250}})));
Buildings.Controls.OBC.CDL.Logical.Switch disExiCel[nTowCel]
"Disable existing cells"
- annotation (Placement(transformation(extent={{80,-250},{100,-230}})));
+ annotation (Placement(transformation(extent={{80,-310},{100,-290}})));
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep3(
final nout=nTowCel) "In the disabling process"
- annotation (Placement(transformation(extent={{0,-250},{20,-230}})));
+ annotation (Placement(transformation(extent={{0,-310},{20,-290}})));
Buildings.Controls.OBC.CDL.Logical.MultiOr staPro(nin=nTowCel)
"In tower staging process"
- annotation (Placement(transformation(extent={{60,280},{80,300}})));
+ annotation (Placement(transformation(extent={{60,360},{80,380}})));
Buildings.Controls.OBC.CDL.Logical.MultiOr opeVal(
final nin=nTowCel) "Check if there is any opened valve"
- annotation (Placement(transformation(extent={{0,-30},{20,-10}})));
+ annotation (Placement(transformation(extent={{0,-90},{20,-70}})));
Buildings.Controls.OBC.CDL.Logical.And and3
"Check if the opened valves are fully open"
- annotation (Placement(transformation(extent={{140,-30},{160,-10}})));
+ annotation (Placement(transformation(extent={{140,-90},{160,-70}})));
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt[nTowCel]
"Convert boolean input to integer"
- annotation (Placement(transformation(extent={{0,-60},{20,-40}})));
+ annotation (Placement(transformation(extent={{0,-120},{20,-100}})));
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt1[nTowCel]
"Convert boolean input to integer"
- annotation (Placement(transformation(extent={{0,-90},{20,-70}})));
+ annotation (Placement(transformation(extent={{0,-150},{20,-130}})));
Buildings.Controls.OBC.CDL.Integers.Equal intEqu[nTowCel]
"Check if the opened valves are fully open"
- annotation (Placement(transformation(extent={{40,-60},{60,-40}})));
+ annotation (Placement(transformation(extent={{40,-120},{60,-100}})));
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep4(
final nout=nTowCel) "In the disabling process"
- annotation (Placement(transformation(extent={{60,-290},{80,-270}})));
+ annotation (Placement(transformation(extent={{120,-350},{140,-330}})));
Buildings.Controls.OBC.CDL.Logical.Or celChaSta[nTowCel]
"True: there are cells changed status"
- annotation (Placement(transformation(extent={{-60,-310},{-40,-290}})));
+ annotation (Placement(transformation(extent={{-80,-370},{-60,-350}})));
Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg[nTowCel]
"Check if there is any cell being disabled"
- annotation (Placement(transformation(extent={{-120,-290},{-100,-270}})));
+ annotation (Placement(transformation(extent={{-140,-350},{-120,-330}})));
Buildings.Controls.OBC.CDL.Logical.Edge edg[nTowCel]
"Check if there is any cell being enabled"
- annotation (Placement(transformation(extent={{-120,-330},{-100,-310}})));
+ annotation (Placement(transformation(extent={{-140,-390},{-120,-370}})));
Buildings.Controls.OBC.CDL.Logical.MultiOr endStaPro(
final nin=nTowCel)
"Check if there is any cell changed status so it means that the staging process is done"
- annotation (Placement(transformation(extent={{-20,-310},{0,-290}})));
+ annotation (Placement(transformation(extent={{40,-370},{60,-350}})));
Buildings.Controls.OBC.CDL.Logical.Latch lat[nTowCel] "Change cells status"
- annotation (Placement(transformation(extent={{-100,280},{-80,300}})));
+ annotation (Placement(transformation(extent={{-120,360},{-100,380}})));
Buildings.Controls.OBC.CDL.Logical.Edge havCha[nTowCel] "Edge"
- annotation (Placement(transformation(extent={{-180,280},{-160,300}})));
+ annotation (Placement(transformation(extent={{-180,360},{-160,380}})));
Buildings.Controls.OBC.CDL.Logical.And and4[nTowCel]
"True: cells should be disabled"
- annotation (Placement(transformation(extent={{-140,-210},{-120,-190}})));
+ annotation (Placement(transformation(extent={{-140,-270},{-120,-250}})));
Buildings.Controls.OBC.CDL.Logical.Switch disExiCel1[nTowCel]
"Disable existing cells"
- annotation (Placement(transformation(extent={{-60,-230},{-40,-210}})));
+ annotation (Placement(transformation(extent={{-60,-290},{-40,-270}})));
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con2[nTowCel](
- final k=fill(false, nTowCel)) "Disable cells"
- annotation (Placement(transformation(extent={{-140,-160},{-120,-140}})));
+ final k=fill(false, nTowCel))
+ "Disable cells"
+ annotation (Placement(transformation(extent={{-140,-220},{-120,-200}})));
+ Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep5(
+ final nout=nTowCel)
+ "Replicate boolean input"
+ annotation (Placement(transformation(extent={{-40,140},{-20,160}})));
+ Buildings.Controls.OBC.CDL.Logical.And ideDisCel[nTowCel]
+ "Identifying the cells to be disabled"
+ annotation (Placement(transformation(extent={{60,140},{80,160}})));
+ Buildings.Controls.OBC.CDL.Reals.Switch offVal[nTowCel]
+ "Shut off valve if it is disabling cell"
+ annotation (Placement(transformation(extent={{120,140},{140,160}})));
+ Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3[nTowCel](
+ final k=fill(0, nTowCel))
+ "Constant zero"
+ annotation (Placement(transformation(extent={{60,180},{80,200}})));
+ Buildings.Controls.OBC.CDL.Reals.Switch swi3[nTowCel]
+ "Logical switch"
+ annotation (Placement(transformation(extent={{160,90},{180,110}})));
+ Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset holDisPro(
+ final duration=chaTowCelIsoTim)
+ "Holding the disable process"
+ annotation (Placement(transformation(extent={{-100,140},{-80,160}})));
+ Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset truHol2[nTowCel](
+ final duration=fill(chaTowCelIsoTim,nTowCel))
+ "Holding the cell changing signal"
+ annotation (Placement(transformation(extent={{-100,90},{-80,110}})));
+
equation
connect(con9.y, lin1.x1)
- annotation (Line(points={{-18,240},{10,240},{10,228},{18,228}},
+ annotation (Line(points={{-18,320},{30,320},{30,308},{38,308}},
color={0,0,127}));
connect(con7.y, lin1.x2)
- annotation (Line(points={{-98,190},{-60,190},{-60,216},{18,216}},
+ annotation (Line(points={{-98,270},{-60,270},{-60,296},{38,296}},
color={0,0,127}));
connect(con8.y, lin1.f2)
- annotation (Line(points={{-18,190},{-10,190},{-10,212},{18,212}},
+ annotation (Line(points={{-18,270},{0,270},{0,292},{38,292}},
color={0,0,127}));
connect(tim.y, lin1.u)
- annotation (Line(points={{-98,220},{18,220}}, color={0,0,127}));
+ annotation (Line(points={{-98,300},{38,300}}, color={0,0,127}));
connect(reaRep.y, swi2.u1)
- annotation (Line(points={{122,150},{140,150},{140,130},{80,130},{80,118},{98,
- 118}},color={0,0,127}));
+ annotation (Line(points={{162,230},{180,230},{180,210},{30,210},{30,38},{58,
+ 38}}, color={0,0,127}));
connect(swi2.y, swi.u1)
- annotation (Line(points={{122,110},{140,110},{140,98},{158,98}},
+ annotation (Line(points={{82,30},{100,30},{100,-12},{118,-12}},
color={0,0,127}));
connect(uIsoVal, swi2.u3)
- annotation (Line(points={{-220,50},{30,50},{30,102},{98,102}},
+ annotation (Line(points={{-220,80},{-160,80},{-160,22},{58,22}},
color={0,0,127}));
connect(booRep.y, swi.u2)
- annotation (Line(points={{82,30},{140,30},{140,90},{158,90}},
+ annotation (Line(points={{-18,-10},{80,-10},{80,-20},{118,-20}},
color={255,0,255}));
- connect(uIsoVal, swi.u3)
- annotation (Line(points={{-220,50},{30,50},{30,82},{158,82}},
- color={0,0,127}));
- connect(swi.y, yIsoVal)
- annotation (Line(points={{182,90},{220,90}}, color={0,0,127}));
connect(greEquThr.y, and5.u2)
- annotation (Line(points={{22,-110},{70,-110},{70,-98},{98,-98}},
+ annotation (Line(points={{22,-170},{70,-170},{70,-158},{98,-158}},
color={255,0,255}));
connect(uIsoVal, hys4.u)
- annotation (Line(points={{-220,50},{-160,50},{-160,-80},{-142,-80}},
+ annotation (Line(points={{-220,80},{-160,80},{-160,-140},{-142,-140}},
color={0,0,127}));
connect(uIsoVal, hys3.u)
- annotation (Line(points={{-220,50},{-160,50},{-160,-50},{-142,-50}},
+ annotation (Line(points={{-220,80},{-160,80},{-160,-110},{-142,-110}},
color={0,0,127}));
connect(tim.y, greEquThr.u)
- annotation (Line(points={{-98,220},{-70,220},{-70,-110},{-2,-110}},
+ annotation (Line(points={{-98,300},{-70,300},{-70,-170},{-2,-170}},
color={0,0,127}));
connect(and5.y, booRep1.u)
- annotation (Line(points={{122,-90},{138,-90}}, color={255,0,255}));
+ annotation (Line(points={{122,-150},{138,-150}}, color={255,0,255}));
connect(booRep1.y, and1.u1)
- annotation (Line(points={{162,-90},{180,-90},{180,-132},{0,-132},{0,-160},{18,
- -160}}, color={255,0,255}));
+ annotation (Line(points={{162,-150},{180,-150},{180,-192},{0,-192},{0,-220},
+ {18,-220}}, color={255,0,255}));
connect(and1.y, enaNexCel.u2)
- annotation (Line(points={{42,-160},{78,-160}}, color={255,0,255}));
- connect(con1.y, enaNexCel.u1) annotation (Line(points={{-38,-140},{60,-140},{60,
- -152},{78,-152}}, color={255,0,255}));
- connect(uTowSta, enaNexCel.u3) annotation (Line(points={{-220,-180},{60,-180},
- {60,-168},{78,-168}}, color={255,0,255}));
+ annotation (Line(points={{42,-220},{78,-220}}, color={255,0,255}));
+ connect(con1.y, enaNexCel.u1) annotation (Line(points={{-38,-200},{60,-200},{60,
+ -212},{78,-212}}, color={255,0,255}));
+ connect(uTowSta, enaNexCel.u3) annotation (Line(points={{-220,-240},{60,-240},
+ {60,-228},{78,-228}}, color={255,0,255}));
connect(celPosSet.y, reaRep.u)
- annotation (Line(points={{82,150},{98,150}}, color={0,0,127}));
- connect(uTowSta, and2.u2) annotation (Line(points={{-220,-180},{-180,-180},{-180,
- 142},{-122,142}}, color={255,0,255}));
+ annotation (Line(points={{122,230},{138,230}}, color={0,0,127}));
+ connect(uTowSta, and2.u2) annotation (Line(points={{-220,-240},{-180,-240},{-180,
+ 222},{-122,222}}, color={255,0,255}));
connect(and2.y, not1.u)
- annotation (Line(points={{-98,150},{-62,150}}, color={255,0,255}));
- connect(not1.y, enaCel.u) annotation (Line(points={{-38,150},{-22,150}},
+ annotation (Line(points={{-98,230},{-62,230}}, color={255,0,255}));
+ connect(not1.y, enaCel.u) annotation (Line(points={{-38,230},{-22,230}},
color={255,0,255}));
- connect(enaCel.y, celPosSet.u2)
- annotation (Line(points={{2,150},{58,150}}, color={255,0,255}));
- connect(lin1.y, celPosSet.u1) annotation (Line(points={{42,220},{50,220},{50,158},
- {58,158}}, color={0,0,127}));
- connect(con9.y, celPosSet.u3) annotation (Line(points={{-18,240},{10,240},{10,
- 142},{58,142}}, color={0,0,127}));
- connect(enaCel.y, enaPro.u1) annotation (Line(points={{2,150},{20,150},{20,120},
- {-120,120},{-120,0},{-62,0}}, color={255,0,255}));
- connect(enaCel.y, disCel.u) annotation (Line(points={{2,150},{20,150},{20,120},
- {-120,120},{-120,90},{-102,90}}, color={255,0,255}));
+ connect(lin1.y, celPosSet.u1) annotation (Line(points={{62,300},{80,300},{80,238},
+ {98,238}}, color={0,0,127}));
+ connect(enaCel.y, enaPro.u1) annotation (Line(points={{2,230},{20,230},{20,200},
+ {-120,200},{-120,-60},{-62,-60}}, color={255,0,255}));
+ connect(enaCel.y, disCel.u) annotation (Line(points={{2,230},{20,230},{20,200},
+ {-120,200},{-120,60},{-102,60}}, color={255,0,255}));
connect(disCel.y, disPro.u1)
- annotation (Line(points={{-78,90},{-22,90}}, color={255,0,255}));
+ annotation (Line(points={{-78,60},{-60,60},{-60,50},{-42,50}}, color={255,0,255}));
connect(booRep2.y, newTowCell.u2)
- annotation (Line(points={{102,-200},{158,-200}}, color={255,0,255}));
- connect(enaNexCel.y, newTowCell.u1) annotation (Line(points={{102,-160},{120,-160},
- {120,-192},{158,-192}}, color={255,0,255}));
+ annotation (Line(points={{102,-260},{158,-260}}, color={255,0,255}));
+ connect(enaNexCel.y, newTowCell.u1) annotation (Line(points={{102,-220},{120,-220},
+ {120,-252},{158,-252}}, color={255,0,255}));
connect(booRep3.y, disExiCel.u2)
- annotation (Line(points={{22,-240},{78,-240}}, color={255,0,255}));
- connect(uTowSta, disExiCel.u3) annotation (Line(points={{-220,-180},{60,-180},
- {60,-248},{78,-248}}, color={255,0,255}));
- connect(disPro.y, booRep3.u) annotation (Line(points={{2,90},{20,90},{20,60},{
- -100,60},{-100,-240},{-2,-240}}, color={255,0,255}));
- connect(enaPro.y, booRep2.u) annotation (Line(points={{-38,0},{-30,0},{-30,-200},
- {78,-200}}, color={255,0,255}));
- connect(disExiCel.y, newTowCell.u3) annotation (Line(points={{102,-240},{140,-240},
- {140,-208},{158,-208}}, color={255,0,255}));
+ annotation (Line(points={{22,-300},{78,-300}}, color={255,0,255}));
+ connect(uTowSta, disExiCel.u3) annotation (Line(points={{-220,-240},{60,-240},
+ {60,-308},{78,-308}}, color={255,0,255}));
+ connect(disPro.y, booRep3.u) annotation (Line(points={{-18,50},{0,50},{0,12},{
+ -110,12},{-110,-300},{-2,-300}}, color={255,0,255}));
+ connect(enaPro.y, booRep2.u) annotation (Line(points={{-38,-60},{-30,-60},{-30,
+ -260},{78,-260}}, color={255,0,255}));
+ connect(disExiCel.y, newTowCell.u3) annotation (Line(points={{102,-300},{140,-300},
+ {140,-268},{158,-268}}, color={255,0,255}));
connect(newTowCell.y, yTowSta)
- annotation (Line(points={{182,-200},{220,-200}}, color={255,0,255}));
- connect(con9.y, lin1.f1) annotation (Line(points={{-18,240},{10,240},{10,224},
- {18,224}}, color={0,0,127}));
- connect(staPro.y, tim.u) annotation (Line(points={{82,290},{100,290},{100,260},
- {-140,260},{-140,220},{-122,220}}, color={255,0,255}));
- connect(staPro.y, disPro.u2) annotation (Line(points={{82,290},{100,290},{100,
- 260},{-140,260},{-140,70},{-40,70},{-40,82},{-22,82}}, color={255,0,255}));
- connect(staPro.y, enaPro.u2) annotation (Line(points={{82,290},{100,290},{100,
- 260},{-140,260},{-140,-8},{-62,-8}}, color={255,0,255}));
+ annotation (Line(points={{182,-260},{220,-260}}, color={255,0,255}));
+ connect(con9.y, lin1.f1) annotation (Line(points={{-18,320},{30,320},{30,304},
+ {38,304}}, color={0,0,127}));
+ connect(staPro.y, tim.u) annotation (Line(points={{82,370},{100,370},{100,340},
+ {-140,340},{-140,300},{-122,300}}, color={255,0,255}));
+ connect(staPro.y, disPro.u2) annotation (Line(points={{82,370},{100,370},{100,
+ 340},{-140,340},{-140,42},{-42,42}}, color={255,0,255}));
+ connect(staPro.y, enaPro.u2) annotation (Line(points={{82,370},{100,370},{100,
+ 340},{-140,340},{-140,-68},{-62,-68}}, color={255,0,255}));
connect(hys3.y, booToInt.u)
- annotation (Line(points={{-118,-50},{-2,-50}},color={255,0,255}));
+ annotation (Line(points={{-118,-110},{-2,-110}}, color={255,0,255}));
connect(hys4.y, booToInt1.u)
- annotation (Line(points={{-118,-80},{-2,-80}}, color={255,0,255}));
+ annotation (Line(points={{-118,-140},{-2,-140}},color={255,0,255}));
connect(booToInt.y, intEqu.u1)
- annotation (Line(points={{22,-50},{38,-50}}, color={255,127,0}));
- connect(booToInt1.y, intEqu.u2) annotation (Line(points={{22,-80},{30,-80},{30,
- -58},{38,-58}}, color={255,127,0}));
+ annotation (Line(points={{22,-110},{38,-110}}, color={255,127,0}));
+ connect(booToInt1.y, intEqu.u2) annotation (Line(points={{22,-140},{30,-140},{
+ 30,-118},{38,-118}}, color={255,127,0}));
connect(intEqu.y, fulOpe.u)
- annotation (Line(points={{62,-50},{78,-50}}, color={255,0,255}));
- connect(hys3.y, opeVal.u) annotation (Line(points={{-118,-50},{-20,-50},{-20,-20},
- {-2,-20}}, color={255,0,255}));
+ annotation (Line(points={{62,-110},{78,-110}}, color={255,0,255}));
+ connect(hys3.y, opeVal.u) annotation (Line(points={{-118,-110},{-20,-110},{-20,
+ -80},{-2,-80}}, color={255,0,255}));
connect(opeVal.y, and3.u1)
- annotation (Line(points={{22,-20},{138,-20}}, color={255,0,255}));
- connect(fulOpe.y, and3.u2) annotation (Line(points={{102,-50},{120,-50},{120,-28},
- {138,-28}}, color={255,0,255}));
- connect(and3.y, and5.u1) annotation (Line(points={{162,-20},{180,-20},{180,-70},
- {70,-70},{70,-90},{98,-90}}, color={255,0,255}));
- connect(staPro.y, booRep.u) annotation (Line(points={{82,290},{100,290},{100,260},
- {-140,260},{-140,30},{58,30}}, color={255,0,255}));
- connect(uTowSta, falEdg.u) annotation (Line(points={{-220,-180},{-180,-180},{-180,
- -280},{-122,-280}}, color={255,0,255}));
- connect(uTowSta, edg.u) annotation (Line(points={{-220,-180},{-180,-180},{-180,
- -320},{-122,-320}}, color={255,0,255}));
- connect(booRep4.y, lat.clr) annotation (Line(points={{82,-280},{100,-280},{100,
- -260},{-150,-260},{-150,284},{-102,284}}, color={255,0,255}));
- connect(falEdg.y, celChaSta.u1) annotation (Line(points={{-98,-280},{-80,-280},
- {-80,-300},{-62,-300}}, color={255,0,255}));
- connect(edg.y, celChaSta.u2) annotation (Line(points={{-98,-320},{-80,-320},{-80,
- -308},{-62,-308}}, color={255,0,255}));
- connect(celChaSta.y, endStaPro.u) annotation (Line(points={{-38,-300},{-22,-300}},
+ annotation (Line(points={{22,-80},{138,-80}}, color={255,0,255}));
+ connect(fulOpe.y, and3.u2) annotation (Line(points={{102,-110},{120,-110},{120,
+ -88},{138,-88}}, color={255,0,255}));
+ connect(and3.y, and5.u1) annotation (Line(points={{162,-80},{180,-80},{180,-130},
+ {70,-130},{70,-150},{98,-150}},color={255,0,255}));
+ connect(staPro.y, booRep.u) annotation (Line(points={{82,370},{100,370},{100,340},
+ {-140,340},{-140,-10},{-42,-10}}, color={255,0,255}));
+ connect(uTowSta, falEdg.u) annotation (Line(points={{-220,-240},{-180,-240},{-180,
+ -340},{-142,-340}}, color={255,0,255}));
+ connect(uTowSta, edg.u) annotation (Line(points={{-220,-240},{-180,-240},{-180,
+ -380},{-142,-380}}, color={255,0,255}));
+ connect(booRep4.y, lat.clr) annotation (Line(points={{142,-340},{180,-340},{180,
+ -318},{-150,-318},{-150,364},{-122,364}}, color={255,0,255}));
+ connect(falEdg.y, celChaSta.u1) annotation (Line(points={{-118,-340},{-100,-340},
+ {-100,-360},{-82,-360}},color={255,0,255}));
+ connect(edg.y, celChaSta.u2) annotation (Line(points={{-118,-380},{-100,-380},
+ {-100,-368},{-82,-368}}, color={255,0,255}));
+ connect(celChaSta.y, endStaPro.u) annotation (Line(points={{-58,-360},{38,-360}},
color={255,0,255}));
- connect(uChaCel, havCha.u) annotation (Line(points={{-220,290},{-182,290}},
+ connect(uChaCel, havCha.u) annotation (Line(points={{-220,370},{-182,370}},
color={255,0,255}));
- connect(havCha.y, lat.u) annotation (Line(points={{-158,290},{-102,290}},
+ connect(havCha.y, lat.u) annotation (Line(points={{-158,370},{-122,370}},
color={255,0,255}));
- connect(lat.y, staPro.u)
- annotation (Line(points={{-78,290},{58,290}}, color={255,0,255}));
- connect(lat.y, and2.u1) annotation (Line(points={{-78,290},{-60,290},{-60,266},
- {-168,266},{-168,150},{-122,150}}, color={255,0,255}));
- connect(lat.y, swi2.u2) annotation (Line(points={{-78,290},{-60,290},{-60,266},
- {-168,266},{-168,110},{98,110}}, color={255,0,255}));
- connect(lat.y, and1.u2) annotation (Line(points={{-78,290},{-60,290},{-60,266},
- {-168,266},{-168,-168},{18,-168}}, color={255,0,255}));
connect(endStaPro.y, yEndSta)
- annotation (Line(points={{2,-300},{220,-300}}, color={255,0,255}));
- connect(endStaPro.y, booRep4.u) annotation (Line(points={{2,-300},{20,-300},{20,
- -280},{58,-280}}, color={255,0,255}));
- connect(uTowSta, and4.u2) annotation (Line(points={{-220,-180},{-180,-180},{-180,
- -208},{-142,-208}}, color={255,0,255}));
- connect(uChaCel, and4.u1) annotation (Line(points={{-220,290},{-190,290},{-190,
- -200},{-142,-200}}, color={255,0,255}));
- connect(and4.y, disExiCel1.u2) annotation (Line(points={{-118,-200},{-80,-200},
- {-80,-220},{-62,-220}}, color={255,0,255}));
- connect(uTowSta, disExiCel1.u3) annotation (Line(points={{-220,-180},{-180,-180},
- {-180,-228},{-62,-228}}, color={255,0,255}));
- connect(con2.y, disExiCel1.u1) annotation (Line(points={{-118,-150},{-70,-150},
- {-70,-212},{-62,-212}}, color={255,0,255}));
- connect(disExiCel1.y, disExiCel.u1) annotation (Line(points={{-38,-220},{50,-220},
- {50,-232},{78,-232}}, color={255,0,255}));
+ annotation (Line(points={{62,-360},{220,-360}},color={255,0,255}));
+ connect(endStaPro.y, booRep4.u) annotation (Line(points={{62,-360},{80,-360},{
+ 80,-340},{118,-340}}, color={255,0,255}));
+ connect(uTowSta, and4.u2) annotation (Line(points={{-220,-240},{-180,-240},{-180,
+ -268},{-142,-268}}, color={255,0,255}));
+ connect(uChaCel, and4.u1) annotation (Line(points={{-220,370},{-190,370},{-190,
+ -260},{-142,-260}}, color={255,0,255}));
+ connect(and4.y, disExiCel1.u2) annotation (Line(points={{-118,-260},{-80,-260},
+ {-80,-280},{-62,-280}}, color={255,0,255}));
+ connect(uTowSta, disExiCel1.u3) annotation (Line(points={{-220,-240},{-180,-240},
+ {-180,-288},{-62,-288}}, color={255,0,255}));
+ connect(con2.y, disExiCel1.u1) annotation (Line(points={{-118,-210},{-70,-210},
+ {-70,-272},{-62,-272}}, color={255,0,255}));
+ connect(disExiCel1.y, disExiCel.u1) annotation (Line(points={{-38,-280},{50,-280},
+ {50,-292},{78,-292}}, color={255,0,255}));
+ connect(con9.y, celPosSet.u3) annotation (Line(points={{-18,320},{30,320},{30,
+ 222},{98,222}}, color={0,0,127}));
+ connect(enaCel.y, celPosSet.u2)
+ annotation (Line(points={{2,230},{98,230}}, color={255,0,255}));
+ connect(uIsoVal, swi.u3) annotation (Line(points={{-220,80},{-160,80},{-160,-28},
+ {118,-28}}, color={0,0,127}));
+ connect(lat.y, staPro.u)
+ annotation (Line(points={{-98,370},{58,370}}, color={255,0,255}));
+ connect(lat.y, and1.u2) annotation (Line(points={{-98,370},{-80,370},{-80,350},
+ {-170,350},{-170,-228},{18,-228}}, color={255,0,255}));
+ connect(lat.y, swi2.u2) annotation (Line(points={{-98,370},{-80,370},{-80,350},
+ {-170,350},{-170,30},{58,30}}, color={255,0,255}));
+ connect(lat.y, and2.u1) annotation (Line(points={{-98,370},{-80,370},{-80,350},
+ {-170,350},{-170,230},{-122,230}}, color={255,0,255}));
+ connect(disPro.y, holDisPro.u) annotation (Line(points={{-18,50},{0,50},{0,130},
+ {-110,130},{-110,150},{-102,150}}, color={255,0,255}));
+ connect(havCha.y, truHol2.u) annotation (Line(points={{-158,370},{-130,370},{-130,
+ 100},{-102,100}}, color={255,0,255}));
+ connect(holDisPro.y, booRep5.u)
+ annotation (Line(points={{-78,150},{-42,150}}, color={255,0,255}));
+ connect(booRep5.y, ideDisCel.u1)
+ annotation (Line(points={{-18,150},{58,150}}, color={255,0,255}));
+ connect(truHol2.y, ideDisCel.u2) annotation (Line(points={{-78,100},{20,100},{
+ 20,142},{58,142}}, color={255,0,255}));
+ connect(ideDisCel.y, offVal.u2)
+ annotation (Line(points={{82,150},{118,150}}, color={255,0,255}));
+ connect(con3.y, offVal.u1) annotation (Line(points={{82,190},{100,190},{100,158},
+ {118,158}}, color={0,0,127}));
+ connect(uIsoVal, offVal.u3) annotation (Line(points={{-220,80},{100,80},{100,142},
+ {118,142}}, color={0,0,127}));
+ connect(booRep5.y, swi3.u2) annotation (Line(points={{-18,150},{40,150},{40,100},
+ {158,100}}, color={255,0,255}));
+ connect(offVal.y, swi3.u1) annotation (Line(points={{142,150},{150,150},{150,108},
+ {158,108}}, color={0,0,127}));
+ connect(swi.y, swi3.u3) annotation (Line(points={{142,-20},{150,-20},{150,92},
+ {158,92}}, color={0,0,127}));
+ connect(swi3.y, yIsoVal)
+ annotation (Line(points={{182,100},{220,100}}, color={0,0,127}));
annotation (
defaultComponentName="towCelStaPro",
Diagram(coordinateSystem(preserveAspectRatio=false,
- extent={{-200,-340},{200,340}}), graphics={
+ extent={{-200,-400},{200,400}}), graphics={
Rectangle(
- extent={{-138,-2},{178,-138}},
+ extent={{-138,-62},{178,-198}},
fillColor={210,210,210},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Text(
- extent={{12,-120},{144,-144}},
+ extent={{12,-180},{144,-204}},
pattern=LinePattern.None,
fillColor={210,210,210},
fillPattern=FillPattern.Solid,
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/Validation/StageProcesses.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/Validation/StageProcesses.mo
index 5294227782d..528b7d84f6b 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/Validation/StageProcesses.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Subsequences/Validation/StageProcesses.mo
@@ -32,8 +32,8 @@ model StageProcesses
annotation (Placement(transformation(extent={{100,30},{120,50}})));
Buildings.Controls.OBC.CDL.Logical.Pre pre[4] "Tower cell actual status"
annotation (Placement(transformation(extent={{100,-10},{120,10}})));
- Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol1[4](
- final samplePeriod=fill(10, 4)) "Isolation valve actual position"
+ Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol1[4](final
+ samplePeriod=fill(10, 4)) "Isolation valve actual position"
annotation (Placement(transformation(extent={{100,-50},{120,-30}})));
Buildings.Controls.OBC.CDL.Logical.Pre pre1[4](
pre_u_start={false,true,true,false}) "Tower cell actual status"
diff --git a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Validation/Controller.mo b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Validation/Controller.mo
index b9c8dd71dd7..d87669bf262 100644
--- a/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Validation/Controller.mo
+++ b/Buildings/Controls/OBC/ASHRAE/PrimarySystem/ChillerPlant/Towers/Staging/Validation/Controller.mo
@@ -9,81 +9,69 @@ model Controller "Validation sequence of tower cell controller"
final staVec={0,0.5,1,1.5,2},
final towCelOnSet={0,1,1,2,2})
"Cooling tower staging control, specifies total number of cells and the staging process"
- annotation (Placement(transformation(extent={{40,-40},{60,-20}})));
+ annotation (Placement(transformation(extent={{40,-20},{60,0}})));
Buildings.Controls.OBC.CDL.Logical.Pre pre1[2] "Actual cells status"
- annotation (Placement(transformation(extent={{80,-60},{100,-40}})));
+ annotation (Placement(transformation(extent={{80,-24},{100,-4}})));
Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol[2](
final samplePeriod=fill(2, 2)) "Actual isolation valve positions"
- annotation (Placement(transformation(extent={{80,-100},{100,-80}})));
+ annotation (Placement(transformation(extent={{80,-80},{100,-60}})));
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse wseSta(
final width=0.15,
final period=3600,
final shift=300) "Water side economizer status"
- annotation (Placement(transformation(extent={{-80,-70},{-60,-50}})));
+ annotation (Placement(transformation(extent={{-80,-50},{-60,-30}})));
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp chiStaGen(
final height=1.2,
final duration=3600,
final offset=1) "Generate chiller stage"
- annotation (Placement(transformation(extent={{-120,10},{-100,30}})));
+ annotation (Placement(transformation(extent={{-120,30},{-100,50}})));
Buildings.Controls.OBC.CDL.Conversions.RealToInteger chiStaSet
"Chiller stage setpoint"
- annotation (Placement(transformation(extent={{-80,10},{-60,30}})));
+ annotation (Placement(transformation(extent={{-80,30},{-60,50}})));
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul2(
final width=0.75,
final period=3600) "Boolean pulse"
- annotation (Placement(transformation(extent={{-120,-30},{-100,-10}})));
+ annotation (Placement(transformation(extent={{-120,-10},{-100,10}})));
Buildings.Controls.OBC.CDL.Logical.Not StaTow "Stage tower cells"
- annotation (Placement(transformation(extent={{-80,-30},{-60,-10}})));
+ annotation (Placement(transformation(extent={{-80,-10},{-60,10}})));
Buildings.Controls.OBC.CDL.Reals.Sources.Constant conWatPumSpe[2](
final k=fill(0.5, 2)) "Condenser water pump speed"
- annotation (Placement(transformation(extent={{-80,-130},{-60,-110}})));
+ annotation (Placement(transformation(extent={{-80,-110},{-60,-90}})));
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con1(
final k=false)
"Constant false"
- annotation (Placement(transformation(extent={{-120,120},{-100,140}})));
+ annotation (Placement(transformation(extent={{-120,110},{-100,130}})));
Buildings.Controls.OBC.CDL.Integers.Sources.Constant chiStaSet2(
final k=1)
"Chiller stage setpoint"
- annotation (Placement(transformation(extent={{-80,90},{-60,110}})));
- Buildings.Controls.OBC.CDL.Integers.Sources.Pulse pul1(
- final width=0.001,
- final period=3600)
- "Block that generates pulse signal of type Integer at simulation start time and has infinite number of periods"
- annotation (Placement(transformation(extent={{-120,50},{-100,70}})));
- Buildings.Controls.OBC.CDL.Integers.Subtract intSub
- "Chiller stage setpoint"
- annotation (Placement(transformation(extent={{-40,70},{-20,90}})));
+ annotation (Placement(transformation(extent={{-80,70},{-60,90}})));
equation
connect(pre1.y, towSta.uTowSta)
- annotation (Line(points={{102,-50},{120,-50},{120,-10},{-14,-10},{-14,-39},{
- 38,-39}}, color={255,0,255}));
+ annotation (Line(points={{102,-14},{120,-14},{120,10},{-14,10},{-14,-19},{38,
+ -19}}, color={255,0,255}));
connect(towSta.yIsoVal, zerOrdHol.u)
- annotation (Line(points={{62,-30},{72,-30},{72,-90},{78,-90}}, color={0,0,127}));
+ annotation (Line(points={{62,-10},{70,-10},{70,-70},{78,-70}}, color={0,0,127}));
connect(zerOrdHol.y, towSta.uIsoVal)
- annotation (Line(points={{102,-90},{120,-90},{120,-110},{-20,-110},{-20,-37},
- {38,-37}}, color={0,0,127}));
+ annotation (Line(points={{102,-70},{120,-70},{120,-90},{-20,-90},{-20,-17},{
+ 38,-17}}, color={0,0,127}));
connect(chiStaGen.y,chiStaSet. u)
- annotation (Line(points={{-98,20},{-82,20}}, color={0,0,127}));
+ annotation (Line(points={{-98,40},{-82,40}}, color={0,0,127}));
connect(booPul2.y,StaTow. u)
- annotation (Line(points={{-98,-20},{-82,-20}}, color={255,0,255}));
- connect(chiStaSet.y, towSta.uChiStaSet) annotation (Line(points={{-58,20},{24,
- 20},{24,-23},{38,-23}}, color={255,127,0}));
- connect(StaTow.y, towSta.uTowStaCha) annotation (Line(points={{-58,-20},{-40,-20},
- {-40,-25},{38,-25}}, color={255,0,255}));
- connect(wseSta.y, towSta.uWse) annotation (Line(points={{-58,-60},{-34,-60},{-34,
- -27},{38,-27}}, color={255,0,255}));
- connect(conWatPumSpe.y, towSta.uConWatPumSpe) annotation (Line(points={{-58,-120},
- {-26,-120},{-26,-33},{38,-33}}, color={0,0,127}));
- connect(towSta.yTowSta, pre1.u) annotation (Line(points={{62,-34},{68,-34},{68,
- -50},{78,-50}}, color={255,0,255}));
- connect(con1.y, towSta.uEnaPla) annotation (Line(points={{-98,130},{0,130},{0,
- -29},{38,-29}}, color={255,0,255}));
- connect(pul1.y, intSub.u2) annotation (Line(points={{-98,60},{-48,60},{-48,74},
- {-42,74}}, color={255,127,0}));
- connect(chiStaSet2.y, intSub.u1) annotation (Line(points={{-58,100},{-52,100},
- {-52,86},{-42,86}}, color={255,127,0}));
- connect(intSub.y, towSta.uChiSta) annotation (Line(points={{-18,80},{20,80},{20,
- -21},{38,-21}}, color={255,127,0}));
+ annotation (Line(points={{-98,0},{-82,0}}, color={255,0,255}));
+ connect(chiStaSet.y, towSta.uChiStaSet) annotation (Line(points={{-58,40},{20,
+ 40},{20,-3},{38,-3}}, color={255,127,0}));
+ connect(StaTow.y, towSta.uTowStaCha) annotation (Line(points={{-58,0},{-40,0},
+ {-40,-5},{38,-5}}, color={255,0,255}));
+ connect(wseSta.y, towSta.uWse) annotation (Line(points={{-58,-40},{-34,-40},{-34,
+ -7},{38,-7}}, color={255,0,255}));
+ connect(conWatPumSpe.y, towSta.uConWatPumSpe) annotation (Line(points={{-58,-100},
+ {-26,-100},{-26,-13},{38,-13}}, color={0,0,127}));
+ connect(towSta.yTowSta, pre1.u) annotation (Line(points={{62,-14},{78,-14}},
+ color={255,0,255}));
+ connect(con1.y, towSta.uEnaPla) annotation (Line(points={{-98,120},{0,120},{0,
+ -9},{38,-9}}, color={255,0,255}));
+ connect(chiStaSet2.y, towSta.uChiSta) annotation (Line(points={{-58,80},{30,80},
+ {30,-1},{38,-1}}, color={255,127,0}));
annotation (experiment(
StopTime=3600,
Tolerance=1e-06),
@@ -94,7 +82,50 @@ annotation (experiment(
This example validates
Buildings.Controls.OBC.ASHRAE.PrimarySystem.ChillerPlant.Towers.Staging.Controller.
+It shows the process of staging tower cells when there is chiller stage
+setpoint change and the enabling-disabling waterside economizer.
+
+-
+At begining, the current chiller stage is 1 and it starts to staging up tower cell 1.
+During the begining stage, according to the vector
staVec
current plant
+stage is 1 (the 3rd element of vector staVec
). Thus according to the
+vector towCelOnSet
,
+the total number of cell is 1. It takes 90 seconds to fully open the isolation
+valve 1 (yIsoVal[1]=1
) and then the cell 1 becomes enabled
+(uTowSta[1]=true
) at 90 seconds.
+
+-
+At 300 seconds, the waterside economizer is enabled. Thus the current plant stage
+is 1.5 (the 4th element of vector
staVec
). Thus according to the
+vector towCelOnSet
, the total number of cell is 2. It takes 90
+seconds to fully open the isolation valve 2 (yIsoVal[2]=1
) and
+then the cell 2 becomes enabled (uTowSta[2]=true
) at 390 seconds.
+
+-
+At 840 seconds, the waterside economizer becomes disabled. Thus the current
+plant stage changes to 1 (the 3rd element of vector
staVec
).
+Thus according to the vector towCelOnSet
, the total number of
+cell is 1. The isolation valve 2 becomes closed (yIsoVal[2]=0
)
+and the cell 2 becomes disabled (uTowSta[2]=false
) at 840
+seconds.
+
+-
+At 1500 seconds, the chiller stage setpoint changes to 2 and the current stage
+is still 1. Therefore the chiller plant begins staging up. However, the plant
+staging up process has not yet been into the step of staging up the tower
+(
uTowStaCha=false
). Thus there is no change to the tower cells
+and their valves.
+
+-
+At 2700 seconds, it is still in the plant staging up process and it now requires
+staging up tower cells. The plant stage is 2 (the 5th element of vector
+
staVec
). Thus according to the vector towCelOnSet
,
+the total number of cell is 2. It takes 90 seconds to fully open the isolation
+valve 2 (yIsoVal[2]=1
) and then the cell 2 becomes enabled
+(uTowSta[2]=true
) at 2790 seconds.
+
+