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.

+ ", revisions="