diff --git a/.travis.yml b/.travis.yml index dd4cbc9a18b..fb1406cf134 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,9 +32,9 @@ env: global: - DOCKER_REPONAME=lbnlblum - BUILDINGSPY_VERSION=BuildingsPy@v5.0.0 - - OMC_VERSION=ubuntu-2204-omc:1.22.0_dev-41-g8a5b18f-1 + - OMC_VERSION=ubuntu-2204-omc:1.22.1-1 - OPTIMICA_VERSION=travis-ubuntu-2204-optimica:1.43.4 - - DYMOLA_VERSION=travis_ubuntu-2004_dymola:2023x-x86_64_rev-1 + - DYMOLA_VERSION=travis_ubuntu-2004_dymola:2024x-x86_64 - ENERGYPLUS_9_6_0=EnergyPlus-9.6.0-f420c06a69-Linux-Ubuntu20.04-x86_64 - ENERGYPLUS_23_1_0=EnergyPlus-23.1.0-87ed9199d4-Linux-Ubuntu20.04-x86_64 - MODELICA_JSON_VERSION=6d950c3592fa021aa914ba4ff34a67cbb69962c6 diff --git a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo index f151aad6243..94703bd6bf8 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo @@ -8,18 +8,6 @@ model Enable_TOut_hOut Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutCut1( final k=hOutCutoff) "Outdoor air enthalpy cutoff" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); - Buildings.Controls.OBC.CDL.Logical.TriggeredTrapezoid TOut( - final rising=1000, - final falling=800, - final amplitude=4, - final offset=TOutCutoff - 2) "Outoor air temperature" - annotation (Placement(transformation(extent={{-160,150},{-140,170}}))); - Buildings.Controls.OBC.CDL.Logical.TriggeredTrapezoid hOut( - final amplitude=4000, - final offset=hOutCutoff - 2200, - final rising=1000, - final falling=800) "Outdoor air enthalpy" - annotation (Placement(transformation(extent={{-40,80},{-20,100}}))); Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable enaDis "Multi zone VAV AHU economizer enable disable sequence" @@ -31,7 +19,18 @@ model Enable_TOut_hOut final use_enthalpy=false) "Multi zone VAV AHU economizer enable disable sequence" annotation (Placement(transformation(extent={{220,-44},{240,-16}}))); - + Buildings.Controls.OBC.CDL.Reals.Sources.Sin TOut( + final amplitude=4, + final freqHz=1/3600, + final offset=TOutCutoff - 2, + final startTime=10) "Outdoor air temperature" + annotation (Placement(transformation(extent={{-160,140},{-140,160}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Sin hOut( + final amplitude=4000, + final freqHz=1/3600, + final offset=hOutCutoff - 2200, + final startTime=10) "Outdoor air enthalpy" + annotation (Placement(transformation(extent={{-40,82},{-20,102}}))); protected final parameter Real TOutCutoff( final unit="K", @@ -79,12 +78,6 @@ protected Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFanSta( final k=true) "Supply fan status signal" annotation (Placement(transformation(extent={{-200,-42},{-180,-22}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(final shift=10, - final period=2000) "Boolean pulse signal" - annotation (Placement(transformation(extent={{-200,150},{-180,170}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(final shift=10, - final period=2000) "Boolean pulse signal" - annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); equation connect(TOutCut.y, enaDis.TOutCut) @@ -114,14 +107,6 @@ equation {-82,-22}}, color={0,0,127})); connect(TOutBelowCutoff.y, enaDis1.TOut) annotation (Line(points={{62,90},{70,90},{70,-20},{78,-20},{78,-17}}, color={0,0,127})); - connect(booPul.y, TOut.u) - annotation (Line(points={{-178,160},{-162,160}}, color={255,0,255})); - connect(TOut.y, enaDis.TOut) - annotation (Line(points={{-138,160},{-110,160},{-110,-17},{-82,-17}}, color={0,0,127})); - connect(booPul1.y, hOut.u) - annotation (Line(points={{-58,90},{-58,90},{-42,90}}, color={255,0,255})); - connect(hOut.y, enaDis1.hOut) - annotation (Line(points={{-18,90},{-10,90},{-10,60},{20,60},{20,-22},{78,-22}}, color={0,0,127})); connect(freProSta.y, enaDis1.uFreProSta) annotation (Line(points={{-178,30},{-46,30},{-46,-29},{78,-29}}, color={255,127,0})); connect(outDamPosMax.y, enaDis1.uOutDam_max) annotation (Line(points={{-218,-70}, @@ -134,8 +119,6 @@ equation {20,-150},{20,-41},{78,-41}}, color={0,0,127})); connect(retDamPosMin.y, enaDis1.uRetDam_min) annotation (Line(points={{-138,-190}, {30,-190},{30,-43},{78,-43}}, color={0,0,127})); - connect(TOut.y, enaDis2.TOut) - annotation (Line(points={{-138,160},{200,160},{200,-17},{218,-17}}, color={0,0,127})); connect(TOutCut.y, enaDis2.TOutCut) annotation (Line(points={{-138,90},{-120,90},{-120,120},{188,120},{188,-19}, {218,-19}}, color={0,0,127})); @@ -157,7 +140,12 @@ equation -32},{-160,-12},{-20,-12},{-20,-27},{78,-27}}, color={255,0,255})); connect(supFanSta.y, enaDis2.u1SupFan) annotation (Line(points={{-178,-32},{-160, -32},{-160,-12},{140,-12},{140,-27},{218,-27}}, color={255,0,255})); - + connect(TOut.y, enaDis.TOut) annotation (Line(points={{-138,150},{-100,150},{-100, + -17},{-82,-17}}, color={0,0,127})); + connect(TOut.y, enaDis2.TOut) annotation (Line(points={{-138,150},{196,150},{196, + -17},{218,-17}}, color={0,0,127})); + connect(hOut.y, enaDis1.hOut) annotation (Line(points={{-18,92},{-10,92},{-10, + 60},{20,60},{20,-22},{78,-22}}, color={0,0,127})); annotation ( experiment(StopTime=1800.0, Tolerance=1e-06), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mos" diff --git a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/FreezeProtection.mo b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/FreezeProtection.mo index 9764b30c8d9..98c08e48927 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/FreezeProtection.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/FreezeProtection.mo @@ -299,6 +299,7 @@ block FreezeProtection annotation (Placement(transformation(extent={{440,-860},{480,-820}}), iconTransformation(extent={{100,-210},{140,-170}}))); +protected Buildings.Controls.OBC.CDL.Reals.LessThreshold lesThr( final t=273.15 + 4.4, final h=Thys) if have_frePro @@ -400,7 +401,7 @@ block FreezeProtection Buildings.Controls.OBC.CDL.Logical.Timer tim3( final t=900) if have_frePro "Check if the supply air temperature has been lower than threshold value for sufficient long time" - annotation (Placement(transformation(extent={{-300,240},{-280,260}}))); + annotation (Placement(transformation(extent={{-320,240},{-300,260}}))); Buildings.Controls.OBC.CDL.Reals.LessThreshold lesThr2( final t=273.15 + 1, final h=Thys) if have_frePro @@ -409,15 +410,15 @@ block FreezeProtection Buildings.Controls.OBC.CDL.Logical.Timer tim4( final t=300) if have_frePro "Check if the supply air temperature has been lower than threshold value for sufficient long time" - annotation (Placement(transformation(extent={{-300,200},{-280,220}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or3 if have_frePro + annotation (Placement(transformation(extent={{-320,200},{-300,220}}))); + Buildings.Controls.OBC.CDL.Logical.Or or8 if have_frePro "Check if it should be in stage 3 mode" - annotation (Placement(transformation(extent={{-220,192},{-200,212}}))); + annotation (Placement(transformation(extent={{-220,190},{-200,210}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant con2( final k=false) if not freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Hardwired_to_BAS and have_frePro "Constant false" - annotation (Placement(transformation(extent={{-300,50},{-280,70}}))); + annotation (Placement(transformation(extent={{-320,50},{-300,70}}))); Buildings.Controls.OBC.CDL.Logical.Latch lat1 if have_frePro "Stay in stage 3 freeze protection mode" annotation (Placement(transformation(extent={{-140,150},{-120,170}}))); @@ -732,6 +733,9 @@ block FreezeProtection if (not have_frePro) and heaCoi==Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased "Dummy constant" annotation (Placement(transformation(extent={{360,-820},{380,-800}}))); + Buildings.Controls.OBC.CDL.Logical.Or or7 if have_frePro + "Check if it should be in stage 3 mode" + annotation (Placement(transformation(extent={{-280,232},{-260,252}}))); equation connect(lesThr.y, tim.u) @@ -778,18 +782,12 @@ equation 410},{118,410}}, color={0,0,127})); connect(conInt1.y, intSwi1.u1) annotation (Line(points={{62,350},{100,350},{ 100,328},{118,328}}, color={255,127,0})); - connect(lesThr1.y, tim3.u) annotation (Line(points={{-358,470},{-350,470},{ - -350,250},{-302,250}}, color={255,0,255})); + connect(lesThr1.y, tim3.u) annotation (Line(points={{-358,470},{-350,470},{-350, + 250},{-322,250}}, color={255,0,255})); connect(lesThr2.y, tim4.u) - annotation (Line(points={{-338,210},{-302,210}}, color={255,0,255})); + annotation (Line(points={{-338,210},{-322,210}}, color={255,0,255})); connect(TAirSup, lesThr2.u) annotation (Line(points={{-460,330},{-420,330},{ -420,210},{-362,210}}, color={0,0,127})); - connect(tim3.passed, or3.u1) annotation (Line(points={{-278,242},{-240,242},{ - -240,210},{-222,210}}, color={255,0,255})); - connect(tim4.passed, or3.u2) - annotation (Line(points={{-278,202},{-222,202}}, color={255,0,255})); - connect(con2.y, or3.u3) annotation (Line(points={{-278,60},{-240,60},{-240, - 194},{-222,194}}, color={255,0,255})); connect(u1SofSwiRes, lat1.clr) annotation (Line(points={{-460,20},{-160,20},{ -160,154},{-142,154}}, color={255,0,255})); connect(lat1.y, supFan.u2) annotation (Line(points={{-118,160},{20,160},{20, @@ -960,8 +958,8 @@ equation {318,-62}}, color={255,0,255})); connect(u1FreSta,norFal. u) annotation (Line(points={{-460,130},{-362,130}}, color={255,0,255})); - connect(or3.y, lat1.u) annotation (Line(points={{-198,202},{-160,202},{-160, - 160},{-142,160}}, color={255,0,255})); + connect(or8.y, lat1.u) annotation (Line(points={{-198,200},{-160,200},{-160,160}, + {-142,160}}, color={255,0,255})); connect(falEdg.y, lat1.clr) annotation (Line(points={{-198,130},{-180,130},{ -180,154},{-142,154}}, color={255,0,255})); connect(u1RetFan, and1.u1) annotation (Line(points={{-460,-320},{-80,-320},{-80, @@ -1046,8 +1044,6 @@ equation {460,-220}}, color={0,0,127})); connect(norFal.y, falEdg.u) annotation (Line(points={{-338,130},{-222,130}}, color={255,0,255})); - connect(norFal.y, or3.u3) annotation (Line(points={{-338,130},{-260,130},{-260, - 194},{-222,194}}, color={255,0,255})); connect(conInt9.y, yFreProSta) annotation (Line(points={{402,370},{420,370},{420, 320},{460,320}}, color={255,127,0})); connect(gai8.y, yRetDam) annotation (Line(points={{-218,-50},{366,-50},{366,160}, @@ -1088,6 +1084,16 @@ equation annotation (Line(points={{342,-460},{460,-460}}, color={255,0,255})); connect(and3.y, y1RelDam) annotation (Line(points={{342,-420},{360,-420},{360, -460},{460,-460}}, color={255,0,255})); + connect(tim3.passed, or7.u1) + annotation (Line(points={{-298,242},{-282,242}}, color={255,0,255})); + connect(tim4.passed, or7.u2) annotation (Line(points={{-298,202},{-290,202},{-290, + 234},{-282,234}}, color={255,0,255})); + connect(or7.y, or8.u1) annotation (Line(points={{-258,242},{-240,242},{-240,200}, + {-222,200}}, color={255,0,255})); + connect(norFal.y, or8.u2) annotation (Line(points={{-338,130},{-240,130},{-240, + 192},{-222,192}}, color={255,0,255})); + connect(con2.y, or8.u2) annotation (Line(points={{-298,60},{-240,60},{-240,192}, + {-222,192}}, color={255,0,255})); annotation (defaultComponentName="mulAHUFrePro", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-200},{100,200}}), graphics={ diff --git a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/SupplyFan.mo b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/SupplyFan.mo index 07391f1ad9b..d222a722e2c 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/SupplyFan.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/MultiZone/VAV/SetPoints/SupplyFan.mo @@ -154,9 +154,9 @@ protected Buildings.Controls.OBC.CDL.Logical.Or or2 if have_perZonRehBox "Setback or warmup mode" annotation (Placement(transformation(extent={{20,30},{40,50}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or3 + Buildings.Controls.OBC.CDL.Logical.Or or3 "Cool-down or setup or occupied mode" - annotation (Placement(transformation(extent={{20,90},{40,110}}))); + annotation (Placement(transformation(extent={{-20,90},{0,110}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant con( k=false) if not have_perZonRehBox "Constant true" @@ -210,6 +210,9 @@ protected final samplePeriod=samplePeriod) "Extrapolation through the values of the last two sampled input signals" annotation (Placement(transformation(extent={{-100,-60},{-80,-40}}))); + Buildings.Controls.OBC.CDL.Logical.Or or4 + "Cool-down or setup or occupied mode" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); equation connect(or2.y, or1.u2) @@ -238,13 +241,11 @@ equation annotation (Line(points={{42,10},{60,10},{60,62},{78,62}}, color={255,0,255})); connect(intEqu.y, or3.u1) - annotation (Line(points={{-38,130},{0,130},{0,108},{18,108}}, - color={255,0,255})); - connect(intEqu2.y, or3.u3) - annotation (Line(points={{-38,70},{0,70},{0,92},{18,92}}, + annotation (Line(points={{-38,130},{-30,130},{-30,100},{-22,100}}, color={255,0,255})); connect(intEqu1.y, or3.u2) - annotation (Line(points={{-38,100},{18,100}}, color={255,0,255})); + annotation (Line(points={{-38,100},{-30,100},{-30,92},{-22,92}}, + color={255,0,255})); connect(conInt.y, intEqu.u2) annotation (Line(points={{-98,130},{-90,130},{-90,122},{-62,122}}, color={255,127,0})); @@ -275,9 +276,6 @@ equation connect(uOpeMod, intEqu4.u1) annotation (Line(points={{-180,120},{-140,120},{-140,150},{-80,150}, {-80,10},{-62,10}}, color={255,127,0})); - connect(or3.y, or1.u1) - annotation (Line(points={{42,100},{60,100},{60,70},{78,70}}, - color={255,0,255})); connect(intEqu3.y, or2.u1) annotation (Line(points={{-38,40},{18,40}}, color={255,0,255})); connect(intEqu4.y, or2.u2) @@ -300,7 +298,12 @@ equation -116},{-72,-116}}, color={0,0,127})); connect(firOrdHol.y, norPSet.u1) annotation (Line(points={{-78,-50},{-76,-50}, {-76,-64},{-72,-64}}, color={0,0,127})); - + connect(intEqu2.y, or4.u1) + annotation (Line(points={{-38,70},{18,70}}, color={255,0,255})); + connect(or4.y, or1.u1) + annotation (Line(points={{42,70},{78,70}}, color={255,0,255})); + connect(or3.y, or4.u2) annotation (Line(points={{2,100},{10,100},{10,62},{18,62}}, + color={255,0,255})); annotation ( defaultComponentName="conSupFan", Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-160,-140},{140,160}}), @@ -312,7 +315,7 @@ annotation ( fillPattern=FillPattern.Solid, pattern=LinePattern.None), Rectangle( - extent={{-156,156},{134,-6}}, + extent={{-158,158},{132,2}}, lineColor={0,0,0}, fillColor={215,215,215}, fillPattern=FillPattern.Solid, diff --git a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo index ff90dd0a008..21850cc5d8d 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mo @@ -20,18 +20,19 @@ model Enable_TOut_hOut Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutCut1( final k=hOutCutoff) "Outdoor air enthalpy cutoff" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.CDL.Logical.TriggeredTrapezoid TOut( - final rising=1000, - final falling=800, + Buildings.Controls.OBC.CDL.Reals.Sources.Sin TOut( final amplitude=4, - final offset=TOutCutoff - 2) "Outoor air temperature" + final freqHz=1/3600, + final offset=TOutCutoff - 2, + final startTime=10) "Outdoor air temperature" annotation (Placement(transformation(extent={{-160,80},{-140,100}}))); - Buildings.Controls.OBC.CDL.Logical.TriggeredTrapezoid hOut( + Buildings.Controls.OBC.CDL.Reals.Sources.Sin hOut( final amplitude=4000, + final freqHz=1/3600, final offset=hOutCutoff - 2200, - final rising=1000, - final falling=800) "Outdoor air enthalpy" - annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + final startTime=10) "Outdoor air enthalpy" + annotation (Placement(transformation(extent={{-40,38},{-20,58}}))); + protected final parameter Real TOutCutoff( final unit="K", @@ -79,12 +80,6 @@ protected Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFanSta( final k=true) "Supply fan status signal" annotation (Placement(transformation(extent={{-200,-80},{-180,-60}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(final shift=10, - final period=2000) "Boolean pulse signal" - annotation (Placement(transformation(extent={{-200,80},{-180,100}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(final shift=10, - final period=2000) "Boolean pulse signal" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); equation connect(TOutCut.y, enaDis.TCut) annotation (Line(points={{-138,50},{-112,50},{ @@ -103,43 +98,29 @@ equation connect(TOutCut1.y, enaDis1.TCut) annotation (Line(points={{22,50},{30,50},{30, -63},{86,-63}}, color={0,0,127})); connect(hOutCut1.y, enaDis1.hCut) annotation (Line(points={{-58,10},{10,10},{ - 10,-67},{86,-67}}, - color={0,0,127})); + 10,-67},{86,-67}}, color={0,0,127})); connect(hOutBelowCutoff.y, enaDis.hOut) annotation (Line(points={{-218,50},{-180,50},{-180,26},{-130,26},{-130,-65}, {-82,-65}}, color={0,0,127})); connect(TOutBelowCutoff.y, enaDis1.TOut) annotation (Line(points={{76,50},{80,50},{80,-61},{86,-61}}, color={0,0,127})); - connect(booPul.y, TOut.u) - annotation (Line(points={{-178,90},{-162,90}}, color={255,0,255})); - connect(TOut.y, enaDis.TOut) - annotation (Line(points={{-138,90},{-110,90},{-110,-61},{-82,-61}}, color={0,0,127})); - connect(booPul1.y, hOut.u) - annotation (Line(points={{-58,50},{-58,50},{-42,50}}, color={255,0,255})); - connect(hOut.y, enaDis1.hOut) - annotation (Line(points={{-18,50},{-10,50},{-10,20},{20,20},{20,-65},{86, - -65}}, color={0,0,127})); connect(freProSta.y, enaDis1.uFreProSta) annotation (Line(points={{-178,-10},{-30,-10},{-30,-73},{86,-73}}, color={255,127,0})); connect(zoneState.y, enaDis1.uZonSta) annotation (Line(points={{-178,-40},{-160,-40},{-160,-26},{4,-26},{4,-75},{ - 86,-75}}, - color={255,127,0})); + 86,-75}}, color={255,127,0})); connect(outDamPosMaxSig.y, enaDis1.uOutDam_max) annotation (Line(points={{-218, -110},{60,-110},{60,-77},{86,-77}}, color={0,0,127})); connect(outDamPosMinSig.y, enaDis1.uOutDam_min) annotation (Line(points={{-218, -150},{-180,-150},{-180,-120},{70,-120},{70,-79},{86,-79}}, color={0, 0,127})); - connect(TOut.y, enaDis2.TOut) - annotation (Line(points={{-138,90},{-138,90},{200,90},{200,-61},{218,-61}},color={0,0,127})); connect(TOutCut.y, enaDis2.TCut) annotation (Line(points={{-138,50},{-112,50}, {-112,80},{188,80},{188,-63},{218,-63}}, color={0,0,127})); connect(freProSta.y, enaDis2.uFreProSta) annotation (Line(points={{-178,-10},{170,-10},{170,-73},{218,-73}}, color={255,127,0})); connect(zoneState.y, enaDis2.uZonSta) annotation (Line(points={{-178,-40},{-170,-40},{-170,-20},{150,-20},{150, - -75},{218,-75}}, - color={255,127,0})); + -75},{218,-75}}, color={255,127,0})); connect(outDamPosMaxSig.y, enaDis2.uOutDam_max) annotation (Line(points={{-218, -110},{180,-110},{180,-77},{218,-77}}, color={0,0,127})); connect(outDamPosMinSig.y, enaDis2.uOutDam_min) annotation (Line(points={{-218, @@ -151,7 +132,12 @@ equation -70},{-160,-54},{-40,-54},{-40,-70},{86,-70}}, color={255,0,255})); connect(supFanSta.y, enaDis2.u1SupFan) annotation (Line(points={{-178,-70},{-170, -70},{-170,-50},{140,-50},{140,-70},{218,-70}}, color={255,0,255})); - + connect(TOut.y, enaDis.TOut) annotation (Line(points={{-138,90},{-106,90},{-106, + -61},{-82,-61}}, color={0,0,127})); + connect(TOut.y, enaDis2.TOut) annotation (Line(points={{-138,90},{194,90},{194, + -61},{218,-61}}, color={0,0,127})); + connect(hOut.y, enaDis1.hOut) annotation (Line(points={{-18,48},{-10,48},{-10, + 20},{20,20},{20,-65},{86,-65}}, color={0,0,127})); annotation ( experiment(StopTime=1800.0, Tolerance=1e-06), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/Economizers/Subsequences/Validation/Enable_TOut_hOut.mos" diff --git a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/FreezeProtection.mo b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/FreezeProtection.mo index 352572d79bb..f47d4d8da66 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/FreezeProtection.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/FreezeProtection.mo @@ -156,7 +156,7 @@ block FreezeProtection annotation (Placement(transformation(extent={{440,210},{480,250}}), iconTransformation(extent={{100,-170},{140,-130}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1EneCHWPum - if have_frePro + if have_frePro "Energize chilled water pump" annotation (Placement(transformation(extent={{440,130},{480,170}}), iconTransformation(extent={{100,170},{140,210}}))); @@ -233,6 +233,7 @@ block FreezeProtection annotation (Placement(transformation(extent={{440,-710},{480,-670}}), iconTransformation(extent={{100,-210},{140,-170}}))); +protected Buildings.Controls.OBC.CDL.Reals.LessThreshold lesThr( final t=273.15 + 4, final h=Thys) if have_frePro @@ -323,7 +324,7 @@ block FreezeProtection Buildings.Controls.OBC.CDL.Logical.Timer tim3( final t=900) if have_frePro "Check if the supply air temperature has been lower than threshold value for sufficient long time" - annotation (Placement(transformation(extent={{-300,160},{-280,180}}))); + annotation (Placement(transformation(extent={{-320,160},{-300,180}}))); Buildings.Controls.OBC.CDL.Reals.LessThreshold lesThr2( final t=273.15 + 1, final h=Thys) if have_frePro @@ -332,8 +333,8 @@ block FreezeProtection Buildings.Controls.OBC.CDL.Logical.Timer tim4( final t=300) if have_frePro "Check if the supply air temperature has been lower than threshold value for sufficient long time" - annotation (Placement(transformation(extent={{-300,120},{-280,140}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or3 if have_frePro + annotation (Placement(transformation(extent={{-320,120},{-300,140}}))); + Buildings.Controls.OBC.CDL.Logical.Or or7 if have_frePro "Check if it should be in stage 3 mode" annotation (Placement(transformation(extent={{-240,112},{-220,132}}))); Buildings.Controls.OBC.CDL.Logical.Latch lat1 if have_frePro @@ -437,7 +438,7 @@ block FreezeProtection "Clear the latch to end the stage 2 freeze protection" annotation (Placement(transformation(extent={{-220,312},{-200,332}}))); Buildings.Controls.OBC.CDL.Logical.Or or2 if have_frePro - "Start stage 1 freeze protection mode" + "Start stage 1 freeze protection mode" annotation (Placement(transformation(extent={{-100,652},{-80,672}}))); Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg if have_frePro "Switch from stage 2 to stage 1" @@ -484,7 +485,7 @@ block FreezeProtection final k=false) if not freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Hardwired_to_BAS and have_frePro "Constant false" - annotation (Placement(transformation(extent={{-300,-10},{-280,10}}))); + annotation (Placement(transformation(extent={{-320,-10},{-300,10}}))); Buildings.Controls.OBC.CDL.Logical.Not norSta1 if buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan and have_frePro "Not in stage 3" @@ -506,13 +507,12 @@ block FreezeProtection "Not in stage 3" annotation (Placement(transformation(extent={{120,-230},{140,-210}}))); Buildings.Controls.OBC.CDL.Logical.Not norSta3 if have_frePro - "Not in stage 3" + "Not in stage 3" annotation (Placement(transformation(extent={{120,-80},{140,-60}}))); Buildings.Controls.OBC.CDL.Logical.And and3 if not freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Hardwired_to_equipment and have_frePro "Disable supply fan when in stage 3" annotation (Placement(transformation(extent={{320,-100},{340,-80}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai4(final k=1) if freSta == Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.Hardwired_to_equipment and have_frePro @@ -569,39 +569,43 @@ block FreezeProtection Buildings.Controls.OBC.CDL.Logical.Pre pre if have_frePro "Break loop" annotation (Placement(transformation(extent={{-200,112},{-180,132}}))); - CDL.Integers.Sources.Constant conInt9(final k=0) + Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt9(final k=0) if not have_frePro "Dummy constant" annotation (Placement(transformation(extent={{380,270},{400,290}}))); - CDL.Integers.Sources.Constant conInt10(final k=0) + Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt10(final k=0) if not have_frePro "Dummy constant" annotation (Placement(transformation(extent={{380,-680},{400,-660}}))); - CDL.Reals.MultiplyByParameter gai8(final k=1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai8(final k=1) if not have_frePro "Dummy block for enabling and disabling the conditional connection" annotation (Placement(transformation(extent={{-300,-80},{-280,-60}}))); - CDL.Reals.MultiplyByParameter gai9(final k=1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai9(final k=1) if not have_frePro "Dummy block for enabling and disabling the conditional connection" annotation (Placement(transformation(extent={{-300,-130},{-280,-110}}))); - CDL.Reals.MultiplyByParameter gai10(final k=1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai10(final k=1) if not have_frePro "Dummy block for enabling and disabling the conditional connection" annotation (Placement(transformation(extent={{-300,-190},{-280,-170}}))); - CDL.Reals.MultiplyByParameter gai11(final k=1) if ( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai11(final k=1) if ( buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir or buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp) and not have_frePro "Dummy block for enabling and disabling the conditional connection" annotation (Placement(transformation(extent={{-300,-310},{-280,-290}}))); - CDL.Reals.MultiplyByParameter gai12(final k=1) if ( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai12(final k=1) if ( buiPreCon == Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan) and not have_frePro "Dummy block for enabling and disabling the conditional connection" annotation (Placement(transformation(extent={{-300,-440},{-280,-420}}))); - CDL.Reals.MultiplyByParameter gai13(final k=1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai13(final k=1) if not have_frePro "Dummy block for enabling and disabling the conditional connection" annotation (Placement(transformation(extent={{-300,-510},{-280,-490}}))); + Buildings.Controls.OBC.CDL.Logical.Or or6 if have_frePro + "Check if it should be in stage 3 mode" + annotation (Placement(transformation(extent={{-280,152},{-260,172}}))); + equation connect(lesThr.y, tim.u) annotation (Line(points={{-338,670},{-302,670}}, color={255,0,255})); @@ -646,13 +650,9 @@ equation connect(conInt1.y, intSwi1.u1) annotation (Line(points={{62,238},{100,238},{100, 218},{118,218}}, color={255,127,0})); connect(lesThr1.y, tim3.u) annotation (Line(points={{-358,370},{-350,370},{-350, - 170},{-302,170}}, color={255,0,255})); + 170},{-322,170}}, color={255,0,255})); connect(TAirSup, lesThr2.u) annotation (Line(points={{-460,250},{-420,250},{ -420,130},{-402,130}}, color={0,0,127})); - connect(tim3.passed, or3.u1) annotation (Line(points={{-278,162},{-260,162},{-260, - 130},{-242,130}}, color={255,0,255})); - connect(tim4.passed, or3.u2) - annotation (Line(points={{-278,122},{-242,122}}, color={255,0,255})); connect(u1SofSwiRes, lat1.clr) annotation (Line(points={{-460,-30},{-160,-30}, {-160,116},{-142,116}}, color={255,0,255})); connect(lat1.y, retFan.u2) annotation (Line(points={{-118,122},{20,122},{20,-260}, @@ -795,8 +795,6 @@ equation color={255,0,255})); connect(falEdg1.y, lat1.clr) annotation (Line(points={{-198,50},{-160,50},{-160, 116},{-142,116}}, color={255,0,255})); - connect(con2.y, or3.u3) annotation (Line(points={{-278,0},{-260,0},{-260,114}, - {-242,114}}, color={255,0,255})); connect(u1RelFan, and2.u1) annotation (Line(points={{-460,-320},{318,-320}}, color={255,0,255})); connect(lat1.y, norSta1.u) annotation (Line(points={{-118,122},{20,122},{20,-340}, @@ -868,10 +866,10 @@ equation connect(gai7.y, yHeaCoi) annotation (Line(points={{342,-590},{360,-590},{360,-560}, {460,-560}}, color={0,0,127})); connect(lesThr2.y, tim4.u) - annotation (Line(points={{-378,130},{-302,130}}, color={255,0,255})); + annotation (Line(points={{-378,130},{-322,130}}, color={255,0,255})); connect(lat1.y, supFan.u2) annotation (Line(points={{-118,122},{20,122},{20,-140}, {158,-140}}, color={255,0,255})); - connect(or3.y, pre.u) + connect(or7.y, pre.u) annotation (Line(points={{-218,122},{-202,122}}, color={255,0,255})); connect(pre.y, lat1.u) annotation (Line(points={{-178,122},{-142,122}}, color={255,0,255})); @@ -881,8 +879,6 @@ equation annotation (Line(points={{-278,662},{-102,662}}, color={255,0,255})); connect(norFal.y, falEdg1.u) annotation (Line(points={{-338,50},{-222,50}}, color={255,0,255})); - connect(norFal.y, or3.u3) annotation (Line(points={{-338,50},{-260,50},{-260, - 114},{-242,114}}, color={255,0,255})); connect(conInt9.y, yFreProSta) annotation (Line(points={{402,280},{420,280},{420, 230},{460,230}}, color={255,127,0})); connect(conInt10.y, yHotWatPlaReq) annotation (Line(points={{402,-670},{420,-670}, @@ -911,6 +907,16 @@ equation -500},{-302,-500}}, color={0,0,127})); connect(gai13.y, yCooCoi) annotation (Line(points={{-278,-500},{360,-500},{360, -460},{460,-460}}, color={0,0,127})); + connect(tim3.passed, or6.u1) + annotation (Line(points={{-298,162},{-282,162}}, color={255,0,255})); + connect(tim4.passed, or6.u2) annotation (Line(points={{-298,122},{-290,122},{-290, + 154},{-282,154}}, color={255,0,255})); + connect(or6.y, or7.u1) annotation (Line(points={{-258,162},{-250,162},{-250,122}, + {-242,122}}, color={255,0,255})); + connect(norFal.y, or7.u2) annotation (Line(points={{-338,50},{-260,50},{-260,114}, + {-242,114}}, color={255,0,255})); + connect(con2.y, or7.u2) annotation (Line(points={{-298,0},{-260,0},{-260,114}, + {-242,114}}, color={255,0,255})); annotation (defaultComponentName="sinAHUFrePro", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-200},{100,200}}), graphics={ diff --git a/Buildings/Controls/OBC/ASHRAE/G36/Generic/AirEconomizerHighLimits.mo b/Buildings/Controls/OBC/ASHRAE/G36/Generic/AirEconomizerHighLimits.mo index ac8c51b6d53..4a4f422f80f 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/Generic/AirEconomizerHighLimits.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/Generic/AirEconomizerHighLimits.mo @@ -21,7 +21,7 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if (ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb or ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb) "Return air temperature" - annotation (Placement(transformation(extent={{-580,550},{-540,590}}), + annotation (Placement(transformation(extent={{-580,620},{-540,660}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput hRet( final unit="J/kg", @@ -47,6 +47,7 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" annotation (Placement(transformation(extent={{540,20},{580,60}}), iconTransformation(extent={{100,-80},{140,-40}}))); +protected Buildings.Controls.OBC.CDL.Logical.Sources.Constant fixDryBul( final k=ecoHigLimCon == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb) "Fixed dry bulb" @@ -148,26 +149,26 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "ASHRAE zone 8" annotation (Placement(transformation(extent={{-380,1040},{-360,1060}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or3 + Buildings.Controls.OBC.CDL.Logical.Or or23 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Zone 1b, 2b or 3b" - annotation (Placement(transformation(extent={{-40,840},{-20,860}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or1 + annotation (Placement(transformation(extent={{-20,860},{0,880}}))); + Buildings.Controls.OBC.CDL.Logical.Or or1 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Zone 3c, 4b or 4c" - annotation (Placement(transformation(extent={{-40,800},{-20,820}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or2 + annotation (Placement(transformation(extent={{-20,810},{0,830}}))); + Buildings.Controls.OBC.CDL.Logical.Or or2 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Zone 5b, 5c or 6b" - annotation (Placement(transformation(extent={{-40,760},{-20,780}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or4 + annotation (Placement(transformation(extent={{-20,760},{0,780}}))); + Buildings.Controls.OBC.CDL.Logical.Or or4 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Logical or" - annotation (Placement(transformation(extent={{20,800},{40,820}}))); + annotation (Placement(transformation(extent={{40,800},{60,820}}))); Buildings.Controls.OBC.CDL.Logical.Or or6 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Zone 7 or 8" - annotation (Placement(transformation(extent={{-40,720},{-20,740}}))); + annotation (Placement(transformation(extent={{-20,720},{0,740}}))); Buildings.Controls.OBC.CDL.Logical.Or or7 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Logical or" @@ -215,27 +216,27 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Cut off temperature" annotation (Placement(transformation(extent={{220,620},{240,640}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or10 + Buildings.Controls.OBC.CDL.Logical.Or or10 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 - "Zone 1b, 2b or 3b" - annotation (Placement(transformation(extent={{-40,540},{-20,560}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or11 + "Zone 1b, 2b" + annotation (Placement(transformation(extent={{-60,580},{-40,600}}))); + Buildings.Controls.OBC.CDL.Logical.Or or11 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 - "Zone 3c, 4b or 4c" - annotation (Placement(transformation(extent={{-40,500},{-20,520}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or12 + "Zone 3c, 4b" + annotation (Placement(transformation(extent={{-60,530},{-40,550}}))); + Buildings.Controls.OBC.CDL.Logical.Or or12 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 - "Zone 5a, 5b or 5c" - annotation (Placement(transformation(extent={{-40,460},{-20,480}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or13 + "Zone 5a, 5b" + annotation (Placement(transformation(extent={{-60,480},{-40,500}}))); + Buildings.Controls.OBC.CDL.Logical.Or or13 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Zone 6a, 6b or 7" - annotation (Placement(transformation(extent={{-40,420},{-20,440}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or14 + annotation (Placement(transformation(extent={{-60,430},{-40,450}}))); + Buildings.Controls.OBC.CDL.Logical.Or or14 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Logical or" - annotation (Placement(transformation(extent={{20,500},{40,520}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or15 + annotation (Placement(transformation(extent={{20,460},{40,480}}))); + Buildings.Controls.OBC.CDL.Logical.Or or15 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Logical or" annotation (Placement(transformation(extent={{80,400},{100,420}}))); @@ -243,10 +244,10 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Cut off outdoor air temperature" annotation (Placement(transformation(extent={{340,420},{360,440}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or8 + Buildings.Controls.OBC.CDL.Logical.Or or8 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 - "Zone 1a, 2a or 3a" - annotation (Placement(transformation(extent={{-40,340},{-20,360}}))); + "Zone 2a or 3a" + annotation (Placement(transformation(extent={{-60,340},{-40,360}}))); Buildings.Controls.OBC.CDL.Logical.Or or9 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 "Zone 1a, 2a, 3a or 4a" @@ -353,19 +354,19 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 "Title 24, zone 16" annotation (Placement(transformation(extent={{-220,-240},{-200,-220}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or16 + Buildings.Controls.OBC.CDL.Logical.Or or16 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 - "Zone 1, 3 or 5" - annotation (Placement(transformation(extent={{-40,-300},{-20,-280}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or17 + "Zone 1, 3" + annotation (Placement(transformation(extent={{-140,-280},{-120,-260}}))); + Buildings.Controls.OBC.CDL.Logical.Or or35 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 - "Zone 11, 12 or 13" - annotation (Placement(transformation(extent={{-40,-340},{-20,-320}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or18 + "Zone 11, 12" + annotation (Placement(transformation(extent={{-140,-330},{-120,-310}}))); + Buildings.Controls.OBC.CDL.Logical.Or or36 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 - "Zone 14, 15 or 16" - annotation (Placement(transformation(extent={{-40,-380},{-20,-360}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or20 + "Zone 14, 15" + annotation (Placement(transformation(extent={{-140,-380},{-120,-360}}))); + Buildings.Controls.OBC.CDL.Logical.Or or20 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 "Zone 1, 3, 5, or 11 to 16" annotation (Placement(transformation(extent={{20,-340},{40,-320}}))); @@ -382,7 +383,7 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 "Cut off temperature" annotation (Placement(transformation(extent={{200,-300},{220,-280}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or19 + Buildings.Controls.OBC.CDL.Logical.Or or19 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 "Zone 2, 4 or 10" annotation (Placement(transformation(extent={{-40,-430},{-20,-410}}))); @@ -399,7 +400,7 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 "Cut off temperature" annotation (Placement(transformation(extent={{200,-390},{220,-370}}))); - Buildings.Controls.OBC.CDL.Logical.Or3 or21 + Buildings.Controls.OBC.CDL.Logical.Or or21 if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 "Zone 6, 8 or 9" annotation (Placement(transformation(extent={{-40,-510},{-20,-490}}))); @@ -615,40 +616,83 @@ block AirEconomizerHighLimits "Specify the economizer high liimits" final message="Warning: Climate zone is not specified!") "Warning when the climate zone is not specified" annotation (Placement(transformation(extent={{440,940},{460,960}}))); - + Buildings.Controls.OBC.CDL.Logical.Or or22 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 1b, 2b" + annotation (Placement(transformation(extent={{-60,900},{-40,920}}))); + Buildings.Controls.OBC.CDL.Logical.Or or24 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 3c, 4b" + annotation (Placement(transformation(extent={{-60,830},{-40,850}}))); + Buildings.Controls.OBC.CDL.Logical.Or or25 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 5b, 5c" + annotation (Placement(transformation(extent={{-60,780},{-40,800}}))); + Buildings.Controls.OBC.CDL.Logical.Or or26 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Logical or" + annotation (Placement(transformation(extent={{40,760},{60,780}}))); + Buildings.Controls.OBC.CDL.Logical.Or or27 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 1b, 2b or 3b" + annotation (Placement(transformation(extent={{-20,560},{0,580}}))); + Buildings.Controls.OBC.CDL.Logical.Or or28 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 3c, 4b or 4c" + annotation (Placement(transformation(extent={{-20,510},{0,530}}))); + Buildings.Controls.OBC.CDL.Logical.Or or29 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 5a, 5b or 5c" + annotation (Placement(transformation(extent={{-20,460},{0,480}}))); + Buildings.Controls.OBC.CDL.Logical.Or or30 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 6a, 6b or 7" + annotation (Placement(transformation(extent={{-20,410},{0,430}}))); + Buildings.Controls.OBC.CDL.Logical.Or or31 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Logical or" + annotation (Placement(transformation(extent={{20,560},{40,580}}))); + Buildings.Controls.OBC.CDL.Logical.Or or3 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Logical or" + annotation (Placement(transformation(extent={{60,560},{80,580}}))); + Buildings.Controls.OBC.CDL.Logical.Or or33 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1 + "Zone 1a, 2a or 3a" + annotation (Placement(transformation(extent={{-20,320},{0,340}}))); + Buildings.Controls.OBC.CDL.Logical.Or or34 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 + "Zone 1, 3 or 5" + annotation (Placement(transformation(extent={{-100,-300},{-80,-280}}))); + Buildings.Controls.OBC.CDL.Logical.Or or17 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 + "Zone 11, 12 or 13" + annotation (Placement(transformation(extent={{-100,-350},{-80,-330}}))); + Buildings.Controls.OBC.CDL.Logical.Or or18 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 + "Zone 14, 15 or 16" + annotation (Placement(transformation(extent={{-100,-400},{-80,-380}}))); + Buildings.Controls.OBC.CDL.Logical.Or or32 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 + "Logical or" + annotation (Placement(transformation(extent={{-60,-300},{-40,-280}}))); + Buildings.Controls.OBC.CDL.Logical.Or or38 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 + "Zone 2, 4" + annotation (Placement(transformation(extent={{-140,-450},{-120,-430}}))); + Buildings.Controls.OBC.CDL.Logical.Or or39 + if eneStd == Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24 + "Zone 6, 8" + annotation (Placement(transformation(extent={{-140,-540},{-120,-520}}))); equation - connect(ash1B.y, or3.u1) annotation (Line(points={{-358,1230},{-320,1230},{-320, - 858},{-42,858}}, color={255,0,255})); - connect(ash2B.y, or3.u2) annotation (Line(points={{-198,1230},{-160,1230},{-160, - 850},{-42,850}}, color={255,0,255})); - connect(ash3B.y, or3.u3) annotation (Line(points={{-438,1170},{-410,1170},{-410, - 842},{-42,842}}, color={255,0,255})); - connect(ash3C.y, or1.u1) annotation (Line(points={{-358,1170},{-330,1170},{-330, - 818},{-42,818}}, color={255,0,255})); - connect(ash4B.y, or1.u2) annotation (Line(points={{-198,1170},{-170,1170},{-170, - 810},{-42,810}}, color={255,0,255})); - connect(ash4C.y, or1.u3) annotation (Line(points={{-118,1170},{-90,1170},{-90, - 802},{-42,802}}, color={255,0,255})); - connect(ash5B.y, or2.u1) annotation (Line(points={{-358,1110},{-340,1110},{-340, - 778},{-42,778}}, color={255,0,255})); - connect(ash5C.y, or2.u2) annotation (Line(points={{-278,1110},{-260,1110},{-260, - 770},{-42,770}}, color={255,0,255})); - connect(ash6B.y, or2.u3) annotation (Line(points={{-118,1110},{-100,1110},{-100, - 762},{-42,762}}, color={255,0,255})); - connect(or3.y, or4.u1) annotation (Line(points={{-18,850},{0,850},{0,818},{18, - 818}}, color={255,0,255})); + connect(or23.y, or4.u1) annotation (Line(points={{2,870},{20,870},{20,810},{38, + 810}}, color={255,0,255})); connect(or1.y, or4.u2) - annotation (Line(points={{-18,810},{18,810}}, color={255,0,255})); - connect(or2.y, or4.u3) annotation (Line(points={{-18,770},{0,770},{0,802},{18, - 802}}, color={255,0,255})); + annotation (Line(points={{2,820},{12,820},{12,802},{38,802}}, color={255,0,255})); connect(ash7.y, or6.u1) annotation (Line(points={{-438,1050},{-430,1050},{-430, - 730},{-42,730}}, color={255,0,255})); + 730},{-22,730}}, color={255,0,255})); connect(ash8.y, or6.u2) annotation (Line(points={{-358,1050},{-350,1050},{-350, - 722},{-42,722}}, color={255,0,255})); - connect(or4.y, or7.u1) - annotation (Line(points={{42,810},{78,810}}, color={255,0,255})); - connect(or6.y, or7.u2) annotation (Line(points={{-18,730},{60,730},{60,802},{78, - 802}}, color={255,0,255})); + 722},{-22,722}}, color={255,0,255})); connect(ash5A.y, or5.u1) annotation (Line(points={{-438,1110},{-420,1110},{-420, 670},{78,670}}, color={255,0,255})); connect(ash6A.y, or5.u2) annotation (Line(points={{-198,1110},{-180,1110},{-180, @@ -676,57 +720,33 @@ equation connect(swi2.y, swi1.u3) annotation (Line(points={{402,590},{410,590},{410,662}, {418,662}}, color={0,0,127})); connect(ash1B.y, or10.u1) annotation (Line(points={{-358,1230},{-320,1230},{-320, - 558},{-42,558}}, color={255,0,255})); + 590},{-62,590}}, color={255,0,255})); connect(ash2B.y, or10.u2) annotation (Line(points={{-198,1230},{-160,1230},{-160, - 550},{-42,550}}, color={255,0,255})); - connect(ash3B.y, or10.u3) annotation (Line(points={{-438,1170},{-410,1170},{-410, - 542},{-42,542}}, color={255,0,255})); + 582},{-62,582}}, color={255,0,255})); connect(ash3C.y, or11.u1) annotation (Line(points={{-358,1170},{-330,1170},{-330, - 518},{-42,518}}, color={255,0,255})); + 540},{-62,540}}, color={255,0,255})); connect(ash4B.y, or11.u2) annotation (Line(points={{-198,1170},{-170,1170},{-170, - 510},{-42,510}}, color={255,0,255})); - connect(ash4C.y, or11.u3) annotation (Line(points={{-118,1170},{-90,1170},{-90, - 502},{-42,502}}, color={255,0,255})); + 532},{-62,532}}, color={255,0,255})); connect(ash5A.y, or12.u1) annotation (Line(points={{-438,1110},{-420,1110},{-420, - 478},{-42,478}}, color={255,0,255})); + 490},{-62,490}}, color={255,0,255})); connect(ash5B.y, or12.u2) annotation (Line(points={{-358,1110},{-340,1110},{-340, - 470},{-42,470}}, color={255,0,255})); - connect(ash5C.y, or12.u3) annotation (Line(points={{-278,1110},{-260,1110},{-260, - 462},{-42,462}}, color={255,0,255})); + 482},{-62,482}}, color={255,0,255})); connect(ash6A.y, or13.u1) annotation (Line(points={{-198,1110},{-180,1110},{-180, - 438},{-42,438}}, color={255,0,255})); + 440},{-62,440}}, color={255,0,255})); connect(ash6B.y, or13.u2) annotation (Line(points={{-118,1110},{-100,1110},{-100, - 430},{-42,430}}, color={255,0,255})); - connect(ash7.y, or13.u3) annotation (Line(points={{-438,1050},{-430,1050},{-430, - 422},{-42,422}}, color={255,0,255})); - connect(or10.y, or14.u1) annotation (Line(points={{-18,550},{0,550},{0,518},{18, - 518}}, color={255,0,255})); - connect(or11.y, or14.u2) - annotation (Line(points={{-18,510},{18,510}}, color={255,0,255})); - connect(or12.y, or14.u3) annotation (Line(points={{-18,470},{0,470},{0,502},{18, - 502}}, color={255,0,255})); - connect(or14.y, or15.u1) annotation (Line(points={{42,510},{60,510},{60,418},{ - 78,418}}, color={255,0,255})); - connect(or13.y, or15.u2) annotation (Line(points={{-18,430},{40,430},{40,410}, - {78,410}}, color={255,0,255})); - connect(ash8.y, or15.u3) annotation (Line(points={{-358,1050},{-350,1050},{-350, - 402},{78,402}}, color={255,0,255})); + 432},{-62,432}}, color={255,0,255})); connect(or15.y, and3.u1) annotation (Line(points={{102,410},{218,410}}, color={255,0,255})); connect(difDryBul.y, and3.u2) annotation (Line(points={{-498,970},{140,970},{140, 402},{218,402}}, color={255,0,255})); connect(and3.y, swi3.u2) annotation (Line(points={{242,410},{280,410},{280,430},{338,430}}, color={255,0,255})); - connect(TRet, swi3.u1) annotation (Line(points={{-560,570},{170,570},{170,438}, + connect(TRet, swi3.u1) annotation (Line(points={{-560,640},{170,640},{170,438}, {338,438}}, color={0,0,127})); - connect(ash1A.y, or8.u3) annotation (Line(points={{-438,1230},{-400,1230},{-400, - 342},{-42,342}}, color={255,0,255})); connect(ash2A.y, or8.u2) annotation (Line(points={{-278,1230},{-240,1230},{-240, - 350},{-42,350}}, color={255,0,255})); + 342},{-62,342}}, color={255,0,255})); connect(ash3A.y, or8.u1) annotation (Line(points={{-118,1230},{-80,1230},{-80, - 358},{-42,358}}, color={255,0,255})); - connect(or8.y, or9.u2) annotation (Line(points={{-18,350},{0,350},{0,362},{18, - 362}}, color={255,0,255})); + 350},{-62,350}}, color={255,0,255})); connect(ash4A.y, or9.u1) annotation (Line(points={{-278,1170},{-250,1170},{-250, 370},{18,370}}, color={255,0,255})); connect(or9.y, and4.u1) @@ -752,29 +772,17 @@ equation connect(swi4.y, hCut) annotation (Line(points={{402,40},{560,40}}, color={0,0,127})); connect(titZon1.y, or16.u1) annotation (Line(points={{-438,-50},{-400,-50},{-400, - -282},{-42,-282}}, color={255,0,255})); + -270},{-142,-270}},color={255,0,255})); connect(titZon3.y, or16.u2) annotation (Line(points={{-278,-50},{-240,-50},{-240, - -290},{-42,-290}}, color={255,0,255})); - connect(titZon5.y, or16.u3) annotation (Line(points={{-438,-110},{-410,-110},{ - -410,-298},{-42,-298}}, color={255,0,255})); - connect(titZon11.y, or17.u1) annotation (Line(points={{-278,-170},{-260,-170}, - {-260,-322},{-42,-322}}, color={255,0,255})); - connect(titZon12.y, or17.u2) annotation (Line(points={{-198,-170},{-180,-170}, - {-180,-330},{-42,-330}}, color={255,0,255})); - connect(titZon13.y, or17.u3) annotation (Line(points={{-438,-230},{-430,-230}, - {-430,-338},{-42,-338}}, color={255,0,255})); - connect(titZon14.y, or18.u1) annotation (Line(points={{-358,-230},{-350,-230}, - {-350,-362},{-42,-362}}, color={255,0,255})); - connect(titZon15.y, or18.u2) annotation (Line(points={{-278,-230},{-270,-230}, - {-270,-370},{-42,-370}}, color={255,0,255})); - connect(titZon16.y, or18.u3) annotation (Line(points={{-198,-230},{-190,-230}, - {-190,-378},{-42,-378}}, color={255,0,255})); - connect(or16.y, or20.u1) annotation (Line(points={{-18,-290},{0,-290},{0,-322}, - {18,-322}}, color={255,0,255})); - connect(or17.y, or20.u2) - annotation (Line(points={{-18,-330},{18,-330}}, color={255,0,255})); - connect(or18.y, or20.u3) annotation (Line(points={{-18,-370},{0,-370},{0,-338}, - {18,-338}}, color={255,0,255})); + -278},{-142,-278}},color={255,0,255})); + connect(titZon11.y,or35. u1) annotation (Line(points={{-278,-170},{-260,-170}, + {-260,-320},{-142,-320}},color={255,0,255})); + connect(titZon12.y,or35. u2) annotation (Line(points={{-198,-170},{-180,-170}, + {-180,-328},{-142,-328}},color={255,0,255})); + connect(titZon14.y,or36. u1) annotation (Line(points={{-358,-230},{-350,-230}, + {-350,-370},{-142,-370}},color={255,0,255})); + connect(titZon15.y,or36. u2) annotation (Line(points={{-278,-230},{-270,-230}, + {-270,-378},{-142,-378}},color={255,0,255})); connect(or20.y, and5.u1) annotation (Line(points={{42,-330},{198,-330}}, color={255,0,255})); connect(fixDryBul.y, and5.u2) annotation (Line(points={{-498,1010},{150,1010}, @@ -783,12 +791,6 @@ equation annotation (Line(points={{222,-330},{478,-330}}, color={255,0,255})); connect(con5.y, swi5.u1) annotation (Line(points={{222,-290},{240,-290},{240,-322}, {478,-322}}, color={0,0,127})); - connect(titZon2.y, or19.u1) annotation (Line(points={{-358,-50},{-320,-50},{-320, - -412},{-42,-412}}, color={255,0,255})); - connect(titZon4.y, or19.u2) annotation (Line(points={{-198,-50},{-160,-50},{-160, - -420},{-42,-420}}, color={255,0,255})); - connect(titZon10.y, or19.u3) annotation (Line(points={{-358,-170},{-340,-170}, - {-340,-428},{-42,-428}}, color={255,0,255})); connect(or19.y, and6.u1) annotation (Line(points={{-18,-420},{198,-420}}, color={255,0,255})); connect(fixDryBul.y, and6.u2) annotation (Line(points={{-498,1010},{150,1010}, @@ -803,14 +805,8 @@ equation annotation (Line(points={{222,-500},{398,-500}}, color={255,0,255})); connect(con7.y, swi7.u1) annotation (Line(points={{222,-460},{260,-460},{260,-492}, {398,-492}}, color={0,0,127})); - connect(titZon6.y, or21.u1) annotation (Line(points={{-358,-110},{-330,-110},{ - -330,-492},{-42,-492}}, color={255,0,255})); connect(or21.y, and7.u1) annotation (Line(points={{-18,-500},{198,-500}}, color={255,0,255})); - connect(titZon8.y, or21.u2) annotation (Line(points={{-198,-110},{-170,-110},{ - -170,-500},{-42,-500}}, color={255,0,255})); - connect(titZon9.y, or21.u3) annotation (Line(points={{-438,-170},{-420,-170},{ - -420,-508},{-42,-508}}, color={255,0,255})); connect(fixDryBul.y, and7.u2) annotation (Line(points={{-498,1010},{150,1010}, {150,-508},{198,-508}}, color={255,0,255})); connect(swi7.y, swi6.u3) annotation (Line(points={{422,-500},{430,-500},{430,-428}, @@ -826,7 +822,7 @@ equation connect(and8.y, swi9.u2) annotation (Line(points={{222,-650},{320,-650},{320,-630},{478,-630}}, color={255,0,255})); - connect(TRet, swi9.u1) annotation (Line(points={{-560,570},{170,570},{170,-622}, + connect(TRet, swi9.u1) annotation (Line(points={{-560,640},{170,640},{170,-622}, {478,-622}}, color={0,0,127})); connect(swi10.y, swi9.u3) annotation (Line(points={{462,-730},{470,-730},{470, -638},{478,-638}}, color={0,0,127})); @@ -834,7 +830,7 @@ equation {198,-730}}, color={255,0,255})); connect(difDryBul.y, and9.u2) annotation (Line(points={{-498,970},{140,970},{140, -738},{198,-738}}, color={255,0,255})); - connect(TRet, addPar.u) annotation (Line(points={{-560,570},{170,570},{170,-690}, + connect(TRet, addPar.u) annotation (Line(points={{-560,640},{170,640},{170,-690}, {278,-690}}, color={0,0,127})); connect(and9.y, swi10.u2) annotation (Line(points={{222,-730},{438,-730}}, color={255,0,255})); @@ -850,7 +846,7 @@ equation 140,-818},{198,-818}}, color={255,0,255})); connect(addPar1.y, swi11.u1) annotation (Line(points={{302,-770},{330,-770},{330, -802},{398,-802}}, color={0,0,127})); - connect(TRet, addPar1.u) annotation (Line(points={{-560,570},{170,570},{170,-770}, + connect(TRet, addPar1.u) annotation (Line(points={{-560,640},{170,640},{170,-770}, {278,-770}}, color={0,0,127})); connect(addPar2.y, swi12.u1) annotation (Line(points={{302,-850},{340,-850},{340, -882},{358,-882}}, color={0,0,127})); @@ -858,7 +854,7 @@ equation -818},{398,-818}}, color={0,0,127})); connect(difDryBul.y, swi12.u2) annotation (Line(points={{-498,970},{140,970},{ 140,-890},{358,-890}}, color={255,0,255})); - connect(TRet, addPar2.u) annotation (Line(points={{-560,570},{170,570},{170,-850}, + connect(TRet, addPar2.u) annotation (Line(points={{-560,640},{170,640},{170,-850}, {278,-850}}, color={0,0,127})); connect(swi8.y, swi7.u3) annotation (Line(points={{382,-580},{390,-580},{390,-508}, {398,-508}}, color={0,0,127})); @@ -898,7 +894,7 @@ equation annotation (Line(points={{242,280},{298,280}}, color={255,0,255})); connect(con3.y, min1.u1) annotation (Line(points={{42,160},{100,160},{100,326}, {218,326}},color={0,0,127})); - connect(TRet, min1.u2) annotation (Line(points={{-560,570},{170,570},{170,314}, + connect(TRet, min1.u2) annotation (Line(points={{-560,640},{170,640},{170,314}, {218,314}},color={0,0,127})); connect(min1.y, swi13.u1) annotation (Line(points={{242,320},{280,320},{280,288}, {298,288}},color={0,0,127})); @@ -910,7 +906,7 @@ equation 890},{120,190},{218,190}}, color={255,0,255})); connect(con12.y, min2.u1) annotation (Line(points={{42,260},{80,260},{80,236}, {218,236}}, color={0,0,127})); - connect(TRet, min2.u2) annotation (Line(points={{-560,570},{170,570},{170,224}, + connect(TRet, min2.u2) annotation (Line(points={{-560,640},{170,640},{170,224}, {218,224}},color={0,0,127})); connect(and13.y, swi14.u2) annotation (Line(points={{242,190},{258,190}}, color={255,0,255})); @@ -932,7 +928,7 @@ equation annotation (Line(points={{222,-980},{478,-980}}, color={255,0,255})); connect(con5.y, min3.u1) annotation (Line(points={{222,-290},{240,-290},{240,-944}, {358,-944}}, color={0,0,127})); - connect(TRet, min3.u2) annotation (Line(points={{-560,570},{170,570},{170,-956}, + connect(TRet, min3.u2) annotation (Line(points={{-560,640},{170,640},{170,-956}, {358,-956}}, color={0,0,127})); connect(min3.y, swi15.u1) annotation (Line(points={{382,-950},{400,-950},{400, -972},{478,-972}}, color={0,0,127})); @@ -996,6 +992,112 @@ equation annotation (Line(points={{382,950},{398,950}}, color={255,0,255})); connect(not4.y,assMes3. u) annotation (Line(points={{422,950},{438,950}}, color={255,0,255})); + connect(ash1B.y, or22.u1) annotation (Line(points={{-358,1230},{-320,1230},{-320, + 910},{-62,910}}, color={255,0,255})); + connect(ash2B.y, or22.u2) annotation (Line(points={{-198,1230},{-160,1230},{-160, + 902},{-62,902}}, color={255,0,255})); + connect(ash3B.y, or23.u2) annotation (Line(points={{-438,1170},{-410,1170},{-410, + 862},{-22,862}}, color={255,0,255})); + connect(or22.y, or23.u1) annotation (Line(points={{-38,910},{-30,910},{-30,870}, + {-22,870}}, color={255,0,255})); + connect(ash3C.y, or24.u1) annotation (Line(points={{-358,1170},{-330,1170},{-330, + 840},{-62,840}}, color={255,0,255})); + connect(ash4B.y, or24.u2) annotation (Line(points={{-198,1170},{-170,1170},{-170, + 832},{-62,832}}, color={255,0,255})); + connect(or24.y, or1.u1) annotation (Line(points={{-38,840},{-30,840},{-30,820}, + {-22,820}}, color={255,0,255})); + connect(ash4C.y, or1.u2) annotation (Line(points={{-118,1170},{-90,1170},{-90, + 812},{-22,812}}, color={255,0,255})); + connect(ash5B.y, or25.u1) annotation (Line(points={{-358,1110},{-340,1110},{-340, + 790},{-62,790}}, color={255,0,255})); + connect(ash5C.y, or25.u2) annotation (Line(points={{-278,1110},{-260,1110},{-260, + 782},{-62,782}}, color={255,0,255})); + connect(ash6B.y, or2.u2) annotation (Line(points={{-118,1110},{-100,1110},{-100, + 762},{-22,762}}, color={255,0,255})); + connect(or25.y, or2.u1) annotation (Line(points={{-38,790},{-30,790},{-30,770}, + {-22,770}}, color={255,0,255})); + connect(or2.y, or26.u1) + annotation (Line(points={{2,770},{38,770}}, color={255,0,255})); + connect(or6.y, or26.u2) annotation (Line(points={{2,730},{20,730},{20,762},{38, + 762}}, color={255,0,255})); + connect(or4.y, or7.u1) + annotation (Line(points={{62,810},{78,810}}, color={255,0,255})); + connect(or26.y, or7.u2) annotation (Line(points={{62,770},{70,770},{70,802},{78, + 802}}, color={255,0,255})); + connect(or10.y, or27.u1) annotation (Line(points={{-38,590},{-30,590},{-30,570}, + {-22,570}}, color={255,0,255})); + connect(ash3B.y, or27.u2) annotation (Line(points={{-438,1170},{-410,1170},{-410, + 562},{-22,562}}, color={255,0,255})); + connect(ash4C.y, or28.u2) annotation (Line(points={{-118,1170},{-90,1170},{-90, + 512},{-22,512}}, color={255,0,255})); + connect(or11.y, or28.u1) annotation (Line(points={{-38,540},{-30,540},{-30,520}, + {-22,520}}, color={255,0,255})); + connect(ash5C.y, or29.u2) annotation (Line(points={{-278,1110},{-260,1110},{-260, + 462},{-22,462}}, color={255,0,255})); + connect(or12.y, or29.u1) annotation (Line(points={{-38,490},{-30,490},{-30,470}, + {-22,470}}, color={255,0,255})); + connect(ash7.y, or30.u2) annotation (Line(points={{-438,1050},{-430,1050},{-430, + 412},{-22,412}}, color={255,0,255})); + connect(or13.y, or30.u1) annotation (Line(points={{-38,440},{-30,440},{-30,420}, + {-22,420}}, color={255,0,255})); + connect(or27.y, or31.u1) + annotation (Line(points={{2,570},{18,570}}, color={255,0,255})); + connect(or28.y, or31.u2) annotation (Line(points={{2,520},{10,520},{10,562},{18, + 562}}, color={255,0,255})); + connect(or29.y, or14.u1) + annotation (Line(points={{2,470},{18,470}}, color={255,0,255})); + connect(or30.y, or14.u2) annotation (Line(points={{2,420},{10,420},{10,462},{18, + 462}}, color={255,0,255})); + connect(or31.y, or3.u1) + annotation (Line(points={{42,570},{58,570}}, color={255,0,255})); + connect(or14.y, or3.u2) annotation (Line(points={{42,470},{50,470},{50,562},{58, + 562}}, color={255,0,255})); + connect(ash8.y, or15.u2) annotation (Line(points={{-358,1050},{-350,1050},{-350, + 402},{78,402}}, color={255,0,255})); + connect(or3.y, or15.u1) annotation (Line(points={{82,570},{90,570},{90,440},{60, + 440},{60,410},{78,410}}, color={255,0,255})); + connect(or33.y, or9.u2) annotation (Line(points={{2,330},{10,330},{10,362},{18, + 362}}, color={255,0,255})); + connect(or8.y, or33.u1) annotation (Line(points={{-38,350},{-32,350},{-32,330}, + {-22,330}}, color={255,0,255})); + connect(ash1A.y, or33.u2) annotation (Line(points={{-438,1230},{-400,1230},{-400, + 322},{-22,322}}, color={255,0,255})); + connect(titZon5.y, or34.u2) annotation (Line(points={{-438,-110},{-410,-110},{ + -410,-298},{-102,-298}}, color={255,0,255})); + connect(or16.y, or34.u1) annotation (Line(points={{-118,-270},{-110,-270},{-110, + -290},{-102,-290}}, color={255,0,255})); + connect(titZon13.y, or17.u2) annotation (Line(points={{-438,-230},{-430,-230}, + {-430,-348},{-102,-348}}, color={255,0,255})); + connect(or35.y, or17.u1) annotation (Line(points={{-118,-320},{-110,-320},{-110, + -340},{-102,-340}}, color={255,0,255})); + connect(titZon16.y, or18.u2) annotation (Line(points={{-198,-230},{-190,-230}, + {-190,-398},{-102,-398}}, color={255,0,255})); + connect(or36.y, or18.u1) annotation (Line(points={{-118,-370},{-110,-370},{-110, + -390},{-102,-390}}, color={255,0,255})); + connect(or34.y, or32.u1) + annotation (Line(points={{-78,-290},{-62,-290}}, color={255,0,255})); + connect(or17.y, or32.u2) annotation (Line(points={{-78,-340},{-70,-340},{-70,-298}, + {-62,-298}}, color={255,0,255})); + connect(or32.y, or20.u1) annotation (Line(points={{-38,-290},{-20,-290},{-20,-330}, + {18,-330}}, color={255,0,255})); + connect(or18.y, or20.u2) annotation (Line(points={{-78,-390},{-20,-390},{-20,-338}, + {18,-338}}, color={255,0,255})); + connect(titZon2.y, or38.u2) annotation (Line(points={{-358,-50},{-320,-50},{-320, + -448},{-142,-448}}, color={255,0,255})); + connect(titZon4.y, or38.u1) annotation (Line(points={{-198,-50},{-160,-50},{-160, + -440},{-142,-440}}, color={255,0,255})); + connect(titZon10.y, or19.u1) annotation (Line(points={{-358,-170},{-340,-170}, + {-340,-420},{-42,-420}}, color={255,0,255})); + connect(or38.y, or19.u2) annotation (Line(points={{-118,-440},{-100,-440},{-100, + -428},{-42,-428}}, color={255,0,255})); + connect(titZon8.y, or39.u1) annotation (Line(points={{-198,-110},{-170,-110},{ + -170,-530},{-142,-530}}, color={255,0,255})); + connect(titZon6.y, or39.u2) annotation (Line(points={{-358,-110},{-330,-110},{ + -330,-538},{-142,-538}}, color={255,0,255})); + connect(titZon9.y, or21.u1) annotation (Line(points={{-438,-170},{-420,-170},{ + -420,-500},{-42,-500}}, color={255,0,255})); + connect(or39.y, or21.u2) annotation (Line(points={{-118,-530},{-100,-530},{-100, + -508},{-42,-508}}, color={255,0,255})); annotation (defaultComponentName="ecoHigLim", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={ diff --git a/Buildings/Controls/OBC/ASHRAE/G36/Generic/TimeSuppression.mo b/Buildings/Controls/OBC/ASHRAE/G36/Generic/TimeSuppression.mo index d4450ea3f2c..0e51cd81c5f 100644 --- a/Buildings/Controls/OBC/ASHRAE/G36/Generic/TimeSuppression.mo +++ b/Buildings/Controls/OBC/ASHRAE/G36/Generic/TimeSuppression.mo @@ -42,7 +42,6 @@ block TimeSuppression Buildings.Controls.OBC.CDL.Reals.Min supTim "Calculated suppression time due to the setpoint change" annotation (Placement(transformation(extent={{80,0},{100,20}}))); - protected Buildings.Controls.OBC.CDL.Discrete.Sampler samSet( final samplePeriod=samplePeriod) @@ -70,17 +69,11 @@ protected Buildings.Controls.OBC.CDL.Logical.Timer tim "Time when the setpoint is being changed" annotation (Placement(transformation(extent={{-40,-160},{-20,-140}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre1 - "Check if current model time is greater than the initial period equaling the sample time" - annotation (Placement(transformation(extent={{-80,100},{-60,120}}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final t=dTHys, final h=0.5*dTHys) "Check if there is setpoint change" annotation (Placement(transformation(extent={{-120,-160},{-100,-140}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim - "Time of the model" - annotation (Placement(transformation(extent={{-140,100},{-120,120}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=chaRat) "Setpoint change rate" @@ -88,10 +81,6 @@ protected Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Calculate difference of previous and current setpoints" annotation (Placement(transformation(extent={{-20,130},{0,150}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( - final k=samplePeriod) - "Sample period time" - annotation (Placement(transformation(extent={{-140,70},{-120,90}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant conZer( final k=0) "Constant zero" @@ -125,6 +114,14 @@ protected Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute temperature difference" annotation (Placement(transformation(extent={{-20,20},{0,40}}))); + Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel( + final delayTime=samplePeriod, + final delayOnInit=true) + "Ignore the first sampling period" + annotation (Placement(transformation(extent={{-80,100},{-60,120}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant con1( + final k=true) "Constant true" + annotation (Placement(transformation(extent={{-140,100},{-120,120}}))); equation connect(TSet, samSet.u) @@ -141,13 +138,6 @@ equation connect(edg.y,lat1. clr) annotation (Line(points={{-18,-120},{40,-120},{40,-86},{78,-86}}, color={255,0,255})); - connect(modTim.y,gre1. u1) - annotation (Line(points={{-118,110},{-82,110}}, color={0,0,127})); - connect(con.y,gre1. u2) - annotation (Line(points={{-118,80},{-100,80},{-100,102},{-82,102}}, - color={0,0,127})); - connect(gre1.y,swi. u2) - annotation (Line(points={{-58,110},{38,110}}, color={255,0,255})); connect(sub1.y,swi. u1) annotation (Line(points={{2,140},{20,140},{20,118},{38,118}}, color={0,0,127})); @@ -200,7 +190,10 @@ equation 146},{-22,146}}, color={0,0,127})); connect(triSam1.y, temDif.u2) annotation (Line(points={{-98,-20},{-70,-20},{-70, 24},{-62,24}}, color={0,0,127})); - + connect(con1.y, truDel.u) + annotation (Line(points={{-118,110},{-82,110}}, color={255,0,255})); + connect(truDel.y, swi.u2) + annotation (Line(points={{-58,110},{38,110}}, color={255,0,255})); annotation (defaultComponentName="timSup", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={ @@ -291,6 +284,12 @@ of difference (chaRat) but no longer than 30 minutes (1800", revisions="