Skip to content

Commit cd6b2f1

Browse files
Remove support for multiple secondary flow sensors, clean comments
1 parent 09bf7a8 commit cd6b2f1

6 files changed

Lines changed: 34 additions & 42 deletions

File tree

Buildings/Templates/Plants/Boilers/HotWater/BoilerPlant.mo

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -563,9 +563,8 @@ equation
563563
connect(VHeaWatPriRetCon_flow.y, busLooCon.VHeaWatPri_flow);
564564
connect(VHeaWatPriSupNon_flow.y, busLooNon.VHeaWatPri_flow);
565565
connect(VHeaWatPriRetNon_flow.y, busLooNon.VHeaWatPri_flow);
566-
// bus.VHeaWatSec_flow is an array for future support of distributed pumps.
567-
connect(VHeaWatSecSup_flow.y, bus.VHeaWatSec_flow[1]);
568-
connect(VHeaWatSecRet_flow.y, bus.VHeaWatSec_flow[1]);
566+
connect(VHeaWatSecSup_flow.y, bus.VHeaWatSec_flow);
567+
connect(VHeaWatSecRet_flow.y, bus.VHeaWatSec_flow);
569568
connect(VHeaWatBypCon_flow.y, busLooCon.VHeaWatByp_flow);
570569
connect(VHeaWatBypNon_flow.y, busLooNon.VHeaWatByp_flow);
571570
connect(THeaWatPriSupCon.y, busLooCon.THeaWatPriSup);
@@ -843,7 +842,10 @@ annotation(Documentation(
843842
<font color=\"gray\"><em>Constant speed, provided with boiler with factory controls</em></font><br />
844843
<font color=\"gray\"><em>Variable speed, provided with boiler with factory controls</em></font>
845844
</td>
846-
<td></td>
845+
<td>
846+
This setting is only available for non-condensing boilers.
847+
Condensing boilers require variable speed primary HW pumps to prevent primary flow recirculation.
848+
</td>
847849
</tr>
848850
<tr>
849851
<td>Type of primary HW pump arrangement</td>

Buildings/Templates/Plants/Boilers/HotWater/Components/Controls/G36.mo

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,11 @@ block G36
7979
"Design (highest) HW supply temperature setpoint";
8080
final parameter Real TConBoiHotWatSetMax = dat.THeaWatConSup_nominal
8181
"Design (highest) HW supply temperature setpoint for condensing boilers";
82-
// FIXME: Missing enable condition.
8382
final parameter Real minPumSpePri = dat.yPumHeaWatPri_min
8483
"Minimum pump speed";
85-
// FIXME: Missing enable condition: only required for primary-only plants with headered variable speed pumps using differential pressure pump speed control, see G36 3.1.8.4.
8684
final parameter Real VHotWatPri_flow_nominal =
8785
max(dat.VHeaWatPriCon_flow_nominal, dat.VHeaWatPriNon_flow_nominal)
8886
"Plant design hot water flow rate through primary loop";
89-
// FIXME: Missing enable condition: only required for primary-only hot water plants with a minimum flow bypass valve, see G36 3.1.8.2.
9087
final parameter Real boiDesFlo[nBoi] =
9188
{if i <= cfg.nBoiCon
9289
then dat.VHeaWatBoiCon_flow_nominal[i]
@@ -210,24 +207,21 @@ equation
210207
connect(bus.dpHeaWatLoc, ctlLooPri.dpHotWatPri_loc);
211208
connect(bus.dpHeaWatRem, ctlLooPri.dpHotWatPri_rem);
212209
connect(bus.TOut, ctlLooPri.TOut);
213-
// FIXME: There should be distinct connectors in the controller for condensing and non-condensing groups.
214210
connect(busLooCon.THeaWatPlaRet, ctlLooPri.TRetPri);
215211
connect(busLooNon.THeaWatPlaRet, ctlLooPri.TRetPri);
216212
connect(bus.THeaWatSecRet, ctlLooPri.TRetSec);
213+
connect(bus.VHeaWatSec_flow, ctlLooPri.VHotWatSec_flow[1]);
217214
connect(busBoiCon.THeaWatSup, ctlLooPri.TSupBoi[1:cfg.nBoiCon]);
218215
connect(busBoiNon.THeaWatSup, ctlLooPri.TSupBoi[(cfg.nBoiCon + 1):nBoi]);
219-
// FIXME: There should be distinct connectors in the controller for condensing and non-condensing groups.
220216
connect(busLooCon.THeaWatPriSup, ctlLooPri.TSupPri);
221217
connect(busLooNon.THeaWatPriSup, ctlLooPri.TSupPri);
222218
connect(bus.THeaWatSecSup, ctlLooPri.TSupSec);
223219
connect(busPumHeaWatPriCon.y1_actual, ctlLooPri.uPriPum[1:cfg.nBoiCon]);
224220
connect(busPumHeaWatPriNon.y1_actual, ctlLooPri.uPriPum[(cfg.nBoiCon +
225221
1):nBoi]);
226222
connect(bus.u1Sch, ctlLooPri.uSchEna);
227-
// FIXME: There should be distinct connectors in the controller for condensing and non-condensing groups.
228223
connect(busLooCon.VHeaWatByp_flow, ctlLooPri.VHotWatDec_flow);
229224
connect(busLooNon.VHeaWatByp_flow, ctlLooPri.VHotWatDec_flow);
230-
// FIXME: There should be distinct connectors in the controller for condensing and non-condensing groups.
231225
connect(busLooCon.VHeaWatPri_flow, ctlLooPri.VHotWatPri_flow);
232226
connect(busLooNon.VHeaWatPri_flow, ctlLooPri.VHotWatPri_flow);
233227
connect(busValBoiConIso.y1_actual, ctlLooPri.uHotWatIsoValOpe[1:cfg.nBoiCon]);
@@ -239,6 +233,7 @@ equation
239233
// Secondary HW pump controller inputs from plant control bus
240234
connect(bus.dpHeaWatLoc, ctlPumHeaWatSec.dpHotWat_local);
241235
connect(bus.dpHeaWatRem, ctlPumHeaWatSec.dpHotWat_remote);
236+
connect(bus.VHeaWatSec_flow, ctlPumHeaWatSec.VHotWat_flow);
242237
connect(busPumHeaWatSec.y1_actual, ctlPumHeaWatSec.uHotWatPum);
243238
// Primary loop controller outputs to plant control bus
244239
connect(ctlLooPri.TBoiHotWatSupSet[1:cfg.nBoiCon], busBoiCon.THeaWatSupSet);
@@ -251,7 +246,6 @@ equation
251246
connect(ctlLooPri.yHotWatIsoVal[(cfg.nBoiCon + 1):nBoi], busValBoiNonIso.y1);
252247
connect(ctlLooPri.yPriPum[1:cfg.nBoiCon], busPumHeaWatPriCon.y1);
253248
connect(ctlLooPri.yPriPum[(cfg.nBoiCon + 1):nBoi], busPumHeaWatPriNon.y1);
254-
// FIXME: There should be distinct connectors in the controller for condensing and non-condensing groups.
255249
connect(ctlLooPri.yPriPumSpe, busPumHeaWatPriCon.y);
256250
connect(ctlLooPri.yPriPumSpe, busPumHeaWatPriNon.y);
257251
// Secondary HW pump controller outputs to plant control bus
@@ -307,12 +301,6 @@ equation
307301
connect(reqResHeaWat.y, ctlLooPri.resReq)
308302
annotation(Line(points={{170,120},{-18,120},{-18,26.9},{-12,26.9}},
309303
color={255,127,0}));
310-
connect(VHeaWatSec_flow.y, ctlLooPri.VHotWatSec_flow)
311-
annotation(Line(points={{-188,-80},{-20,-80},{-20,-3.7},{-12,-3.7}},
312-
color={0,0,127}));
313-
connect(VHeaWatSec_flow.y[1], ctlPumHeaWatSec.VHotWat_flow)
314-
annotation(Line(points={{-188,-80},{40,-80},{40,82},{48,82}},
315-
color={0,0,127}));
316304
annotation(Documentation(
317305
info="<html>
318306
<h4>Description</h4>

Buildings/Templates/Plants/Boilers/HotWater/Components/Data/Controller.mo

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,15 @@ record Controller
2424
"Outdoor air lockout temperature above which the plant is prevented from operating"
2525
annotation(Dialog(group="Temperature setpoints",
2626
enable=cfg.typCtl ==
27-
Buildings.Templates.Plants.Boilers.HotWater.Types.Controller.Guideline36));
27+
Buildings.Templates.Plants.Boilers.HotWater.Types.Controller.Guideline36));
28+
/* HACK(AntoineGautier):
29+
* We use an unknown dimension [:] in the declarations below to avoid Dymola's
30+
* error "evaluate and check the size declaration".
31+
* However, this requires explicitly providing a value with OCT,
32+
* even if enable=false (the start attribute is not enough for OCT).
33+
* Using fill instead of each for the start attribute also enhances tool
34+
* compatibility.
35+
*/
2836
parameter Modelica.Units.SI.VolumeFlowRate VHeaWatBoiCon_flow_nominal[:](
2937
start=fill(0.1, cfg.nBoiCon),
3038
each displayUnit="L/s",

Buildings/Templates/Plants/Boilers/HotWater/Components/Interfaces/PartialController.mo

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,6 @@ block PartialController
177177
iconTransformation(extent={{-20,-20},{20,20}},
178178
rotation=-90,
179179
origin={100,-60})));
180-
Buildings.Controls.OBC.CDL.Routing.RealExtractSignal VHeaWatSec_flow(
181-
nin=cfg.nLooHeaWatSec,
182-
nout=cfg.nLooHeaWatSec)
183-
if cfg.typPumHeaWatSec <>
184-
Buildings.Templates.Plants.Boilers.HotWater.Types.PumpsSecondary.None
185-
"Secondary HW flow (handles none, single or multiple sensors)"
186-
annotation(Placement(transformation(extent={{-210,-90},{-190,-70}})));
187180
protected
188181
Buildings.Templates.Components.Interfaces.Bus busBoiCon[cfg.nBoiCon]
189182
if cfg.have_boiCon
@@ -281,14 +274,6 @@ equation
281274
annotation(Line(points={{-160,200},{-180,200},{-180,0},{-260,0}},
282275
color={255,204,51},
283276
thickness=0.5));
284-
// HACK: Using an explicit range for bus.VHeaWatSec_flow avoids Dymola's warning
285-
// "Note: since there are connections to elements of pla.bus.VHeaWatSec_flow[]
286-
// we have to expand pla.boiCon.bus.VHeaWatSec_flow[] (which is connected to it)."
287-
connect(bus.VHeaWatSec_flow[1:cfg.nLooHeaWatSec], VHeaWatSec_flow.u)
288-
annotation (Line(
289-
points={{-260,0},{-260,-14},{-240,-14},{-240,-80},{-212,-80}},
290-
color={255,204,51},
291-
thickness=0.5));
292277
annotation(Icon(coordinateSystem(preserveAspectRatio=false)),
293278
Diagram(coordinateSystem(preserveAspectRatio=false,
294279
extent={{-260,-280},{260,280}},

Buildings/Templates/Plants/Boilers/HotWater/Validation/BoilerPlant.mo

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ model BoilerPlant
112112
"Heating load"
113113
annotation(Placement(transformation(extent={{110,-70},{130,-50}})));
114114
Fluid.MixingVolumes.MixingVolume vol(
115+
final energyDynamics=energyDynamics,
115116
m_flow_nominal=pla.mHeaWat_flow_nominal,
116117
V=Buildings.Templates.Data.Defaults.ratVLiqByCap * pla.cap_nominal,
117118
redeclare package Medium=Medium,

Buildings/Templates/Plants/HeatPumps/Components/Data/Controller.mo

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,14 @@ record Controller
7373
annotation (Dialog(group=
7474
"Information provided by designer",
7575
enable=cfg.have_heaWat and cfg.typCtl==Buildings.Templates.Plants.HeatPumps.Types.Controller.AirToWater));
76-
// HACK(AntoineGautier):
77-
// Using cfg.nSenDpHeaWatRem for size(dpHeaWatRemSet_max, 1) is not supported by Dymola which fails to "evaluate and check the size declaration".
78-
// So the size is kept unassigned.
79-
// This requires explicitely providing a value with OCT, even if enable=false.
76+
/* HACK(AntoineGautier):
77+
* We use an unknown dimension [:] in the declaration below to avoid Dymola's
78+
* error "evaluate and check the size declaration".
79+
* However, this requires explicitly providing a value with OCT,
80+
* even if enable=false (the start attribute is not enough for OCT).
81+
* Using fill instead of each for the start attribute also enhances tool
82+
* compatibility.
83+
*/
8084
parameter Modelica.Units.SI.PressureDifference dpHeaWatRemSet_max[:](
8185
start=fill(Buildings.Templates.Data.Defaults.dpHeaWatRemSet_max, cfg.nSenDpHeaWatRem),
8286
final min=fill(0, cfg.nSenDpHeaWatRem))
@@ -201,10 +205,14 @@ record Controller
201205
enable=cfg.have_chiWat and cfg.typCtl==Buildings.Templates.Plants.HeatPumps.Types.Controller.AirToWater
202206
and (cfg.typDis==Buildings.Templates.Plants.HeatPumps.Types.Distribution.Variable1Only
203207
or cfg.typPumChiWatSec<>Buildings.Templates.Plants.HeatPumps.Types.PumpsSecondary.None)));
204-
// HACK(AntoineGautier):
205-
// Using cfg.nSenDpChiWatRem for size(dpChiWatRemSet_max, 1) is not supported by Dymola which fails to "evaluate and check the size declaration".
206-
// So the size is kept unassigned.
207-
// This requires explicitely providing a value with OCT, even if enable=false.
208+
/* HACK(AntoineGautier):
209+
* We use an unknown dimension [:] in the declaration below to avoid Dymola's
210+
* error "evaluate and check the size declaration".
211+
* However, this requires explicitly providing a value with OCT,
212+
* even if enable=false (the start attribute is not enough for OCT).
213+
* Using fill instead of each for the start attribute also enhances tool
214+
* compatibility.
215+
*/
208216
parameter Modelica.Units.SI.PressureDifference dpChiWatRemSet_max[:](
209217
start=fill(Buildings.Templates.Data.Defaults.dpChiWatRemSet_max, cfg.nSenDpChiWatRem),
210218
final min=fill(0, cfg.nSenDpChiWatRem))

0 commit comments

Comments
 (0)