Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation
Collection of validation models
Information
This package contains validation models.
Package Content
Name | Description |
---|---|
![]() |
Validation model for sidestream HRC enable and mode control |
Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation.EnableAndModeControl
Validation model for sidestream HRC enable and mode control
Information
This model validates Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Enable and Buildings.Templates.Plants.Controls.HeatRecoveryChillers.ModeControl. Consequently, it also validates Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Controller, which is composed of the two former blocks.
The validation uses varying ∆T for HW across the HRC condenser and CHW across the HRC evaporator. The model verifies that:
- The HRC is effectively disabled when it is controlled in cooling mode and the leaving HW temperature is high.
- The HRC control mode switches from cooling to heating when the cooling load exceeds the calculated evaporator heat flow rate in heating mode.
Parameters
Type | Name | Default | Description |
---|---|---|---|
Real | cp_default | 4184 | Default specific heat capacity used to compute required capacity [J/(kg.K)] |
Real | rho_default | 996 | Default fluid density used to compute required capacity [kg/m3] |
Information provided by designer | |||
Real | COPHea_nominal | 2.8 | Heating COP at design heating conditions [1] |
Nominal condition | |||
Real | capHea_nominal | 1E6 | Installed heating capacity [W] |
Real | THeaWatSup_nominal | 323.15 | Design HW supply temperature [K] |
Real | THeaWatRet_nominal | 315.15 | Design HW return temperature [K] |
Real | VHeaWat_flow_nominal | capHea_nominal/abs(THeaWatSu... | Design HW volume flow rate [m3/s] |
Real | TChiWatSup_nominal | 280.15 | Design CHW supply temperature [K] |
Real | TChiWatRet_nominal | 285.15 | Design CHW return temperature [K] |
Real | VChiWat_flow_nominal | capCoo_nominal/abs(TChiWatSu... | Design CHW volume flow rate [m3/s] |
Modelica definition
model EnableAndModeControl
"Validation model for sidestream HRC enable and mode control"
parameter Real cp_default(
final min=0,
final unit="J/(kg.K)")=4184
"Default specific heat capacity used to compute required capacity";
parameter Real rho_default(
final min=0,
final unit="kg/m3")=996
"Default fluid density used to compute required capacity";
parameter Real COPHea_nominal(
final min=1.1,
final unit="1")=2.8
"Heating COP at design heating conditions";
parameter Real capHea_nominal(
final unit="W")=1E6
"Installed heating capacity";
parameter Real THeaWatSup_nominal(
unit="K",
displayUnit="degC")=323.15
"Design HW supply temperature";
parameter Real THeaWatRet_nominal(
unit="K",
displayUnit="degC")=315.15
"Design HW return temperature";
parameter Real VHeaWat_flow_nominal(
unit="m3/s")=capHea_nominal / abs(THeaWatSup_nominal - THeaWatRet_nominal) /
cp_default / rho_default
"Design HW volume flow rate";
final parameter Real capCoo_nominal(
final unit="W")=capHea_nominal *(1 - 1 / COPHea_nominal)
"Installed cooling capacity";
parameter Real TChiWatSup_nominal(
unit="K",
displayUnit="degC")=280.15
"Design CHW supply temperature";
parameter Real TChiWatRet_nominal(
unit="K",
displayUnit="degC")=285.15
"Design CHW return temperature";
parameter Real VChiWat_flow_nominal(
unit="m3/s")=capCoo_nominal / abs(TChiWatSup_nominal - TChiWatRet_nominal) /
cp_default / rho_default
"Design CHW volume flow rate";
Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable ratV_flow(
table=[
0, 0, 0;
5, 0, 0;
6, 1, 0;
15, 0, 1;
22, 0, 0.1;
24, 0, 0],
timeScale=3600)
"Source signal for volume flow rate ratio – Index 1 for HW, 2 for CHW";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatRet(
final k=THeaWatRet_nominal,
y(final unit="K",
displayUnit="degC"))
"HWRT";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TChiWatRet(
final k=TChiWatRet_nominal,
y(final unit="K",
displayUnit="degC"))
"CHWRT";
Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter VHeaWat_flow(
final k=VHeaWat_flow_nominal)
"Scale by design flow";
Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter VChiWat_flow(
final k=VChiWat_flow_nominal)
"Scale by design flow";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatSup(
final k=THeaWatSup_nominal,
y(final unit="K",
displayUnit="degC"))
"HWST";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TChiWatSup(
final k=TChiWatSup_nominal,
y(final unit="K",
displayUnit="degC"))
"CHWST";
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold u1Hea(t=1E-4)
"Compute heating plant enable signal";
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold u1Coo(t=1E-4)
"Compute cooling plant enable signal";
StagingRotation.LoadAverage loaChiWat(
typ=Buildings.Templates.Plants.Controls.Types.Application.Cooling,
final cp_default=cp_default,
final rho_default=rho_default)
"Available CHW load";
Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Enable ena(
TChiWatSup_min=277.15,
THeaWatSup_max=328.15,
capCoo_min=0.3 * capCoo_nominal,
capHea_min=0.3 * 0.3 * capHea_nominal);
StagingRotation.LoadAverage loaHeaWat(
typ=Buildings.Templates.Plants.Controls.Types.Application.Heating,
final cp_default=cp_default,
final rho_default=rho_default)
"Available HW load";
Components.Controls.StatusEmulator sta
"Emulate HRC status";
ModeControl setMod(
COPHea_nominal=2.8)
"Set mode";
Buildings.Controls.OBC.CDL.Reals.Sources.Sin dTHeaWat(
amplitude=THeaWatSup_nominal - THeaWatRet_nominal,
freqHz=3 / 50000,
offset=(THeaWatSup_nominal - THeaWatRet_nominal))
"HW Delta_T across HRC condenser";
Buildings.Controls.OBC.CDL.Reals.Add THeaWatHrcLvg
"HRC leaving HWT";
Buildings.Controls.OBC.CDL.Reals.Divide ratFlo
"Flow ratio";
Buildings.Controls.OBC.CDL.Reals.Multiply dTRatFlo
"HW Delta-T times flow ratio";
Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter dTChiWat(
k=-(1 - 1 / COPHea_nominal))
"HRC leaving CHWT";
Buildings.Controls.OBC.CDL.Logical.Pre preMod
"Previous mode setting";
Buildings.Controls.OBC.CDL.Reals.Max bou
"Bound to avoid division by zero";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant cst(
k=1E-4)
"Constant";
Buildings.Controls.OBC.CDL.Reals.Max bou1
"Bound to avoid unrealistic values";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant cst1(
k=3 + 273.15)
"Constant";
Buildings.Controls.OBC.CDL.Reals.Add TChiWatHrcLvg
"HRC leaving CHWT";
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal staToReal
"Convert status to real";
Buildings.Controls.OBC.CDL.Reals.Multiply dTEna
"Non-zero HW Delta-T when HRC on";
Buildings.Controls.OBC.CDL.Logical.MultiAnd mulAnd(
nin=3)
"Make status come and go at low load";
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greLoaChiWat(
final t=ena.capCoo_min)
"True if load greater than minimum before cycling";
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greLoaHeaWat(
final t=ena.capHea_min)
"True if load greater than minimum before cycling";
equation
connect(ratV_flow.y[1], VHeaWat_flow.u);
connect(ratV_flow.y[2], VChiWat_flow.u);
connect(TChiWatSup.y, loaChiWat.TSupSet);
connect(TChiWatRet.y, loaChiWat.TRet);
connect(THeaWatSup.y, loaHeaWat.TSupSet);
connect(THeaWatRet.y, loaHeaWat.TRet);
connect(VHeaWat_flow.y, loaHeaWat.V_flow);
connect(loaChiWat.QReq_flow, ena.QChiWatReq_flow);
connect(loaHeaWat.QReq_flow, ena.QHeaWatReq_flow);
connect(VChiWat_flow.y, loaChiWat.V_flow);
connect(u1Hea.y, ena.u1Hea);
connect(u1Coo.y, ena.u1Coo);
connect(ena.y1, sta.y1);
connect(ena.y1SetMod, setMod.u1SetMod);
connect(loaChiWat.QReq_flow, setMod.QChiWatReq_flow);
connect(loaHeaWat.QReq_flow, setMod.QHeaWatReq_flow);
connect(TChiWatSup.y, setMod.TChiWatSupSet);
connect(THeaWatSup.y, setMod.THeaWatSupSet);
connect(THeaWatRet.y, THeaWatHrcLvg.u2);
connect(THeaWatHrcLvg.y, ena.THeaWatHrcLvg);
connect(VHeaWat_flow.y, ratFlo.u1);
connect(dTRatFlo.y, dTChiWat.u);
connect(setMod.y1Coo, preMod.u);
connect(preMod.y, ena.u1CooHrc);
connect(VChiWat_flow.y, bou.u1);
connect(cst.y, bou.u2);
connect(bou.y, ratFlo.u2);
connect(ratFlo.y, dTRatFlo.u2);
connect(TChiWatRet.y, TChiWatHrcLvg.u2);
connect(bou1.y, ena.TChiWatHrcLvg);
connect(dTChiWat.y, TChiWatHrcLvg.u1);
connect(dTHeaWat.y, dTEna.u2);
connect(staToReal.y, dTEna.u1);
connect(dTEna.y, THeaWatHrcLvg.u1);
connect(dTEna.y, dTRatFlo.u1);
connect(TChiWatHrcLvg.y, bou1.u1);
connect(cst1.y, bou1.u2);
connect(sta.y1_actual, mulAnd.u[1]);
connect(loaChiWat.QReq_flow, greLoaChiWat.u);
connect(loaHeaWat.QReq_flow, greLoaHeaWat.u);
connect(greLoaHeaWat.y, mulAnd.u[2]);
connect(greLoaChiWat.y, mulAnd.u[3]);
connect(mulAnd.y, ena.u1Hrc_actual);
connect(mulAnd.y, staToReal.u);
connect(u1Coo.u, ratV_flow.y[2]);
connect(u1Hea.u, ratV_flow.y[1]);
end EnableAndModeControl;