Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation

Collection of validation models

Information

This package contains validation models.

Package Content

Name Description
Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation.EnableAndModeControl EnableAndModeControl Validation model for sidestream HRC enable and mode control

Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation.EnableAndModeControl Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation.EnableAndModeControl

Validation model for sidestream HRC enable and mode control

Buildings.Templates.Plants.Controls.HeatRecoveryChillers.Validation.EnableAndModeControl

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:

Parameters

TypeNameDefaultDescription
Realcp_default4184Default specific heat capacity used to compute required capacity [J/(kg.K)]
Realrho_default996Default fluid density used to compute required capacity [kg/m3]
Information provided by designer
RealCOPHea_nominal2.8Heating COP at design heating conditions [1]
Nominal condition
RealcapHea_nominal1E6Installed heating capacity [W]
RealTHeaWatSup_nominal323.15Design HW supply temperature [K]
RealTHeaWatRet_nominal315.15Design HW return temperature [K]
RealVHeaWat_flow_nominalcapHea_nominal/abs(THeaWatSu...Design HW volume flow rate [m3/s]
RealTChiWatSup_nominal280.15Design CHW supply temperature [K]
RealTChiWatRet_nominal285.15Design CHW return temperature [K]
RealVChiWat_flow_nominalcapCoo_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;