diff --git a/Buildings/Controls/OBC/FDE/DOAS/CoolingCoil.mo b/Buildings/Controls/OBC/FDE/DOAS/CoolingCoil.mo index bf7af487fa5..0c5dc458622 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/CoolingCoil.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/CoolingCoil.mo @@ -15,10 +15,10 @@ block CoolingCoil "This block commands the cooling coil." parameter Real erwDPadj( final unit = "K", - final displayUnit = "degC", - final quantity = "ThermodynamicTemperature") = 5 + final quantity = "TemperatureDifference") = 5 "Value subtracted from ERW supply air dewpoint."; + // ---inputs--- Buildings.Controls.OBC.CDL.Interfaces.RealInput saT( final unit = "K", @@ -75,7 +75,7 @@ block CoolingCoil "This block commands the cooling coil." Buildings.Controls.OBC.CDL.Reals.Switch swi "Logical switch outputs supply air PI value when fan is proven on." - annotation(Placement(transformation(extent = {{14, -54}, {34, -34}}))); + annotation(Placement(transformation(extent={{22,-50},{42,-30}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Logical switch passes different PI calculations to yCC based on dehumidification mode." @@ -85,24 +85,27 @@ block CoolingCoil "This block commands the cooling coil." "Logical AND;true when dehumidification is on and supply fan is proven on." annotation(Placement(transformation(extent = {{-20, -14}, {0, 8}}))); - Buildings.Controls.OBC.CDL.Reals.PID conPID2 annotation(Placement(visible = true, transformation(origin = {-62, -42}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.PID conPID2(reverseActing=false) + annotation(Placement(visible = true, transformation(origin = {-62, -42}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); - Buildings.Controls.OBC.CDL.Reals.PID conPID + Buildings.Controls.OBC.CDL.Reals.PID conPID(reverseActing=false) annotation(Placement(visible = true, transformation(origin = {16, 78}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); Buildings.Controls.OBC.CDL.Psychrometrics.DewPoint_TDryBulPhi dewPoi + "Calculates dewpoint temperature for ERW return air" annotation(Placement(visible = true, transformation(origin = {-66, 48}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( - p = -erwDPadj) + p = -erwDPadj) "Ensures setpoint is below calculated dewpoint" annotation(Placement(visible = true, transformation(origin = {-36, 36}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); equation connect(con0.y, swi.u3) annotation ( - Line(points = {{2, -52}, {12, -52}}, color = {0, 0, 127})); + Line(points={{2,-52},{18,-52},{18,-48},{20,-48}}, + color = {0, 0, 127})); connect(swi.u2, supFanProof) annotation ( - Line(points = {{12, -44}, {6, -44}, {6, -96}, {-122, -96}}, color = {255, 0, 255})); + Line(points={{20,-40},{6,-40},{6,-96},{-122,-96}}, color = {255, 0, 255})); connect(and2.u1, dehumMode) annotation ( Line(points = {{-22, -3}, {-78, -3}, {-78, -4}, {-122, -4}}, color = {255, 0, 255})); @@ -117,7 +120,7 @@ equation Line(points = {{80, 76}, {122, 76}}, color = {0, 0, 127})); connect(swi.y, swi1.u3) annotation ( - Line(points = {{36, -44}, {46, -44}, {46, 68}, {56, 68}}, color = {0, 0, 127})); + Line(points={{44,-40},{46,-40},{46,68},{56,68}}, color = {0, 0, 127})); connect(saT, conPID2.u_m) annotation ( Line(points = {{-122, -36}, {-90, -36}, {-90, -54}, {-62, -54}}, color = {0, 0, 127})); @@ -126,7 +129,7 @@ equation Line(points = {{-122, -66}, {-80, -66}, {-80, -42}, {-74, -42}}, color = {0, 0, 127})); connect(conPID2.y, swi.u1) annotation ( - Line(points = {{-50, -42}, {-17, -42}, {-17, -36}, {12, -36}}, color = {0, 0, 127})); + Line(points={{-50,-42},{-17,-42},{-17,-32},{20,-32}}, color = {0, 0, 127})); connect(ccT, conPID.u_m) annotation ( Line(points = {{-122, 84}, {-22, 84}, {-22, 66}, {16, 66}}, color = {0, 0, 127})); diff --git a/Buildings/Controls/OBC/FDE/DOAS/Dewpoint.mo b/Buildings/Controls/OBC/FDE/DOAS/Dewpoint.mo index 2d991b09a5e..1b6daebb36b 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Dewpoint.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Dewpoint.mo @@ -1,201 +1,118 @@ within Buildings.Controls.OBC.FDE.DOAS; -block Dewpoint - "Calculates dewpoint temperature from Tdb and relative humidity." - // ---inputs--- - Buildings.Controls.OBC.CDL.Interfaces.RealInput relHum( - final min=0, - final max=100) - "Relative humidity sensor" - annotation (Placement(transformation(extent={{-142,52},{-102,92}}), - iconTransformation(extent={{-142,40},{-102,80}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealInput dbT( - final unit="K", - final displayUnit="degC", - final quantity="ThermodynamicTemperature") - "Dry bulb temperature sensor." - annotation (Placement(transformation(extent={{-142,12},{-102,52}}), - iconTransformation(extent={{-142,-80},{-102,-40}}))); - - // ---outputs--- - Buildings.Controls.OBC.CDL.Interfaces.RealOutput dpT( - final unit="K", - final displayUnit="degC", - final quantity="ThermodynamicTemperature") - "Dewpoint temperature" - annotation (Placement(transformation(extent={{102,-96},{142,-56}}), - iconTransformation(extent={{102,-20},{142,20}}))); - - Buildings.Controls.OBC.CDL.Reals.Log log - "Calculate natural log of input value." - annotation (Placement(transformation(extent={{-32,56},{-12,76}}))); - - Buildings.Controls.OBC.CDL.Reals.Division div - "Divide relHum by 100." - annotation (Placement(transformation(extent={{-62,56},{-42,76}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con100( - final k=100) - "Real constant 100" - annotation (Placement(transformation(extent={{-92,46},{-72,66}}))); - - Buildings.Controls.OBC.CDL.Reals.Multiply pro - "Calculate the product of dry bulb temperature (degC) and 17.27" - annotation (Placement(transformation(extent={{-30,16},{-10,36}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1727( - final k=17.27) - "Real constant 17.27" - annotation (Placement(transformation(extent={{-62,-10},{-42,10}}))); - - Buildings.Controls.OBC.CDL.Reals.Add add2 - "Add dry bulb temperature (degC) and 237.3" - annotation (Placement(transformation(extent={{-30,-34},{-10,-14}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2373( - final k=237.3) - "Real constant 237.3" - annotation (Placement(transformation(extent={{-62,-52},{-42,-32}}))); - - Buildings.Controls.OBC.CDL.Reals.Division div1 - "Output first input divided by second input." - annotation (Placement(transformation(extent={{0,10},{20,30}}))); - - Buildings.Controls.OBC.CDL.Reals.Add add1 - "Add two values." - annotation (Placement(transformation(extent={{30,16},{50,36}}))); - - Buildings.Controls.OBC.CDL.Reals.Division div2 - "Output first input divided by second input" - annotation (Placement(transformation(extent={{62,10},{82,30}}))); - - Buildings.Controls.OBC.CDL.Reals.Multiply pro1 - "Output product of two inputs" - annotation (Placement(transformation(extent={{4,-46},{24,-26}}))); - - Buildings.Controls.OBC.CDL.Reals.Division div3 - "Output first input divided by second input" - annotation (Placement(transformation(extent={{60,-52},{80,-32}}))); - - Buildings.Controls.OBC.CDL.Reals.Add add3 - "Output the sum of two inputs" - annotation (Placement(transformation(extent={{32,-80},{52,-60}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( - final k=1) - "Real constant 1" - annotation (Placement(transformation(extent={{4,-72},{24,-52}}))); - - Buildings.Controls.OBC.CDL.Reals.Add add4( - final k2=-1) - "Subtract 273.15 from dry bulb temperature." - annotation (Placement(transformation(extent={{-92,16},{-72,36}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con27315( - final k=273.15) - "Real constant 273.15" - annotation (Placement(transformation(extent={{-92,-14},{-72,6}}))); - - Buildings.Controls.OBC.CDL.Reals.Add add5 - "Add 273.15 to the final value to output dew point temperature in K" - annotation (Placement(transformation(extent={{70,-86},{90,-66}}))); - +block Dewpoint "Calculates dewpoint temperature from Tdb and relative humidity." + // ---inputs--- + Buildings.Controls.OBC.CDL.Interfaces.RealInput relHum(final min = 0, final max = 100) "Relative humidity sensor" annotation( + Placement(transformation(extent = {{-142, 52}, {-102, 92}}), iconTransformation(extent = {{-142, 40}, {-102, 80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput dbT(final unit = "K", final displayUnit = "degC", final quantity = "ThermodynamicTemperature") "Dry bulb temperature sensor." annotation( + Placement(transformation(extent = {{-142, 12}, {-102, 52}}), iconTransformation(extent = {{-142, -80}, {-102, -40}}))); + // ---outputs--- + Buildings.Controls.OBC.CDL.Interfaces.RealOutput dpT(final unit = "K", final displayUnit = "degC", final quantity = "ThermodynamicTemperature") "Dewpoint temperature" annotation( + Placement(transformation(extent = {{102, -96}, {142, -56}}), iconTransformation(extent = {{102, -20}, {142, 20}}))); + Buildings.Controls.OBC.CDL.Reals.Log log "Calculate natural log of input value." annotation( + Placement(transformation(extent = {{-32, 56}, {-12, 76}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con100(final k = 100) "Real constant 100" annotation( + Placement(transformation(extent = {{-92, 46}, {-72, 66}}))); + Buildings.Controls.OBC.CDL.Reals.Multiply pro "Calculate the product of dry bulb temperature (degC) and 17.27" annotation( + Placement(transformation(extent = {{-30, 16}, {-10, 36}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1727(final k = 17.27) "Real constant 17.27" annotation( + Placement(visible = true, transformation(origin = {6, 2}, extent = {{-62, -10}, {-42, 10}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Add add2 "Add dry bulb temperature (degC) and 237.3" annotation( + Placement(transformation(extent = {{-30, -34}, {-10, -14}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2373(final k = 237.3) "Real constant 237.3" annotation( + Placement(transformation(extent = {{-62, -52}, {-42, -32}}))); + Buildings.Controls.OBC.CDL.Reals.Add add1 "Add two values." annotation( + Placement(transformation(extent = {{30, 16}, {50, 36}}))); + Buildings.Controls.OBC.CDL.Reals.Multiply pro1 "Output product of two inputs" annotation( + Placement(visible = true, transformation(origin = {8, 4}, extent = {{4, -46}, {24, -26}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Add add3 "Output the sum of two inputs" annotation( + Placement(visible = true, transformation(origin = {0, 0}, extent = {{32, -80}, {52, -60}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k = 1) "Real constant 1" annotation( + Placement(transformation(extent = {{4, -72}, {24, -52}}))); + //Buildings.Controls.OBC.CDL.Reals.Add add4(final k2 = -1) "Subtract 273.15 from dry bulb temperature." annotation( + //Placement(transformation(extent = {{-92, 16}, {-72, 36}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con27315(final k = 273.15) "Real constant 273.15" annotation( + Placement(visible = true, transformation(origin = {-18, -14}, extent = {{-92, -14}, {-72, 6}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Add add5 "Add 273.15 to the final value to output dew point temperature in K" annotation( + Placement(transformation(extent = {{70, -86}, {90, -66}}))); + Buildings.Controls.OBC.CDL.Reals.Divide div4 "Divide relative humidity by 100" annotation( + Placement(visible = true, transformation(origin = {-52, 74}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + CDL.Reals.Divide div "Output first input divided by second input" annotation( + Placement(visible = true, transformation(origin = {10, 14}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Divide div1 "Output first input divided by second input" annotation( + Placement(visible = true, transformation(origin = {82, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Divide div2 annotation( + Placement(visible = true, transformation(origin = {72, -40}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub "subtract 273.15 from dry bulb temp" annotation( + Placement(visible = true, transformation(origin = {-76, 26}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); equation - connect(div.u1, relHum) annotation ( - Line(points={{-64,72},{-122,72}}, color={0,0,127})); - - connect(div.u2, con100.y) annotation ( - Line(points={{-64,60},{-68,60},{-68,56},{-70,56}},color={0,0,127})); - - connect(div.y, log.u) annotation ( - Line(points={{-40,66},{-34,66}}, color={0,0,127})); - - connect(con1727.y, pro.u2) annotation ( - Line(points={{-40,0},{-36,0},{-36,20},{-32,20}},color={0,0,127})); - - connect(con2373.y, add2.u2) annotation ( - Line(points={{-40,-42},{-36,-42},{-36,-30},{-32,-30}},color={0,0,127})); - - connect(pro.y, div1.u1) annotation ( - Line(points={{-8,26},{-2,26}}, color={0,0,127})); - - connect(add2.y, div1.u2) annotation ( - Line(points={{-8,-24},{-6,-24},{-6,14},{-2,14}},color={0,0,127})); - - connect(div1.y, add1.u2) annotation ( - Line(points={{22,20},{28,20}}, color={0,0,127})); - - connect(log.y, add1.u1) annotation ( - Line(points={{-10,66},{24,66},{24,32},{28,32}},color={0,0,127})); - - connect(add1.y, div2.u1) annotation ( - Line(points={{52,26},{60,26}}, color={0,0,127})); - - connect(con1727.y, div2.u2) annotation ( - Line(points={{-40,0},{54,0},{54,14},{60,14}},color={0,0,127})); - - connect(div2.y, pro1.u1) - annotation (Line(points={{84,20},{82,20},{82,-6},{-2,-6},{-2,-30},{2,-30}},color={0,0,127})); - - connect(con2373.y, pro1.u2) annotation ( - Line(points={{-40,-42},{2,-42}}, color={0,0,127})); - - connect(pro1.y, div3.u1) annotation ( - Line(points={{26,-36},{58,-36}}, color={0,0,127})); - - connect(div2.y, add3.u2) annotation ( - Line(points={{84,20},{82,20},{82,-6},{-2,-6},{-2,-76},{30,-76}}, color={0,0,127})); - - connect(add3.u1, con1.y) annotation ( - Line(points={{30,-64},{28,-64},{28,-62},{26,-62}},color={0,0,127})); - - connect(add3.y, div3.u2) annotation ( - Line(points={{54,-70},{56,-70},{56,-48},{58,-48}},color={0,0,127})); - - connect(con27315.y, add4.u2) annotation ( - Line(points={{-70,-4},{-70,14},{-98,14},{-98,20},{-94,20}}, color={0,0,127})); - - connect(dbT, add4.u1) annotation ( - Line(points={{-122,32},{-94,32}}, color={0,0,127})); - - connect(add4.y, pro.u1) annotation ( - Line(points={{-70,26},{-52,26},{-52,32},{-32,32}},color={0,0,127})); - - connect(add4.y, add2.u1)annotation ( - Line(points={{-70,26},{-64,26},{-64,-18},{-32,-18}},color={0,0,127})); - - connect(add5.y, dpT) annotation ( - Line(points={{92,-76},{122,-76}}, color={0,0,127})); - - connect(div3.y, add5.u1) annotation ( - Line(points={{82,-42},{86,-42},{86,-60},{64,-60},{64,-70},{68,-70}}, color={0,0,127})); - - connect(con27315.y, add5.u2) annotation ( - Line(points={{-70,-4},{-70,-68},{-22,-68},{-22,-82},{68,-82}}, color={0,0,127})); - - annotation (defaultComponentName="Dewpt", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={Text(extent={{-90,180},{90,76}},lineColor={28,108,200}, textStyle={TextStyle.Bold},textString="%name"),Rectangle(extent={{-100,100},{100,-100}},lineColor={179,151,128},radius=10,fillColor={255,255,255}, - fillPattern = -FillPattern.Solid),Text(extent={{-60,66},{28,-30}},lineColor={28,108,200},fillColor={28,108,200}, - fillPattern = -FillPattern.Solid,textString="T"),Text(extent={{-28,0},{62,-60}},lineColor={28,108,200},fillColor={28,108,200}, - fillPattern = -FillPattern.Solid,textString="dp"),Text(extent={{-96,74},{-58,46}},lineColor={28,108,200},fillColor={28,108,200}, - fillPattern = -FillPattern.Solid,textString="relHum"),Text(extent={{-96,-50},{-66,-70}},lineColor={28,108,200},fillColor={28,108,200}, - fillPattern = -FillPattern.Solid,textString="dbT"),Text(extent={{64,12},{98,-12}},lineColor={28,108,200},fillColor={28,108,200}, - fillPattern = -FillPattern.Solid,textString="%dpT")}), - Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" + connect(con1727.y, pro.u2) annotation( + Line(points = {{-34, 2}, {-34, 20}, {-32, 20}}, color = {0, 0, 127})); + connect(con2373.y, add2.u2) annotation( + Line(points = {{-40, -42}, {-36, -42}, {-36, -30}, {-32, -30}}, color = {0, 0, 127})); + connect(log.y, add1.u1) annotation( + Line(points = {{-10, 66}, {24, 66}, {24, 32}, {28, 32}}, color = {0, 0, 127})); + connect(con2373.y, pro1.u2) annotation( + Line(points = {{-40, -42}, {-18, -42}, {-18, -38}, {10, -38}}, color = {0, 0, 127})); + connect(add3.u1, con1.y) annotation( + Line(points = {{30, -64}, {28, -64}, {28, -62}, {26, -62}}, color = {0, 0, 127})); + // connect(con27315.y, add4.u2) annotation( + //Line(points = {{-88, -18}, {-88, 14}, {-98, 14}, {-98, 20}, {-94, 20}}, color = {0, 0, 127})); + //connect(dbT, add4.u1) annotation( + // Line(points = {{-122, 32}, {-94, 32}}, color = {0, 0, 127})); + //connect(add4.y, pro.u1) annotation( + //Line(points = {{-70, 26}, {-52, 26}, {-52, 32}, {-32, 32}}, color = {0, 0, 127})); + //connect(add4.y, add2.u1) annotation( + //Line(points = {{-70, 26}, {-64, 26}, {-64, -18}, {-32, -18}}, color = {0, 0, 127})); + connect(add5.y, dpT) annotation( + Line(points = {{92, -76}, {122, -76}}, color = {0, 0, 127})); + connect(con27315.y, add5.u2) annotation( + Line(points = {{-88, -18}, {-88, -68}, {-22, -68}, {-22, -82}, {68, -82}}, color = {0, 0, 127})); + connect(relHum, div4.u1) annotation( + Line(points = {{-122, 72}, {-82, 72}, {-82, 80}, {-64, 80}}, color = {0, 0, 127})); + connect(con100.y, div4.u2) annotation( + Line(points = {{-70, 56}, {-68, 56}, {-68, 68}, {-64, 68}}, color = {0, 0, 127})); + connect(div4.y, log.u) annotation( + Line(points = {{-40, 74}, {-38, 74}, {-38, 66}, {-34, 66}}, color = {0, 0, 127})); + connect(add2.y, div.u2) annotation( + Line(points = {{-8, -24}, {-6, -24}, {-6, 8}, {-2, 8}}, color = {0, 0, 127})); + connect(pro.y, div.u1) annotation( + Line(points = {{-8, 26}, {-6, 26}, {-6, 20}, {-2, 20}}, color = {0, 0, 127})); + connect(div.y, add1.u2) annotation( + Line(points = {{22, 14}, {22, 20}, {28, 20}}, color = {0, 0, 127})); + connect(add1.y, div1.u1) annotation( + Line(points = {{52, 26}, {70, 26}}, color = {0, 0, 127})); + connect(con1727.y, div1.u2) annotation( + Line(points = {{-34, 2}, {64, 2}, {64, 14}, {70, 14}}, color = {0, 0, 127})); + connect(div1.y, add3.u2) annotation( + Line(points = {{94, 20}, {108, 20}, {108, -18}, {-6, -18}, {-6, -76}, {30, -76}}, color = {0, 0, 127})); + connect(pro1.y, div2.u1) annotation( + Line(points = {{34, -32}, {47, -32}, {47, -34}, {60, -34}}, color = {0, 0, 127})); + connect(add3.y, div2.u2) annotation( + Line(points = {{54, -70}, {54, -59}, {60, -59}, {60, -46}}, color = {0, 0, 127})); + connect(div2.y, add5.u1) annotation( + Line(points = {{84, -40}, {94, -40}, {94, -56}, {62, -56}, {62, -70}, {68, -70}}, color = {0, 0, 127})); + connect(dbT, sub.u1) annotation( + Line(points = {{-122, 32}, {-88, 32}}, color = {0, 0, 127})); + connect(con27315.y, sub.u2) annotation( + Line(points = {{-88, -18}, {-82, -18}, {-82, 6}, {-96, 6}, {-96, 20}, {-88, 20}}, color = {0, 0, 127})); + connect(sub.y, pro.u1) annotation( + Line(points = {{-64, 26}, {-50, 26}, {-50, 32}, {-32, 32}}, color = {0, 0, 127})); + connect(sub.y, add2.u1) annotation( + Line(points = {{-64, 26}, {-64, -18}, {-32, -18}}, color = {0, 0, 127})); + connect(div1.y, pro1.u1) annotation( + Line(points = {{94, 20}, {94, -8}, {2, -8}, {2, -26}, {10, -26}}, color = {0, 0, 127})); + annotation( + defaultComponentName = "Dewpt", + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics = {Text(textColor = {28, 108, 200}, extent = {{-90, 180}, {90, 76}}, textString = "%name", textStyle = {TextStyle.Bold}), Rectangle(lineColor = {179, 151, 128}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}, radius = 10), Text(textColor = {28, 108, 200}, extent = {{-60, 66}, {28, -30}}, textString = "T"), Text(textColor = {28, 108, 200}, extent = {{-28, 0}, {62, -60}}, textString = "dp"), Text(textColor = {28, 108, 200}, extent = {{-96, 74}, {-58, 46}}, textString = "relHum"), Text(textColor = {28, 108, 200}, extent = {{-96, -50}, {-66, -70}}, textString = "dbT"), Text(textColor = {28, 108, 200}, extent = {{64, 12}, {98, -12}}, textString = "%dpT")}), + Diagram(coordinateSystem(preserveAspectRatio = false)), + Documentation(revisions = " -", info=" +", info = "

