From c34c05affcb4fbab6bfced9f84e2782cd1f956a6 Mon Sep 17 00:00:00 2001 From: Jianjun Hu Date: Fri, 4 Oct 2024 14:23:31 -0700 Subject: [PATCH] Issue3989 pump control (#3991) * adding plant enabling signal * added filter for the chilled water side isolation valve --- .../Controls/ConstantSpeedPumpStage.mo | 80 ++++++++++++------- .../Validation/ConstantSpeedPumpStage.mo | 23 ++++-- .../BaseClasses/PartialPlantParallel.mo | 6 ++ .../Examples/BaseClasses/PartialDataCenter.mo | 10 ++- .../IntegratedPrimarySecondaryEconomizer.mo | 17 +++- ...NonIntegratedPrimarySecondaryEconomizer.mo | 18 +++-- ...ent_Validation_ElectricChillerParallel.txt | 6 +- ..._Validation_IntegratedPrimaryPlantSide.txt | 2 +- ...led_Equipment_Validation_NonIntegrated.txt | 6 +- ...uipment_Validation_WatersideEconomizer.txt | 2 +- ...onIntegratedPrimarySecondaryEconomizer.txt | 22 ++--- .../UsersGuide/ReleaseNotes/Version_12_0_0.mo | 20 +++++ 12 files changed, 150 insertions(+), 62 deletions(-) diff --git a/Buildings/Applications/DataCenters/ChillerCooled/Controls/ConstantSpeedPumpStage.mo b/Buildings/Applications/DataCenters/ChillerCooled/Controls/ConstantSpeedPumpStage.mo index 27abc3285b5..ee46ca4e1b9 100644 --- a/Buildings/Applications/DataCenters/ChillerCooled/Controls/ConstantSpeedPumpStage.mo +++ b/Buildings/Applications/DataCenters/ChillerCooled/Controls/ConstantSpeedPumpStage.mo @@ -6,12 +6,19 @@ model ConstantSpeedPumpStage "Staging control for constant speed pumps" Modelica.Blocks.Interfaces.IntegerInput cooMod "Cooling mode - 0:off, 1: free cooling mode; 2: partially mechanical cooling; 3: fully mechanical cooling" - annotation (Placement(transformation(extent={{-140,30},{-100,70}}))); + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Modelica.Blocks.Interfaces.BooleanInput on + "On signal of the plant" + annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); Modelica.Blocks.Interfaces.IntegerInput numOnChi "The number of running chillers" - annotation (Placement(transformation(extent={{-140,-70},{-100,-30}}))); + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); Modelica.Blocks.Interfaces.RealOutput y[2] "On/off signal - 0: off; 1: on" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + annotation (Placement(transformation(extent={{100,30},{120,50}}), + iconTransformation(extent={{100,-10},{120,10}}))); Modelica.StateGraph.Transition con1( enableTimer=true, @@ -33,13 +40,13 @@ model ConstantSpeedPumpStage "Staging control for constant speed pumps" rotation=-90, origin={-40,10}))); Modelica.StateGraph.InitialStep off(nIn=1, nOut=1) - "Free cooling mode" + "Free cooling mode" annotation (Placement(transformation( extent={{-10,10},{10,-10}}, rotation=-90, origin={-40,70}))); Modelica.StateGraph.StepWithSignal twoOn(nIn=1, nOut=1) - "Two chillers are commanded on" + "Two chillers are commanded on" annotation (Placement(transformation( extent={{-10,10},{10,-10}}, rotation=-90, @@ -80,19 +87,24 @@ model ConstantSpeedPumpStage "Staging control for constant speed pumps" inner Modelica.StateGraph.StateGraphRoot stateGraphRoot annotation (Placement(transformation(extent={{60,60},{80,80}}))); Modelica.Blocks.Tables.CombiTable1Ds combiTable1Ds(table=[0,0,0; 1,1,0; 2,1,1]) - annotation (Placement(transformation(extent={{70,-10},{90,10}}))); - + annotation (Placement(transformation(extent={{70,30},{90,50}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt( final integerTrue=1, final integerFalse=0) - annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + annotation (Placement(transformation(extent={{20,-60},{40,-40}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt1( final integerFalse=0, final integerTrue=2) annotation (Placement(transformation(extent={{20,-90},{40,-70}}))); Buildings.Controls.OBC.CDL.Integers.Add addInt - annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); + annotation (Placement(transformation(extent={{60,-80},{80,-60}}))); Buildings.Controls.OBC.CDL.Conversions.IntegerToReal intToRea - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{40,30},{60,50}}))); + Buildings.Controls.OBC.CDL.Integers.Switch intSwi + "Disable pumps when the plant is disabled" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Buildings.Controls.OBC.CDL.Integers.Sources.Constant zer(final k=0) + "Constant zero" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); equation connect(off.outPort[1], con1.inPort) @@ -102,12 +114,12 @@ equation pattern=LinePattern.Dash)); connect(con1.outPort, oneOn.inPort[1]) annotation (Line( - points={{-40,38.5},{-40,26},{-40.5,26},{-40.5,21}}, + points={{-40,38.5},{-40,26},{-39.75,26},{-39.75,21}}, color={0,0,0}, pattern=LinePattern.Dash)); connect(con2.inPort, oneOn.outPort[1]) annotation (Line( - points={{-40,-36},{-40,-10},{-40.25,-10},{-40.25,-0.5}}, + points={{-40,-36},{-40,-10},{-39.875,-10},{-39.875,-0.5}}, color={0,0,0}, pattern=LinePattern.Dash)); connect(con2.outPort, twoOn.inPort[1]) @@ -127,30 +139,36 @@ equation pattern=LinePattern.Dash)); connect(con3.outPort, oneOn.inPort[2]) annotation (Line( - points={{-10,-38.5},{-10,26},{-39.5,26},{-39.5,21}}, + points={{-10,-38.5},{-10,26},{-40.25,26},{-40.25,21}}, color={0,0,0}, pattern=LinePattern.Dash)); connect(con4.inPort, oneOn.outPort[2]) annotation (Line( - points={{-8,66},{-8,-10},{-39.75,-10},{-39.75,-0.5}}, + points={{-8,66},{-8,-10},{-40.125,-10},{-40.125,-0.5}}, color={0,0,0}, pattern=LinePattern.Dash)); connect(combiTable1Ds.y, y) - annotation (Line(points={{91,0},{91,0},{110,0}}, - color={0,0,127})); - connect(oneOn.active, booToInt.u) annotation (Line(points={{-29,10},{12,10},{ - 12,-40},{18,-40}}, color={255,0,255})); + annotation (Line(points={{91,40},{110,40}}, color={0,0,127})); + connect(oneOn.active, booToInt.u) annotation (Line(points={{-29,10},{12,10},{12, + -50},{18,-50}}, color={255,0,255})); connect(twoOn.active, booToInt1.u) - annotation (Line(points={{-29,-80},{18,-80}}, color={255,0,255})); - connect(booToInt.y, addInt.u1) annotation (Line(points={{41,-40},{48,-40},{48, - -54},{58,-54}}, color={255,127,0})); - connect(booToInt1.y, addInt.u2) annotation (Line(points={{41,-80},{48,-80},{ - 48,-66},{58,-66}}, color={255,127,0})); + annotation (Line(points={{-29,-80},{18,-80}}, color={255,0,255})); + connect(booToInt.y, addInt.u1) annotation (Line(points={{42,-50},{48,-50},{48, + -64},{58,-64}}, color={255,127,0})); + connect(booToInt1.y, addInt.u2) annotation (Line(points={{42,-80},{48,-80},{48, + -76},{58,-76}}, color={255,127,0})); connect(intToRea.y, combiTable1Ds.u) - annotation (Line(points={{61,0},{68,0}}, color={0,0,127})); - connect(addInt.y, intToRea.u) annotation (Line(points={{81,-60},{88,-60},{88, - -20},{30,-20},{30,0},{38,0}}, color={255,127,0})); - annotation ( Documentation(info=" + annotation (Line(points={{62,40},{68,40}}, color={0,0,127})); + connect(on, intSwi.u2) annotation (Line(points={{-120,-20},{0,-20},{0,0},{58,0}}, + color={255,0,255})); + connect(addInt.y, intSwi.u1) annotation (Line(points={{82,-70},{90,-70},{90,-30}, + {48,-30},{48,8},{58,8}}, color={255,127,0})); + connect(zer.y, intSwi.u3) annotation (Line(points={{42,-20},{54,-20},{54,-8},{ + 58,-8}}, color={255,127,0})); + connect(intSwi.y, intToRea.u) annotation (Line(points={{82,0},{90,0},{90,20},{ + 30,20},{30,40},{38,40}}, color={255,127,0})); + +annotation (Documentation(info="

This model describes a simple staging control for two constant-speed pumps in a chilled water plant with two chillers and a waterside economizer (WSE). The staging sequence @@ -168,9 +186,15 @@ equals to the number of running chillers. ", revisions="