Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Radiant control from Integral Group #2647

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
8d67a34
Added radiant sequences
fionamwoods Jun 24, 2020
7973371
Uploaded interior and exterior zone radiant models
fionamwoods Jun 24, 2020
22fc276
Added test thermal zones
fionamwoods Jun 24, 2020
9f00655
Added new glazing system
fionamwoods Jun 24, 2020
40f7880
Added new R-25 wall
fionamwoods Jun 24, 2020
1d16286
Merge pull request #2 from lbl-srg/master
fionamwoods Jul 1, 2020
f78a1e7
Merge pull request #1 from fionamwoods/radiant
fionamwoods Jul 8, 2020
ceaf817
Radiant control as of 7/23 added
fionamwoods Jul 23, 2020
145ee3d
Test repo
fionamwoods Jul 23, 2020
791ea90
Merge pull request #3 from lbl-srg/master
fionamwoods Jul 23, 2020
2008edc
Nat vent control draft #1
fionamwoods Aug 19, 2020
e1c9229
Radiant changes and nat vent
fionamwoods Aug 19, 2020
58bf641
Radiant changes nat vent add try 2
fionamwoods Aug 19, 2020
51ffe01
Nat vent add try 2
fionamwoods Aug 19, 2020
1cabf9f
Fixed errors with duplicate packages in same file
fionamwoods Aug 19, 2020
b9bd24b
Radiant and nat vent
fionamwoods Sep 16, 2020
8f94d1e
Attempt to add sublockouts
fionamwoods Sep 17, 2020
ed822e7
Sublockout fix:
fionamwoods Sep 17, 2020
65b988f
Merge https://github.com/lbl-srg/modelica-buildings
fionamwoods Sep 22, 2020
1ccb873
Syntax changes
fionamwoods Sep 24, 2020
a5897bf
Lighting no longer as one file
fionamwoods Sep 24, 2020
5384c7c
Updated to match Modelica naming conventions; committed reference res…
fionamwoods Oct 5, 2020
eed3d5e
Added reference results, replaced Modelica blocks with Buildings Libr…
fionamwoods Oct 6, 2020
3a9aa61
Added rev sections, finalized comments
fionamwoods Oct 7, 2020
a0ee2f8
Final clean-up of room model to add each to boundary conditions & avo…
fionamwoods Oct 7, 2020
90017e5
Merge https://github.com/lbl-srg/modelica-buildings
fionamwoods Oct 7, 2020
749f5de
Removed old wall
fionamwoods Oct 7, 2020
74c2ebe
Attempt to fix libraries
fionamwoods Oct 8, 2020
96d07eb
fix accidentally edited packages
fionamwoods Oct 8, 2020
c452d06
fix edited files
fionamwoods Oct 8, 2020
908808b
Water issue
fionamwoods Oct 8, 2020
d48e74d
Final comments
fionamwoods Oct 8, 2020
fe0244d
Attempt #3 to fix accidental changes
fionamwoods Oct 8, 2020
f6284b9
Merge branch 'master' of https://github.com/lbl-srg/modelica-buildings
fionamwoods Oct 8, 2020
b41d457
fix errors on radiant validation models ControlPlusLockoutPerimeter a…
fionamwoods Oct 19, 2020
a2ffb8d
New reference results
fionamwoods Oct 19, 2020
56a24cd
Merge pull request #2087 from fionamwoods/master
milicag Oct 19, 2020
d84aecb
updated documentation formatting and converted package paths to links…
milicag Sep 8, 2021
94d0e0a
merged master in, removed Alarms package [ci skip]
milicag Sep 23, 2021
987a477
removed a parameter that does not exist in the instance class [ci skip]
milicag Sep 23, 2021
c21d18d
temp var rename script, updated hysteresis offset [ci skip]
milicag Sep 23, 2021
f0e31a8
added further models to the variable rename lists [ci skip]
milicag Sep 23, 2021
b656f94
updated reference results, removed obsolete parameter, package test r…
milicag Sep 23, 2021
edc4e1f
edits to formatting and small edits to documentation, added to rename…
milicag Sep 24, 2021
befe7bd
updated and added variables to rename [ci skip]
milicag Sep 24, 2021
8c266ef
renamed part of the variables, up to AllLockouts validation test [ci …
milicag Sep 24, 2021
f4c630b
renamed lockouts until the AllLockout validation test [ci skip]
milicag Sep 25, 2021
db13c70
renamed variables in the lockout models [ci skip]
milicag Sep 25, 2021
e2abcf4
renamed all besides the main controller and its validation models [ci…
milicag Sep 25, 2021
95aa695
renamed variables in the main controller and two of its 3 validators …
milicag Sep 27, 2021
f6d0f4c
updated the last test, finished draft variable rename [ci skip]
milicag Sep 27, 2021
7fbf897
removed obsolete and duplicate models, removed result file names from…
milicag Sep 27, 2021
156ec81
updated reference results [ci skip]
milicag Sep 28, 2021
4253b57
updated simulation statistics in the reference results [ci skip]
milicag Sep 28, 2021
9ce8e15
removed models that are not radiant control [ci skip]
milicag Sep 28, 2021
a5d3c83
removed natural ventilation related models [ci skip]
milicag Sep 28, 2021
4a31bd3
added links to documentation [ci skip]
milicag Sep 28, 2021
e5691cb
Merge remote-tracking branch 'origin' into issue2176_radiant_control_…
milicag Sep 28, 2021
976dfd4
fixed a part of the html errors, fixed revision notes [ci skip]
milicag Sep 28, 2021
8aca5fa
further small edits to html and documentation [ci skip]
milicag Sep 28, 2021
22e5e5e
moved models to OBC package [ci skip]
milicag Sep 29, 2021
c25b5da
reverted auto-introduced edits [ci skip]
milicag Sep 29, 2021
7f1040b
resolved html errors, formatted documentation [ci skip]
milicag Sep 29, 2021
99f1091
re-added the dependencies, updated translation statistics in the refe…
milicag Sep 29, 2021
29e30be
added missing comments [ci skip]
milicag Sep 30, 2021
bdc25c7
resolved warnings found by modelica-json parser [ci skip]
milicag Sep 30, 2021
422fee8
local tests ok for the package, addresses radiant control portion of …
milicag Sep 30, 2021
3b5abb9
updated package order [ci skip]
milicag Sep 30, 2021
77d1810
minor edit
milicag Sep 30, 2021
20e1aa2
ensured files can be verified
milicag Sep 30, 2021
405ab3d
removed scripts related to a removed package
milicag Sep 30, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<<<<<<< HEAD:Buildings/Fluid/FixedResistances/BaseClasses/Validation/package.mo
within Buildings.Fluid.FixedResistances.BaseClasses;
=======
within Buildings.Controls.OBC.RadiantSystems.Cooling;
>>>>>>> origin:Buildings/Controls/OBC/RadiantSystems/Cooling/Validation/package.mo
package Validation "Collection of validation models"
extends Modelica.Icons.ExamplesPackage;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
within Buildings.Controls.OBC.RadiantSystems.CoolingAndHeating;
block ControlPlusLockouts "Full radiant control"
parameter Real TZonHigSet(min=0,
final unit="K",
final displayUnit="degC",
final quantity="Temperature")=297.6
"Air temperature high limit above which heating is locked out";
parameter Real TZonLowSet(min=0,
final unit="K",
final displayUnit="degC",
final quantity="Temperature")=293.15
"Air temperature low limit below which heating is locked out";
parameter Real TWatSetLow(min=0,
final unit="K",
final displayUnit="degC",
final quantity="Temperature")=285.9
"Lower limit for chilled water return temperature, below which cooling is locked out";
parameter Real cooLocDurWatTem(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time")=1800 "Time for which cooling is locked if CHW return is too cold";
parameter Real heaLocDurAftCoo(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time") = 3600 "Time for which heating is locked out after cooling concludes";
parameter Real cooLocDurAftHea(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time") = 3600 "Time for which cooling is locked out after heating concludes";
parameter Real TDeaRel(min=0,
final unit="K",
final displayUnit="degC",
final quantity="TemperatureDifference")=2.22 "Difference from slab temp setpoint required to trigger alarm during occupied hours";
parameter Real TDeaNor(min=0,
final unit="K",
final displayUnit="degC",
final quantity="TemperatureDifference")=0.28
"Difference from slab temp setpoint required to trigger alarm during unoccupied hours";
parameter Real k(min=0,max=24)=18 "Last occupied hour";
parameter Boolean offWitDea=true "If flow should turn off when slab setpoint is within deadband, set to true. Otherwise, set to false";

Controls.OBC.CDL.Logical.And and2 "Final Heating Signal"
annotation (Placement(transformation(extent={{20,40},{40,60}})));
Controls.OBC.CDL.Logical.And and1 "Final cooling signal"
annotation (Placement(transformation(extent={{20,-20},{40,0}})));
Controls.OBC.CDL.Interfaces.RealInput TRooAir "Room air temperature"
annotation (Placement(transformation(extent={{-140,-60},{-100,-20}})));
Controls.OBC.CDL.Interfaces.RealInput TSla "Measured slab temperature"
annotation (Placement(transformation(extent={{-140,60},{-100,100}})));
Controls.OBC.CDL.Interfaces.RealInput TSlaWatRet "Water return temperature"
annotation (Placement(transformation(extent={{-140,-100},{-100,-60}})));
SlabTemperatureSignal.Error err "Slab temperature error"
annotation (Placement(transformation(extent={{-58,40},{-38,60}})));
Controls.OBC.CDL.Interfaces.RealInput TSlaSet "Slab temperature setpoint"
annotation (Placement(transformation(extent={{-140,20},{-100,60}})));
Controls.OBC.CDL.Interfaces.BooleanInput uNigFlu
"Night flush signal- true if night flush on; false if not"
annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
Controls.OBC.CDL.Interfaces.BooleanOutput yHea
"True if heating is called for; false if not"
annotation (Placement(transformation(extent={{100,24},{140,64}})));
Controls.OBC.CDL.Interfaces.BooleanOutput yCoo
"True if cooling is called for; false if not"
annotation (Placement(transformation(extent={{100,-50},{140,-10}})));
Lockouts.AllLockouts allLoc(
TZonHigSet=TZonHigSet,
TZonLowSet=TZonLowSet,
TWatSetLow=TWatSetLow,
cooLocDurWatTem=cooLocDurWatTem,
heaLocDurAftCoo=heaLocDurAftCoo,
cooLocDurAftHea=cooLocDurAftHea) "All lockouts, combined"
annotation (Placement(transformation(extent={{-20,0},{0,20}})));
SlabTemperatureSignal.DeadbandControl deaCon(
TDeaRel=TDeaRel,
TDeaNor=TDeaNor,
k=k) "Slab temperature deadband control"
annotation (Placement(transformation(extent={{-24,38},{6,68}})));
Controls.OBC.CDL.Logical.Pre pre "Breaks recursive loop"
annotation (Placement(transformation(extent={{60,-40},{80,-20}})));
Controls.OBC.CDL.Logical.Pre pre1 "Breaks recursive loop"
annotation (Placement(transformation(extent={{60,60},{80,80}})));
equation
connect(err.TSlaSet, TSlaSet) annotation (Line(points={{-60,47},{-60,48},{-96,
48},{-96,40},{-120,40}}, color={0,0,127}));
connect(err.TSla, TSla)
annotation (Line(points={{-60,51},{-60,80},{-120,80}}, color={0,0,127}));
connect(and1.y, yCoo) annotation (Line(points={{42,-10},{94,-10},{94,-30},{120,
-30}}, color={255,0,255}));
connect(and2.y, yHea) annotation (Line(points={{42,50},{94,50},{94,44},{120,
44}}, color={255,0,255}));
connect(uNigFlu, allLoc.uNigFlu) annotation (Line(points={{-120,0},{-86,0},
{-86,19},{-22,19}}, color={255,0,255}));
connect(TRooAir, allLoc.TRooAir) annotation (Line(points={{-120,-40},{-78,-40},
{-78,7},{-22,7}}, color={0,0,127}));
connect(TSlaWatRet, allLoc.TSlaWatRet) annotation (Line(points={{-120,-80},{-40,-80},
{-40,3},{-22,3}}, color={0,0,127}));
connect(allLoc.yHea, and2.u2) annotation (Line(points={{2,13},{16,13},{16,
42},{18,42}}, color={255,0,255}));
connect(allLoc.yCoo, and1.u2) annotation (Line(points={{2,5},{6,5},{6,-18},
{18,-18}}, color={255,0,255}));
connect(err.slaTemErr, deaCon.slaTemErr) annotation (Line(points={{-36,51},{-32,
51},{-32,39.2},{-26.6,39.2}}, color={0,0,127}));
connect(deaCon.uCoo, and1.u1) annotation (Line(points={{8,44},{12,44},{12,-10},
{18,-10}}, color={255,0,255}));
connect(deaCon.uHea, and2.u1) annotation (Line(points={{8,54},{14,54},{14,
50},{18,50}}, color={255,0,255}));
connect(and1.y, pre.u) annotation (Line(points={{42,-10},{50,-10},{50,-30},{
58,-30}}, color={255,0,255}));
connect(pre.y, allLoc.uCoo) annotation (Line(points={{82,-30},{86,-30},{86,-60},
{-60,-60},{-60,11},{-22,11}}, color={255,0,255}));
connect(and2.y, pre1.u) annotation (Line(points={{42,50},{50,50},{50,70},{58,
70}}, color={255,0,255}));
connect(pre1.y, allLoc.uHea) annotation (Line(points={{82,70},{84,70},{84,94},
{-74,94},{-74,15},{-22,15}}, color={255,0,255}));
annotation (defaultComponentName = "conPluLoc",Documentation(info="<html>
<p>
This encompasses full radiant control based on water return temperature, room air temperature, night flush signal, slab temperature, and slab setpoint.
</p>
<p> Each day, a slab temperature setpoint for a perimeter zone should be determined based on a lookup table that references the forecast high outdoor air temperature.
See <a href=\"modelica://Buildings.Controls.OBC.RadiantSystems.CoolingAndHeating.SlabTemperatureSignal.SlabSetpointPerimeter\">
Buildings.Controls.OBC.RadiantSystems.CoolingAndHeating.SlabTemperatureSignal.SlabSetpointPerimeter</a>.
</p>
<p>
Core zone setpoints are set to a constant value throughout the year (typically 70<code>degF</code>).
</p>
<p>
The user specifies a deadband for occupied hours <code>TDeaNor</code> and one for unoccupied hours <code>TDeaRel</code>.
Each day, from midnight until the last occupied hour, a call for heating or cooling is produced if the setpoint is not met within the occupied deadband.
After the last occupied hour, typically 18 (6PM), calls for heating or cooling are produced if the setpoint is not met within the unoccupied deadband.
</p>
<p>
If there is a call for heating (ie, the slab temperature is below its setpoint minus a user-specified deadband) and heating is not locked out, a heating signal is generated, asking for hot water to be sent to the slab.
If there is a call for cooling (ie, the slab temperature is above its setpoint plus a user-specified deadband) and cooling is not locked out, a cooling signal is generated, asing for cold water to be sent to the slab.
</p>
<p>
When the slab is within its deadband, the user specifies whether the system should send no calls for heating or cooling (i.e. <code>offWitDea</code> is set to <code>true</code>),
or whether it should continue to call for heating or cooling and then correct itself once the slab temperature goes out of range (i.e. <code>offWitDea</code> is set to <code>false</code>).
</p>
<p>
Heating is locked out if room air temperature is too hot (above a user-specified value, <code>TZonHigSet</code>), if night flush mode is on, or if cooling was on within a user-specified amount of time (<code>heaLocDurAftCoo</code>).
</p>
<p>
Cooling is locked out if room air temperature is too cold (below a user-specified value, <code>TZonLowSet</code>), if chilled water return temperature is lower than a user-specified value
(<code>TWatSetLow</code>, typically 55<code>degF</code> or the chilled water supply temperature), or if heating was on within a user-specified amount of time (<code>cooLocDurAftHea</code>, typically one hour).
</p>
</html>", revisions="<html>
<ul>
<li>
October 6, 2020, by Fiona Woods:<br/>
Updated description.
</li>
</ul>
</html>"),Icon(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}}),graphics={
Text(
lineColor={0,0,255},
extent={{-148,104},{152,144}},
textString="%name"),
Rectangle(extent={{-100,-100},{100,100}},
lineColor={0,0,127},
fillColor={255,255,255},
fillPattern=FillPattern.Solid),
Line(points={{-80,68},{-80,-80}}, color={192,192,192}),
Polygon(points={{-80,90},{-88,68},{-72,68},{-80,90}},
lineColor={192,192,192},
fillColor={192,192,192},
fillPattern=FillPattern.Solid),
Line(points={{-90,0},{68,0}}, color={192,192,192}),
Polygon(points={{90,0},{68,8}, {68,-8},{90,0}},
lineColor={192,192,192}, fillColor={192,192,192},
fillPattern=FillPattern.Solid),
Line(points={{-80,0},{80,0}}),
Line(points={{-80,-70},{-40,-70},{31,38}}),
Polygon(lineColor = {191,0,0},
fillColor = {191,0,0},
pattern = LinePattern.None,
fillPattern = FillPattern.Solid,
points={{20,58},{100,-2},{20,-62},{20,58}}),
Text(
extent={{-72,78},{72,6}},
lineColor={0,0,0},
textString="R"),
Text(
extent={{226,60},{106,10}},
lineColor={0,0,0},
textString=DynamicSelect("", String(y, leftjustified=false, significantDigits=3)))}), Diagram(coordinateSystem(
preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
Text(
extent={{-92,92},{284,76}},
lineColor={0,0,0},
lineThickness=1,
horizontalAlignment=TextAlignment.Left,
textStyle={TextStyle.Bold},
textString="Control Plus Lockouts:
Full radiant control-
slab error,
deadband control,
and lockouts")}));
end ControlPlusLockouts;
Loading