Dewpoint Temperature Calculation

This block calculates dewpoint (dpT) using a reduced formula that only diff --git a/Buildings/Controls/OBC/FDE/DOAS/EnergyWheel.mo b/Buildings/Controls/OBC/FDE/DOAS/EnergyWheel.mo index 0330a98d377..083123cde22 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/EnergyWheel.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/EnergyWheel.mo @@ -3,7 +3,7 @@ block EnergyWheel "This block commands the energy recovery wheel and associated parameter Real recSet( final unit = "K", final displayUnit = "degC", - final quantity = "ThermodynamicTemperature") = 7 +273.15 + final quantity = "ThermodynamicTemperature") = 7 "Energy recovery set point."; parameter Real Thys( @@ -94,7 +94,7 @@ block EnergyWheel "This block commands the energy recovery wheel and associated Buildings.Controls.OBC.CDL.Logical.MultiAnd mulAnd(nin=3) "Logical AND; true when fan is proven, economizer mode is off, and ERW temperature start conditions are met." - annotation (Placement(transformation(extent={{62,10},{82,30}}))); + annotation (Placement(transformation(extent={{66,8},{86,28}}))); Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical NOT; true when economizer mode is off." @@ -144,13 +144,15 @@ equation Line(points = {{-28, 50}, {-122, 50}}, color = {255, 0, 255})); connect(mulAnd.y, erwStart) - annotation (Line(points={{84,20},{122,20}}, color={255,0,255})); + annotation (Line(points={{88,18},{104,18},{104,20},{122,20}}, + color={255,0,255})); connect(max.y, swi.u1) annotation ( Line(points = {{-40, -68}, {64, -68}}, color = {0, 0, 127})); - connect(mulAnd.y, swi.u2) annotation (Line(points={{84,20},{88,20},{88,-58},{ - 56,-58},{56,-76},{64,-76}}, color={255,0,255})); + connect(mulAnd.y, swi.u2) annotation (Line(points={{88,18},{88,-20},{92,-20},{ + 92,-58},{58,-58},{58,-76},{64,-76}}, + color={255,0,255})); connect(con0.y, swi.u3) annotation ( Line(points = {{52, -84}, {64, -84}}, color = {0, 0, 127})); @@ -169,8 +171,9 @@ equation connect(not2.y, or2.u2) annotation ( Line(points = {{56, 50}, {58, 50}, {58, 58}, {60, 58}}, color = {255, 0, 255})); - connect(mulAnd.y, not2.u) annotation (Line(points={{84,20},{88,20},{88,36},{ - 28,36},{28,50},{32,50}}, color={255,0,255})); + connect(mulAnd.y, not2.u) annotation (Line(points={{88,18},{88,20},{98,20},{98, + 36},{28,36},{28,50},{32,50}}, + color={255,0,255})); connect(or2.y, bypDam) annotation ( Line(points = {{84, 66}, {122, 66}}, color = {255, 0, 255})); @@ -209,11 +212,11 @@ equation connect(abs.y, hys.u) annotation (Line(points={{-14, 2}, {-4, 2}}, color={0,0,127})); connect(supFanProof, mulAnd.u[1]) annotation (Line(points={{-122,80},{-70,80}, - {-70,88},{20,88},{20,24.6667},{60,24.6667}}, color={255,0,255})); - connect(not1.y, mulAnd.u[2]) annotation (Line(points={{-4,50},{10,50},{10,20}, - {60,20}}, color={255,0,255})); + {-70,88},{20,88},{20,22.6667},{64,22.6667}}, color={255,0,255})); + connect(not1.y, mulAnd.u[2]) annotation (Line(points={{-4,50},{10,50},{10,18}, + {64,18}}, color={255,0,255})); connect(truDel.y, mulAnd.u[3]) annotation (Line(points={{54,0},{56,0},{56, - 15.3333},{60,15.3333}}, color={255,0,255})); + 13.3333},{64,13.3333}}, color={255,0,255})); annotation ( defaultComponentName = "ERWcon", Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics={ Rectangle(fillColor = {255, 255, 255}, diff --git a/Buildings/Controls/OBC/FDE/DOAS/HeatingCoil.mo b/Buildings/Controls/OBC/FDE/DOAS/HeatingCoil.mo index 7363bb3a0b7..16143821b11 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/HeatingCoil.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/HeatingCoil.mo @@ -1,84 +1,83 @@ within Buildings.Controls.OBC.FDE.DOAS; - block HeatingCoil "This block commands the heating coil." - parameter Real SArhcPIk = 0.0000001 + parameter Real SArhcPIk = 0.0000001 "Heating coil SAT PI gain value k."; - - parameter Real SArhcPITi = 0.000025 + + parameter Real SArhcPITi = 0.000025 "Heating coil SAT PI time constant value Ti."; - + // ---inputs--- - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput supFanProof - "True when supply fan is proven on." + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput supFanProof + "True when supply fan is proven on." annotation(Placement(transformation(extent = {{-142, -20}, {-102, 20}}), iconTransformation(extent = {{-142, -20}, {-102, 20}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealInput saT "Supply air temperature sensor value." + + Buildings.Controls.OBC.CDL.Interfaces.RealInput saT "Supply air temperature sensor value." annotation(Placement(transformation(extent = {{-142, -60}, {-102, -20}}), iconTransformation(extent = {{-142, -70}, {-102, -30}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealInput supHeaSP + + Buildings.Controls.OBC.CDL.Interfaces.RealInput supHeaSP "Supply air temperature heating set point." annotation(Placement(transformation(extent = {{-142, 16}, {-102, 56}}), iconTransformation(extent = {{-142, 28}, {-102, 68}}))); - + // ---outputs--- - Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRHC "Reheat coil valve command." + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yRHC "Reheat coil valve command." annotation(Placement(transformation(extent = {{102, -20}, {142, 20}}), iconTransformation(extent = {{102, -20}, {142, 20}}))); - - Buildings.Controls.OBC.CDL.Reals.Switch swi - "Logical switch passes supply air heating set point when supply fan is proven otherwise sends 0 set point." annotation(Placement(transformation(extent = {{-20, -10}, {0, 10}}))); - + + Buildings.Controls.OBC.CDL.Reals.Switch swi + "Logical switch passes supply air heating set point when supply fan is proven otherwise sends 0 set point." annotation(Placement(transformation(extent={{36,-12}, + {56,8}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con0( - final k = 0) - "Real constant 0" - annotation(Placement(transformation(extent = {{-52, -28}, {-32, -8}}))); - + final k = 0) + "Real constant 0" + annotation(Placement(transformation(extent={{-20,-38},{0,-18}}))); + Buildings.Controls.OBC.CDL.Reals.PID conPID1( - Ti = SArhcPITi, - k = SArhcPIk) - annotation(Placement(visible = true, transformation(origin = {32, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); - + Ti = SArhcPITi, + k = SArhcPIk) + annotation(Placement(visible = true, transformation(origin={-30,24}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + equation - connect(swi.u2, supFanProof) annotation( - Line(points = {{-22, 0}, {-122, 0}}, color = {255, 0, 255})); - - connect(con0.y, swi.u3) annotation( - Line(points = {{-30, -18}, {-26, -18}, {-26, -8}, {-22, -8}}, color = {0, 0, 127})); - - connect(swi.u1, supHeaSP) annotation( - Line(points = {{-22, 8}, {-32, 8}, {-32, 36}, {-122, 36}}, color = {0, 0, 127})); - - connect(swi.y, conPID1.u_s) annotation( - Line(points = {{2, 0}, {20, 0}}, color = {0, 0, 127})); - - connect(saT, conPID1.u_m) annotation( - Line(points = {{-122, -40}, {32, -40}, {32, -12}}, color = {0, 0, 127})); - - connect(conPID1.y, yRHC) annotation( - Line(points = {{44, 0}, {122, 0}}, color = {0, 0, 127})); - - annotation( + connect(swi.u2, supFanProof) annotation ( + Line(points={{34,-2},{-62,-2},{-62,0},{-122,0}}, + color = {255, 0, 255})); + + connect(con0.y, swi.u3) annotation ( + Line(points={{2,-28},{12,-28},{12,-12},{28,-12},{28,-10},{34,-10}}, + color = {0, 0, 127})); + + connect(saT, conPID1.u_m) annotation ( + Line(points={{-122,-40},{-30,-40},{-30,12}}, color = {0, 0, 127})); + + connect(conPID1.y, swi.u1) annotation (Line(points={{-18,24},{-4,24},{-4,6},{ + 34,6}}, color={0,0,127})); + connect(supHeaSP, conPID1.u_s) annotation (Line(points={{-122,36},{-86,36},{ + -86,32},{-50,32},{-50,24},{-42,24}}, color={0,0,127})); + connect(swi.y, yRHC) annotation (Line(points={{58,-2},{90,-2},{90,0},{122,0}}, + color={0,0,127})); + annotation ( defaultComponentName = "Heating", - Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics = {Rectangle(lineColor = {179, 151, 128}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, extent = {{-100, 100}, {100, -100}}, radius = 10), Rectangle(lineColor = {238, 46, 47}, fillColor = {254, 56, 30}, - fillPattern = -FillPattern.Solid, extent = {{-22, 68}, {6, -66}}), Rectangle(fillColor = {162, 29, 33}, - fillPattern = -FillPattern.Solid, extent = {{-14, 58}, {68, 56}}), Ellipse(lineColor = {28, 108, 200}, fillColor = {162, 29, 33}, - fillPattern = -FillPattern.Solid, extent = {{-16, 60}, {-10, 54}}), Rectangle(fillColor = {162, 29, 33}, - fillPattern = -FillPattern.Solid, extent = {{-2, -56}, {80, -58}}), Ellipse(lineColor = {28, 108, 200}, fillColor = {162, 29, 33}, - fillPattern = -FillPattern.Solid, extent = {{-4, -54}, {2, -60}}), Polygon(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, points = {{42, -58}, {30, -66}, {30, -50}, {42, -58}}), Polygon(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, points = {{42, -58}, {54, -66}, {54, -50}, {42, -58}}), Ellipse(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, extent = {{38, -54}, {46, -62}}), Line(points = {{42, -48}, {42, -54}}, color = {127, 0, 0}), Ellipse(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, extent = {{36, -32}, {48, -46}}), Rectangle(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, - fillPattern = + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics={ Rectangle(lineColor = {179, 151, 128}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, extent = {{-100, 100}, {100, -100}}, radius = 10), Rectangle(lineColor = {238, 46, 47}, fillColor = {254, 56, 30}, + fillPattern= +FillPattern.Solid, extent = {{-22, 68}, {6, -66}}), Rectangle(fillColor = {162, 29, 33}, + fillPattern= +FillPattern.Solid, extent = {{-14, 58}, {68, 56}}), Ellipse(lineColor = {28, 108, 200}, fillColor = {162, 29, 33}, + fillPattern= +FillPattern.Solid, extent = {{-16, 60}, {-10, 54}}), Rectangle(fillColor = {162, 29, 33}, + fillPattern= +FillPattern.Solid, extent = {{-2, -56}, {80, -58}}), Ellipse(lineColor = {28, 108, 200}, fillColor = {162, 29, 33}, + fillPattern= +FillPattern.Solid, extent = {{-4, -54}, {2, -60}}), Polygon(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, points = {{42, -58}, {30, -66}, {30, -50}, {42, -58}}), Polygon(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, points = {{42, -58}, {54, -66}, {54, -50}, {42, -58}}), Ellipse(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, extent = {{38, -54}, {46, -62}}), Line(points = {{42, -48}, {42, -54}}, color = {127, 0, 0}), Ellipse(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, extent = {{36, -32}, {48, -46}}), Rectangle(lineColor = {127, 0, 0}, fillColor = {255, 255, 255}, + fillPattern= FillPattern.Solid, extent = {{36, -38}, {48, -48}}), Text(textColor = {28, 108, 200}, extent = {{-90, 180}, {90, 76}}, textString = "%name", textStyle = {TextStyle.Bold}), Text(textColor = {28, 108, 200}, extent = {{-98, 8}, {-54, -6}}, textString = "supFanProof"), Text(textColor = {28, 108, 200}, extent = {{58, 8}, {102, -6}}, textString = "yRHC"), Text(textColor = {28, 108, 200}, extent = {{-98, 54}, {-58, 44}}, textString = "supHeaSP"), Text(textColor = {28, 108, 200}, extent = {{-108, -42}, {-68, -54}}, textString = "saT")}), Diagram(coordinateSystem(preserveAspectRatio = false)), experiment(StopTime = 5760, __Dymola_Algorithm = "Dassl")); diff --git a/Buildings/Controls/OBC/FDE/DOAS/SupplyFanController.mo b/Buildings/Controls/OBC/FDE/DOAS/SupplyFanController.mo index 7e792416c89..f9d8001a91c 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/SupplyFanController.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/SupplyFanController.mo @@ -1,147 +1,150 @@ within Buildings.Controls.OBC.FDE.DOAS; - block SupplyFanController "This block manages start, stop, status, and speed of the supply fan." - + parameter Real minDDSPset( - min = 0, - final unit = "Pa", - final quantity = "PressureDifference") = 125 + min = 0, + final unit = "Pa", + final quantity = "PressureDifference") = 125 "Minimum down duct static pressure reset value" annotation(Dialog(group = "DDSP range")); - + parameter Real maxDDSPset( - min = 0, - final unit = "Pa", - final quantity = "PressureDifference") = 500 + min = 0, + final unit = "Pa", + final quantity = "PressureDifference") = 500 "Maximum down duct static pressure reset value" annotation(Dialog(group = "DDSP range")); - + parameter Real cvDDSPset( - min = 0, - final unit = "Pa", + min = 0, + final unit = "Pa", final quantity = "PressureDifference") = 250 "Constant volume down duct static pressure set point"; - + parameter Real damSet( min = 0, max = 1, - final unit = "1") = 0.9 + final unit = "1") = 0.9 "DDSP terminal damper percent open set point"; - - parameter Boolean vvUnit = true + + parameter Boolean vvUnit = true "Set true when unit serves variable volume system."; - - parameter Real DampspPIk = 0.0000001 + + parameter Real DampspPIk = 0.0000001 "Damper position setpoint PI gain value k."; - - parameter Real DampspPITi = 0.000025 + + parameter Real DampspPITi = 0.000025 "Damper position setpoint PI time constant value Ti."; - + parameter Real FSspPIk = 0.0000001 " Fan speed set point SAT PI gain value k."; - - parameter Real MinFS = 0.0000001 + + parameter Real MinFS = 0.0000001 "Minimum Fan Speed"; - - parameter Real FSspPITi = 0.000025 + + parameter Real FSspPITi = 0.000025 "Fan speed set point SAT PI time constant value Ti."; // ---inputs--- - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput occ - "True when occupied mode is active" + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput occ + "True when occupied mode is active" annotation(Placement(transformation(extent = {{-142, 60}, {-102, 100}}), iconTransformation(extent = {{-140, 50}, {-100, 90}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealInput mostOpenDam if vvUnit - "Most open damper position from all terminal units served." + + Buildings.Controls.OBC.CDL.Interfaces.RealInput mostOpenDam if vvUnit + "Most open damper position from all terminal units served." annotation(Placement(transformation(extent = {{-142, -24}, {-102, 16}}), iconTransformation(extent = {{-140, 14}, {-100, 54}}))); - - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput supFanStatus - "True when supply fan is proven on." + + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput supFanStatus + "True when supply fan is proven on." annotation(Placement(transformation(extent = {{-142, 22}, {-102, 62}}), iconTransformation(extent = {{-140, -56}, {-100, -16}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealInput DDSP "Down duct static pressure measurement." + + Buildings.Controls.OBC.CDL.Interfaces.RealInput DDSP "Down duct static pressure measurement." annotation(Placement(transformation(extent = {{-142, -106}, {-102, -66}}), iconTransformation(extent = {{-140, -92}, {-100, -52}}))); // ---outputs--- - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput supFanStart - "Command supply fan to start when true." + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput supFanStart + "Command supply fan to start when true." annotation(Placement(transformation(extent = {{102, 60}, {142, 100}}), iconTransformation(extent = {{100, 32}, {140, 72}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealOutput supFanSpeed - "Supply fan speed command" + + Buildings.Controls.OBC.CDL.Interfaces.RealOutput supFanSpeed + "Supply fan speed command" annotation(Placement(transformation(extent = {{102, -50}, {142, -10}}), iconTransformation(extent = {{100, -64}, {140, -24}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Constant dampSet( - k = damSet) if vvUnit - "Most open damper position set point." + k = damSet) if vvUnit + "Most open damper position set point." annotation(Placement(transformation(extent = {{-98, 4}, {-78, 24}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Constant cvDDSPsetpt( - final k = cvDDSPset) if not vvUnit + final k = cvDDSPset) if not vvUnit "DDSP set point for constant volume systems." annotation(Placement(transformation(extent = {{-72, -64}, {-52, -44}}))); - - Buildings.Controls.OBC.CDL.Reals.Switch swi - "Swtich passes fan speed set point when true; 0 when false." + + Buildings.Controls.OBC.CDL.Reals.Switch swi + "Swtich passes fan speed set point when true; 0 when false." annotation(Placement(transformation(extent = {{14, -40}, {34, -20}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con0( - k = MinFS) - "Real constant 0" + k = MinFS) + "Real constant 0" annotation(Placement(transformation(extent = {{-26, -64}, {-6, -44}}))); - + Buildings.Controls.OBC.CDL.Reals.PID DamperSPPI( - Ti = DampspPITi, - k = DampspPIk) if vvUnit + Ti = DampspPITi, + k = DampspPIk, + yMax=maxDDSPset, + yMin=minDDSPset, + reverseActing=false) if + vvUnit annotation(Placement(visible = true, transformation(origin = {-38, 22}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); - + Buildings.Controls.OBC.CDL.Reals.PID FanSpeedSPPI( - Ti = FSspPITi, - k = FSspPIk) + Ti = FSspPITi, + k = FSspPIk) annotation(Placement(visible = true, transformation(origin = {62, -30}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); - - Buildings.Controls.OBC.CDL.Logical.Timer - tim(t = 300) + + Buildings.Controls.OBC.CDL.Logical.Timer + tim(t = 300) annotation(Placement(visible = true, transformation(origin = {-8, 88}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); - + equation - connect(con0.y, swi.u3) annotation( + connect(con0.y, swi.u3) annotation ( Line(points = {{-4, -54}, {4, -54}, {4, -38}, {12, -38}}, color = {0, 0, 127})); - - connect(supFanStatus, swi.u2) annotation( + + connect(supFanStatus, swi.u2) annotation ( Line(points = {{-122, 42}, {0, 42}, {0, -30}, {12, -30}}, color = {255, 0, 255})); - - connect(cvDDSPsetpt.y, swi.u1) annotation( + + connect(cvDDSPsetpt.y, swi.u1) annotation ( Line(points = {{-50, -54}, {-34, -54}, {-34, -22}, {12, -22}}, color = {0, 0, 127})); - - connect(dampSet.y, DamperSPPI.u_s) annotation( + + connect(dampSet.y, DamperSPPI.u_s) annotation ( Line(points = {{-76, 14}, {-71, 14}, {-71, 22}, {-50, 22}}, color = {0, 0, 127})); - - connect(mostOpenDam, DamperSPPI.u_m) annotation( + + connect(mostOpenDam, DamperSPPI.u_m) annotation ( Line(points = {{-122, -4}, {-38, -4}, {-38, 10}}, color = {0, 0, 127})); - - connect(DamperSPPI.y, swi.u1) annotation( + + connect(DamperSPPI.y, swi.u1) annotation ( Line(points = {{-26, 22}, {-26, -22}, {12, -22}}, color = {0, 0, 127})); - - connect(swi.y, FanSpeedSPPI.u_s) annotation( + + connect(swi.y, FanSpeedSPPI.u_s) annotation ( Line(points = {{36, -30}, {50, -30}}, color = {0, 0, 127})); - - connect(DDSP, FanSpeedSPPI.u_m) annotation( + + connect(DDSP, FanSpeedSPPI.u_m) annotation ( Line(points = {{-122, -86}, {62, -86}, {62, -42}}, color = {0, 0, 127})); - - connect(FanSpeedSPPI.y, supFanSpeed) annotation( + + connect(FanSpeedSPPI.y, supFanSpeed) annotation ( Line(points = {{74, -30}, {122, -30}}, color = {0, 0, 127})); - - connect(occ, tim.u) annotation( + + connect(occ, tim.u) annotation ( Line(points = {{-122, 80}, {-69, 80}, {-69, 88}, {-20, 88}}, color = {255, 0, 255})); - - connect(tim.passed, supFanStart) annotation( + + connect(tim.passed, supFanStart) annotation ( Line(points = {{4, 80}, {122, 80}}, color = {255, 0, 255})); - - annotation( + + annotation ( defaultComponentName = "SFcon", - Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics = {Rectangle(lineColor = {179, 151, 128}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, extent = {{-100, 100}, {100, -100}}, radius = 10), Rectangle(lineColor = {162, 29, 33}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, extent = {{-8, 40}, {54, -14}}), Text(textColor = {28, 108, 200}, extent = {{-90, 180}, {90, 76}}, textString = "%name", textStyle = {TextStyle.Bold}), Ellipse(lineColor = {162, 29, 33}, fillColor = {255, 255, 255}, - fillPattern = -FillPattern.Solid, extent = {{-54, 40}, {28, -42}}), Ellipse(lineColor = {162, 29, 33}, fillColor = {255, 255, 255}, - fillPattern = + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics={ Rectangle(lineColor = {179, 151, 128}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, extent = {{-100, 100}, {100, -100}}, radius = 10), Rectangle(lineColor = {162, 29, 33}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, extent = {{-8, 40}, {54, -14}}), Text(textColor = {28, 108, 200}, extent = {{-90, 180}, {90, 76}}, textString = "%name", textStyle = {TextStyle.Bold}), Ellipse(lineColor = {162, 29, 33}, fillColor = {255, 255, 255}, + fillPattern= +FillPattern.Solid, extent = {{-54, 40}, {28, -42}}), Ellipse(lineColor = {162, 29, 33}, fillColor = {255, 255, 255}, + fillPattern= FillPattern.Solid, extent = {{-24, 12}, {0, -12}}), Text(textColor = {28, 108, 200}, extent = {{-108, 78}, {-64, 62}}, textString = "occ"), Text(textColor = {28, 108, 200}, extent = {{-100, -30}, {-58, -44}}, textString = "Status"), Text(textColor = {28, 108, 200}, extent = {{62, 60}, {106, 44}}, textString = "Start"), Text(textColor = {28, 108, 200}, extent = {{56, 8}, {106, -8}}, textString = "Proof"), Text(textColor = {28, 108, 200}, extent = {{-102, -66}, {-60, -78}}, textString = "DDSP"), Text(textColor = {28, 108, 200}, extent = {{56, -36}, {106, -52}}, textString = "Speed"), Line(points = {{-54, 54}, {-10, 52}, {-50, 52}}, color = {0, 127, 0}, pattern = LinePattern.None), Line(points = {{-52, 50}, {-2, 48}, {30, 54}, {-26, 68}, {134, 70}, {148, 22}, {152, 42}}, color = {0, 127, 0}, pattern = LinePattern.None), Line(points = {{-68, 72}, {6, 72}}, color = {0, 127, 0}, pattern = LinePattern.None), Line(points = {{-52, 70}, {6, 66}, {-28, 66}}, color = {0, 127, 0}, pattern = LinePattern.None), Line(points = {{42, 60}, {36, 54}, {28, 70}, {42, 62}}, color = {0, 127, 0}, pattern = LinePattern.None), Text(textColor = {28, 108, 200}, extent = {{-96, 44}, {-52, 28}}, textString = "openDam")}), Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), Documentation(revisions = " diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/CoolingCoil.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/CoolingCoil.mo index 93bd2668781..74090c527bf 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/CoolingCoil.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/CoolingCoil.mo @@ -7,16 +7,16 @@ model CoolingCoil "This model simulates CoolingCoil" final quantity="ThermodynamicTemperature")=5 "Value subtracted from ERW supply air dewpoint."; - Buildings.Controls.OBC.FDE.DOAS.CoolingCoil Cooling( - erwDPadj=278.15) + Buildings.Controls.OBC.FDE.DOAS.CoolingCoil Cooling(erwDPadj(displayUnit="K") + = 5) annotation (Placement(transformation(extent={{48,-24},{68,-4}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse SFproof( width=0.8, period=5760, - startTime=300) + shift=300) annotation (Placement(transformation(extent={{-62,60},{-42,80}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin saTGen( amplitude=3, freqHz=1/4800, @@ -24,7 +24,7 @@ model CoolingCoil "This model simulates CoolingCoil" offset=295, startTime=0) annotation (Placement(transformation(extent={{-26,40},{-6,60}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin ccTGen( amplitude=3, freqHz=1/4800, @@ -32,20 +32,20 @@ model CoolingCoil "This model simulates CoolingCoil" offset=293, startTime=0) annotation (Placement(transformation(extent={{-60,-28},{-40,-8}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse dehumMode( width=0.5, period=4700, - startTime=1000) + shift=1000) annotation (Placement(transformation(extent={{-26,-6},{-6,14}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin supCooGen( amplitude=2, freqHz=1/3100, offset=293, startTime=12) annotation (Placement(transformation(extent={{-62,16},{-42,36}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin erwTGen( amplitude=3, freqHz=1/4800, @@ -53,45 +53,45 @@ model CoolingCoil "This model simulates CoolingCoil" offset=294, startTime=0) annotation (Placement(transformation(extent={{-60,-66},{-40,-46}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin erwHumGen( - amplitude=10, + amplitude=0.25, freqHz=1/3600, - offset=60, + offset=0.5, startTime=1250) annotation (Placement(transformation(extent={{-26,-48},{-6,-28}}))); - + equation connect(SFproof.y, Cooling.supFanProof) annotation ( Line(points={{-40,70},{18,70},{18,-5.6},{45.8,-5.6}}, color={255,0,255})); - + connect(saTGen.y, Cooling.saT) annotation ( Line(points={{-4,50},{12,50},{12,-8.4},{45.8,-8.4}}, color={0,0,127})); - + connect(ccTGen.y, Cooling.ccT) annotation ( Line(points={{-38,-18},{14,-18},{14,-17.2},{45.8,-17.2}}, color={0,0,127})); - + connect(dehumMode.y, Cooling.dehumMode) annotation ( Line(points={{-4,4},{0,4},{0,-14.6},{45.8,-14.6}}, color={255,0,255})); - + connect(supCooGen.y, Cooling.supCooSP) annotation ( Line(points={{-40,26},{6,26},{6,-11.2},{45.8,-11.2}}, color={0,0,127})); - + connect(erwHumGen.y, Cooling.erwHum) annotation ( Line(points={{-4,-38},{14,-38},{14,-19.8},{45.8,-19.8}},color={0,0,127})); - + connect(erwTGen.y, Cooling.erwT) annotation ( Line(points={{-38,-56},{18,-56},{18,-22.4},{45.8,-22.4}}, color={0,0,127})); - + annotation ( Icon(coordinateSystem(preserveAspectRatio=false), graphics={Ellipse(lineColor = {75,138,73}, fillColor={255,255,255}, - fillPattern = + fillPattern= FillPattern.Solid,extent={{-100,-100},{100,100}}), Polygon(lineColor = {0,0,255},fillColor = {75,138,73}, pattern = LinePattern.None, - fillPattern = + fillPattern= FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(preserveAspectRatio=false)), @@ -108,5 +108,7 @@ This example simulates Buildings.Controls.OBC.FDE.DOAS.CoolingCoil.

"), - experiment(StopTime=5760, __Dymola_Algorithm="Dassl")); + experiment(StopTime=5760, __Dymola_Algorithm="Dassl"), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/FDE/DOAS/Validation/CoolingCoil.mos" + "Simulate and plot")); end CoolingCoil; diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/DOAScontroller.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/DOAScontroller.mo index 8f73a490649..48c4a689e6f 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/DOAScontroller.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/DOAScontroller.mo @@ -290,13 +290,13 @@ model DOAScontroller "DOAS controller" equation connect(OccGen.y, DOAScon.occ) annotation ( - Line(points = {{-20, 86}, {58, 86}, {58, 28}, {68, 28}}, color = {255, 0, 255})); + Line(points={{-20,86},{58,86},{58,27.6},{68,27.6}}, color = {255, 0, 255})); connect(mostOpenDamGen.y, DOAScon.mostOpenDam) annotation ( - Line(points = {{-20, 56}, {54, 56}, {54, 25}, {68, 25}}, color = {0, 0, 127})); + Line(points={{-20,56},{54,56},{54,25.2},{68,25.2}}, color = {0, 0, 127})); connect(truDel.y, DOAScon.supFanStatus) annotation ( - Line(points = {{-24, 32}, {50, 32}, {50, 23}, {68, 23}}, color = {255, 0, 255})); + Line(points={{-24,32},{50,32},{50,22.8},{68,22.8}}, color = {255, 0, 255})); connect(truDel.y, swi.u2) annotation ( Line(points = {{-24, 32}, {-24, 18}, {-54, 18}, {-54, 8}}, color = {255, 0, 255})); @@ -311,52 +311,53 @@ equation Line(points = {{24, -6}, {28, -6}, {28, 18}, {68, 18}}, color = {0, 0, 127})); connect(highSpaceTGen.y, DOAScon.highSpaceT) annotation ( - Line(points = {{-2, -18}, {30, -18}, {30, 15}, {68, 15}}, color = {0, 0, 127})); + Line(points={{-2,-18},{30,-18},{30,15.4},{68,15.4}}, color = {0, 0, 127})); connect(raTGen.y, DOAScon.raT) annotation ( - Line(points = {{-32, -28}, {-28, -28}, {-28, 10}, {68, 10}}, color = {0, 0, 127})); + Line(points={{-32,-28},{-28,-28},{-28,10.4},{68,10.4}}, color = {0, 0, 127})); connect(erwHumGen.y, DOAScon.erwHum) annotation ( - Line(points = {{50, -24}, {56, -24}, {56, 3}, {68, 3}}, color = {0, 0, 127})); + Line(points={{50,-24},{56,-24},{56,2.8},{68,2.8}}, color = {0, 0, 127})); connect(DOAScon.bypDam, ERWtemp.bypDam) annotation ( - Line(points = {{92, 11}, {97.1, 11}, {97.1, -12}, {107.6, -12}}, color = {255, 0, 255})); + Line(points={{92.2,11},{97.1,11},{97.1,-12},{107.6,-12}}, color = {255, 0, 255})); connect(DOAScon.erwStart, ERWtemp.erwStart) annotation ( - Line(points = {{92, 8}, {98, 8}, {98, -16}, {107.6, -16}}, color = {255, 0, 255})); + Line(points={{92.2,8},{98,8},{98,-16},{107.6,-16}}, color = {255, 0, 255})); connect(raTGen.y, ERWtemp.raT) annotation ( Line(points = {{-32, -28}, {38.8, -28}, {38.8, -20}, {107.6, -20}}, color = {0, 0, 127})); connect(ERWtemp.erwTsim, DOAScon.erwT) annotation ( - Line(points = {{132.4, -18}, {134, -18}, {134, -38}, {60, -38}, {60, 0}, {68, 0}}, color = {0, 0, 127})); + Line(points={{132.4,-18},{134,-18},{134,-38},{60,-38},{60,0.4},{68,0.4}}, color = {0, 0, 127})); connect(DOAScon.exhFanStart, truDel1.u) annotation ( - Line(points = {{92, 2}, {96, 2}, {96, -56}, {106, -56}}, color = {255, 0, 255})); + Line(points={{92.2,1.6},{96,1.6},{96,-56},{106,-56}}, color = {255, 0, 255})); connect(truDel1.y, DOAScon.exhFanProof) annotation ( Line(points = {{130, -56}, {134, -56}, {134, -74}, {58, -74}, {58, -2}, {68, -2}}, color = {255, 0, 255})); connect(bldgSP.y, DOAScon.bldgSP) annotation ( - Line(points = {{52, -82}, {54, -82}, {54, -4}, {68, -4}}, color = {0, 0, 127})); + Line(points={{52,-82},{54,-82},{54,-4.4},{68,-4.4}}, color = {0, 0, 127})); connect(oaTgen.y, DOAScon.oaT) annotation ( - Line(points = {{26, -36}, {32, -36}, {32, 8}, {68, 8}}, color = {0, 0, 127})); + Line(points={{26,-36},{32,-36},{32,7.8},{68,7.8}}, color = {0, 0, 127})); connect(oaTgen.y, ERWtemp.oaT) annotation ( Line(points = {{26, -36}, {62, -36}, {62, -24}, {107.6, -24}}, color = {0, 0, 127})); connect(swi.y, DOAScon.DDSP) annotation ( - Line(points = {{-30, 8}, {16, 8}, {16, 20}, {68, 20}}, color = {0, 0, 127})); + Line(points={{-30,8},{16,8},{16,20.4},{68,20.4}}, color = {0, 0, 127})); connect(saTGen.y, DOAScon.saT) annotation ( - Line(points = {{-2, -52}, {26, -52}, {26, 13}, {68, 13}}, color = {0, 0, 127})); + Line(points={{-2,-52},{26,-52},{26,12.8},{68,12.8}}, color = {0, 0, 127})); connect(ccTGen.y, DOAScon.ccT) annotation ( - Line(points = {{-2, -82}, {28, -82}, {28, 5}, {68, 5}}, color = {0, 0, 127})); + Line(points={{-2,-82},{28,-82},{28,5.4},{68,5.4}}, color = {0, 0, 127})); connect(DOAScon.supFanStart, pre.u) annotation ( - Line(points={{92,23},{-86,23},{-86,52},{-80,52}}, color = {255, 0, 255})); + Line(points={{92.2,23.4},{-86,23.4},{-86,52},{-80,52}}, + color = {255, 0, 255})); connect(pre.y, truDel.u) annotation ( Line(points = {{-56, 52}, {-56, 41}, {-48, 41}, {-48, 32}}, color = {255, 0, 255})); diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/DehumMode.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/DehumMode.mo index b1c5a684225..6b9a1131a67 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/DehumMode.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/DehumMode.mo @@ -1,44 +1,46 @@ within Buildings.Controls.OBC.FDE.DOAS.Validation; - model DehumMode "This model simulates DehumMode." parameter Real dehumSet( min=0, max=100)=60 "Dehumidification set point."; - + parameter Real dehumDelay( final unit="s", final quantity="Time")=600 "Minimum delay after RH falls below set point before turning dehum off."; - + parameter Real minRun( final unit="s", final quantity="Time")=120 "Minimum supply fan proof delay before allowing dehum mode."; - + Buildings.Controls.OBC.FDE.DOAS.DehumMode DehumMod - annotation (Placement(transformation(extent={{24,-10},{44,10}}))); - + annotation (Placement(visible = true, transformation(origin = {-2, 0}, extent = {{24, -10}, {44, 10}}, rotation = 0))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse SFproof( width=0.75, period=5760) annotation (Placement(transformation(extent={{-28,-36},{-8,-16}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin relHumGen( amplitude=10, freqHz=1/3600, + phase=0, offset=60, startTime=1250) annotation (Placement(transformation(extent={{-28,2},{-8,22}}))); - + equation + connect(SFproof.y, DehumMod.supFanProof) annotation ( - Line(points={{-6,-26},{8,-26},{8,-7.4},{21.8,-7.4}}, color={255,0,255})); - + Line(points={{-6,-26},{8,-26},{8,7.2},{19.8,7.2}}, + color={255,0,255})); + connect(relHumGen.y, DehumMod.retHum) annotation ( - Line(points={{-6,12},{8,12},{8,0},{21.8,0}}, color={0,0,127})); - + Line(points={{-6,12},{8,12},{8,0},{19.8,0}}, + color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Ellipse(lineColor = {75,138,73}, fillColor={255,255,255}, @@ -62,5 +64,6 @@ This example simulates Buildings.Controls.OBC.FDE.DOAS.DehumMode.

-")); +"),__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/FDE/DOAS/Validation/DehumMode.mos" + "Simulate and plot")); end DehumMode; diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/Dewpoint.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/Dewpoint.mo index 19257bcc34f..b0393544955 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/Dewpoint.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/Dewpoint.mo @@ -3,14 +3,14 @@ model Dewpoint "This model simulates Dewpoint calculations." Buildings.Controls.OBC.FDE.DOAS.Dewpoint Dewpt annotation (Placement(transformation(extent={{-4,-10},{16,10}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin ralHumGen( amplitude=10, freqHz=1/3600, offset=60, startTime=0) annotation (Placement(transformation(extent={{-48,8},{-28,28}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin raTGen( amplitude=3, freqHz=1/4800, @@ -18,19 +18,19 @@ model Dewpoint "This model simulates Dewpoint calculations." offset=295, startTime=0) annotation (Placement(transformation(extent={{-48,-30},{-28,-10}}))); - + equation connect(ralHumGen.y, Dewpt.relHum) annotation ( Line(points={{-26,18},{-16,18},{-16,6},{-6.2,6}}, color={0,0,127})); - + connect(raTGen.y, Dewpt.dbT) annotation ( Line(points={{-26,-20},{-16,-20},{-16,-6},{-6.2,-6}}, color={0,0,127})); - + annotation ( Icon(coordinateSystem(preserveAspectRatio=false), graphics={Ellipse(lineColor = {75,138,73},fillColor={255,255,255}, - fillPattern = + fillPattern= FillPattern.Solid,extent={{-100,-100},{100,100}}),Polygon(lineColor = {0,0,255},fillColor = {75,138,73},pattern = LinePattern.None, - fillPattern = + fillPattern= FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/EconMode.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/EconMode.mo index ac588fbd2bf..c4dd993c34c 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/EconMode.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/EconMode.mo @@ -9,36 +9,37 @@ model EconMode "This model simulates EconMode." Buildings.Controls.OBC.FDE.DOAS.EconMode EconMod annotation (Placement(transformation(extent={{44,-10},{64,10}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse SFproof( - width=0.75, + width=0.75, period=5760) annotation (Placement(transformation(extent={{-30,32},{-10,52}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin oaTGen( amplitude=5, freqHz=1/4800, offset=296, startTime=202) annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin supCooSPgen( amplitude=5, freqHz=1/3600, offset=297, startTime=960) annotation (Placement(transformation(extent={{-28,-50},{-8,-30}}))); - + equation connect(SFproof.y, EconMod.supFanProof) annotation ( Line(points={{-8,42},{18,42},{18,7},{41.8,7}}, color={255,0,255})); - - connect(oaTGen.y, EconMod.oaT)annotation ( + + connect(oaTGen.y, EconMod.oaT) + annotation ( Line(points={{-6,0},{41.8,0}}, color={0,0,127})); - + connect(supCooSPgen.y, EconMod.supCooSP) annotation ( Line(points={{-6,-40},{18,-40},{18,-7},{41.8,-7}}, color={0,0,127})); - + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Ellipse(lineColor = {75,138,73}, fillColor={255,255,255}, @@ -62,5 +63,8 @@ This example simulates Buildings.Controls.OBC.FDE.DOAS.EconMode.

-")); +"), + experiment(StopTime=5760, __Dymola_Algorithm="Dassl"), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/FDE/DOAS/Validation/EconMode.mos" + "Simulate and plot")); end EconMode; diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/EnergyWheel.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/EnergyWheel.mo index ef84b17e3aa..880125d09f1 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/EnergyWheel.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/EnergyWheel.mo @@ -7,87 +7,80 @@ model EnergyWheel "This model simulates EnergyWheel." final displayUnit="degC", final quantity="ThermodynamicTemperature")=7 "Energy recovery set point."; - + parameter Real recSetDelay( final unit="s", final quantity="Time")=300 "Minimum delay after OAT/RAT delta falls below set point."; - + parameter Real kGain( final unit="1")=0.00001 "PID loop gain value."; - + parameter Real conTi( final unit="s")=0.00025 "PID time constant of integrator."; Buildings.Controls.OBC.FDE.DOAS.EnergyWheel ERWcon annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse SFproof( width=0.75, period=5760) annotation (Placement(transformation(extent={{-62,72},{-42,92}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse ecoMode( width=0.5, period=2880) annotation (Placement(transformation(extent={{-62,40},{-42,60}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Sine oaTGen( + + CDL.Reals.Sources.Sin raTGen( amplitude=2, freqHz=1/4800, - offset=288, + phase=0.034906585039887, + offset=297, startTime=0) - annotation (Placement(transformation(extent={{-62,-26},{-42,-6}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Sine raTGen( + annotation (Placement(transformation(extent={{-62,4},{-42,24}}))); + CDL.Reals.Sources.Sin oaTGen( amplitude=2, freqHz=1/4800, - offset=297, + offset=288, startTime=0) - annotation (Placement(transformation(extent={{-62,8},{-42,28}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Sine erwTGen( + annotation (Placement(transformation(extent={{-62,-30},{-42,-10}}))); + CDL.Reals.Sources.Sin erwTGen( amplitude=6, freqHz=1/2100, offset=294, startTime=12) - annotation (Placement(transformation(extent={{-62,-58},{-42,-38}}))); - - Buildings.Controls.OBC.CDL.Reals.Sources.Sine supPrimGen( + annotation (Placement(transformation(extent={{-62,-62},{-42,-42}}))); + CDL.Reals.Sources.Sin supPrimGen( amplitude=2, freqHz=1/3100, offset=295, startTime=12) - annotation (Placement(transformation(extent={{-62,-90},{-42,-70}}))); - + annotation (Placement(transformation(extent={{-62,-94},{-42,-74}}))); equation connect(SFproof.y, ERWcon.supFanProof) annotation ( Line(points={{-40,82},{4,82},{4,7.8},{47.8,7.8}}, color={255,0,255})); - + connect(ecoMode.y, ERWcon.ecoMode) annotation ( Line(points={{-40,50},{0,50},{0,4.8},{47.8,4.8}}, color={255,0,255})); - - connect(raTGen.y, ERWcon.raT) annotation ( - Line(points={{-40,18},{-4,18},{-4,1.8},{47.8,1.8}}, color={0,0,127})); - - connect(oaTGen.y, ERWcon.oaT) annotation ( - Line(points={{-40,-16},{-4,-16},{-4,-1.8},{47.8,-1.8}}, color={0,0,127})); - - connect(erwTGen.y, ERWcon.erwT) annotation ( - Line(points={{-40,-48},{0,-48},{0,-4.8},{47.8,-4.8}}, color={0,0,127})); - - connect(supPrimGen.y, ERWcon.supPrimSP) annotation ( - Line(points={{-40,-80},{4,-80},{4,-7.8},{47.8,-7.8}}, color={0,0,127})); - + + connect(raTGen.y, ERWcon.raT) annotation (Line(points={{-40,14},{-20,14},{-20, + 1.8},{47.8,1.8}}, color={0,0,127})); + connect(oaTGen.y, ERWcon.oaT) annotation (Line(points={{-40,-20},{-18,-20},{ + -18,-2},{47.8,-2},{47.8,-1.8}}, color={0,0,127})); + connect(erwTGen.y, ERWcon.erwT) annotation (Line(points={{-40,-52},{-22,-52}, + {-22,-32},{-6,-32},{-6,-4.8},{47.8,-4.8}}, color={0,0,127})); + connect(supPrimGen.y, ERWcon.supPrimSP) annotation (Line(points={{-40,-84},{ + -10,-84},{-10,-52},{10,-52},{10,-7.8},{47.8,-7.8}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={Ellipse(lineColor = {75,138,73}, fillColor={255,255,255}, - fillPattern = + fillPattern= FillPattern.Solid, extent={{-100,-100},{100,100}}), Polygon(lineColor = {0,0,255},fillColor = {75,138,73}, pattern = LinePattern.None, - fillPattern = -FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + fillPattern= +FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(preserveAspectRatio=false)), experiment(StopTime=5760, __Dymola_Algorithm="Dassl"), Documentation(revisions=" @@ -102,5 +95,7 @@ This example simulates Buildings.Controls.OBC.FDE.DOAS.EnergyWheel.

-")); +"), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/FDE/DOAS/Validation/EnergyWheel.mos" + "Simulate and plot")); end EnergyWheel; diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/ExhaustFanController.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/ExhaustFanController.mo index 422d3f64e0d..0b449be046f 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/ExhaustFanController.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/ExhaustFanController.mo @@ -9,45 +9,45 @@ model ExhaustFanController Buildings.Controls.OBC.FDE.DOAS.ExhaustFanController EFcon annotation (Placement(transformation(extent={{46,-10},{66,10}}))); - + Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel( delayTime=10, delayOnInit=true) "Simulates delay between fan start command and status feedback." annotation (Placement(transformation(extent={{14,-40},{34,-20}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse SFproof( width=0.75, period=5760) annotation (Placement(transformation(extent={{-34,8},{-14,28}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin bldgSP( amplitude=3, freqHz=1/3280, offset=15) annotation (Placement(transformation(extent={{-34,-26},{-14,-6}}))); - + equation connect(SFproof.y, EFcon.supFanProof) annotation ( Line(points={{-12,18},{4,18}, {4,6},{44,6}}, color={255,0,255})); - + connect(bldgSP.y, EFcon.bldgSP) annotation ( Line(points={{-12,-16},{4,-16},{4, -6.4},{44,-6.4}}, color={0,0,127})); - + connect(truDel.y, EFcon.exhFanProof) annotation ( Line(points={{36,-30},{40, -30},{40,0},{44,0}}, color={255,0,255})); - + connect(EFcon.exhFanStart, truDel.u) annotation ( Line(points={{68,6},{74,6},{74,-48},{4,-48},{4,-30},{12,-30}}, color={255,0,255})); - + annotation ( Icon(coordinateSystem(preserveAspectRatio=false), graphics={Ellipse(lineColor = {75,138,73},fillColor={255,255,255}, - fillPattern = + fillPattern= FillPattern.Solid,extent={{-100,-100},{100,100}}),Polygon(lineColor = {0,0,255},fillColor = {75,138,73}, pattern = LinePattern.None, - fillPattern = + fillPattern= FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" @@ -63,5 +63,7 @@ This example simulates Buildings.Controls.OBC.FDE.DOAS.ExhaustFanController.

"), - experiment(StopTime=5760, __Dymola_Algorithm="Dassl")); + experiment(StopTime=5760, __Dymola_Algorithm="Dassl"), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/FDE/DOAS/Validation/ExhaustFanController.mos" + "Simulate and plot")); end ExhaustFanController; diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/HeatingCoil.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/HeatingCoil.mo index 124f05acc9c..adedfdf4f0f 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/HeatingCoil.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/HeatingCoil.mo @@ -1,16 +1,17 @@ within Buildings.Controls.OBC.FDE.DOAS.Validation; model HeatingCoil "This model simulates HeatingCoil" - Buildings.Controls.OBC.FDE.DOAS.HeatingCoil Heating + Buildings.Controls.OBC.FDE.DOAS.HeatingCoil Heating(SArhcPIk=0.1, SArhcPITi= + 60) "This block commands the heating coil." annotation (Placement(transformation(extent={{42,-10},{62,10}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse SFproof( width=0.8, period=5760, - startTime=300) + shift=30) annotation (Placement(transformation(extent={{-42,-10},{-22,10}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin saTGen( amplitude=3, freqHz=1/4800, @@ -18,28 +19,29 @@ model HeatingCoil "This model simulates HeatingCoil" offset=295, startTime=0) annotation (Placement(transformation(extent={{-12,-40},{8,-20}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin supHeaGen( amplitude=2, freqHz=1/3100, offset=295, startTime=12) annotation (Placement(transformation(extent={{-14,14},{6,34}}))); - + equation connect(SFproof.y, Heating.supFanProof) annotation ( Line(points={{-20,0},{39.8,0}}, color={255,0,255})); - - connect(saTGen.y, Heating.saT)annotation ( + + connect(saTGen.y, Heating.saT) + annotation ( Line(points={{10,-30},{26,-30},{26,-5},{39.8,-5}}, color={0,0,127})); connect(supHeaGen.y, Heating.supHeaSP) annotation ( Line(points={{8,24},{24,24},{24,4.8},{39.8,4.8}},color={0,0,127})); - + annotation ( Icon(coordinateSystem(preserveAspectRatio=false), graphics={Ellipse(lineColor = {75,138,73},fillColor={255,255,255}, - fillPattern = + fillPattern= FillPattern.Solid,extent={{-100,-100},{100,100}}),Polygon(lineColor = {0,0,255},fillColor = {75,138,73},pattern = LinePattern.None, - fillPattern = + fillPattern= FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(info=" @@ -54,5 +56,7 @@ Buildings.Controls.OBC.FDE.DOAS.HeatingCoil. September 25, 2020, by Henry Nickels:
First implementation. -")); +"), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/FDE/DOAS/Validation/HeatingCoil.mos" + "Simulate and plot")); end HeatingCoil; diff --git a/Buildings/Controls/OBC/FDE/DOAS/Validation/SupplyFanController.mo b/Buildings/Controls/OBC/FDE/DOAS/Validation/SupplyFanController.mo index 4cbc8595800..a30dca4045e 100644 --- a/Buildings/Controls/OBC/FDE/DOAS/Validation/SupplyFanController.mo +++ b/Buildings/Controls/OBC/FDE/DOAS/Validation/SupplyFanController.mo @@ -1,8 +1,12 @@ within Buildings.Controls.OBC.FDE.DOAS.Validation; model SupplyFanController "This model simulates SupplyFanController" - - Buildings.Controls.OBC.FDE.DOAS.SupplyFanController SFcon + + Buildings.Controls.OBC.FDE.DOAS.SupplyFanController SFcon( + DampspPIk=100, + DampspPITi=60, + FSspPIk=0.5, + FSspPITi=60) annotation (Placement(transformation(extent={{40,-6},{60,14}}))); Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel( @@ -10,44 +14,44 @@ annotation (Placement(transformation(extent={{40,-6},{60,14}}))); delayOnInit=true) "Simulates delay between fan start command and status feedback." annotation (Placement(transformation(extent={{8,-34},{28,-14}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse - OccGen(width=0.6, period=2880) + OccGen(width=0.6, period=2*2880) annotation (Placement(transformation(extent={{-66,32},{-46,52}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin mostOpenDamGen( - amplitude=4, + amplitude=0.5, freqHz=1/5670, - offset=90) + offset=0.5) annotation (Placement(transformation(extent={{-66,-2},{-46,18}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin sensorDDSP( amplitude=9, freqHz=1/6780, offset=180) annotation (Placement(transformation(extent={{-66,-38},{-46,-18}}))); - + equation connect(SFcon.supFanStart, truDel.u) annotation ( Line(points={{62,9.2},{66,9.2},{66,-46},{0,-46},{0,-24},{6,-24}}, color={255,0,255})); - + connect(truDel.y, SFcon.supFanStatus) annotation ( Line(points={{30,-24},{34,-24},{34,0.4},{38,0.4}}, color={255,0,255})); - + connect(OccGen.y, SFcon.occ) annotation ( Line(points={{-44,42},{-10,42},{-10,11},{38,11}}, color={255,0,255})); - + connect(mostOpenDamGen.y, SFcon.mostOpenDam) annotation ( Line(points={{-44,8},{-10,8},{-10,7.4},{38,7.4}}, color={0,0,127})); connect(sensorDDSP.y, SFcon.DDSP) annotation ( Line(points={{-44,-28},{-10,-28},{-10,-3.2},{38,-3.2}}, color={0,0,127})); - + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={Ellipse(lineColor = {75,138,73},fillColor={255,255,255}, - fillPattern = + fillPattern= FillPattern.Solid,extent={{-100,-100},{100,100}}),Polygon(lineColor = {0,0,255},fillColor = {75,138,73},pattern = LinePattern.None, - fillPattern = -FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + fillPattern= +FillPattern.Solid,points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="