Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation

Collection of validation models

Information

This package contains validation models.

Package Content

Name Description
Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.AssertMinimumRuntime AssertMinimumRuntime Validation model for the assertion of minimum runtime and off-time
Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EquipmentAvailability EquipmentAvailability Validation model for the evaluation of equipment availability
Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingMultiple EventSequencingMultiple Validation model for staging event sequencing of a group of heat pumps
Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingSingle EventSequencingSingle Validation model for event sequencing logic
Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.RoutingPrimaryPumpStatus RoutingPrimaryPumpStatus Validation model for primary pump status signal routing
Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.SelectModeState SelectModeState Validation model for equipment mode selection

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.AssertMinimumRuntime Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.AssertMinimumRuntime

Validation model for the assertion of minimum runtime and off-time

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.AssertMinimumRuntime

Information

This model validates Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.AssertMinimumRuntime for the following configurations, each with a minimum runtime or off-time dt_min=15 s.

Modelica definition

model AssertMinimumRuntime "Validation model for the assertion of minimum runtime and off-time" Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.AssertMinimumRuntime assRunTim( have_chiWat=true, use_runTim=true, nUni=2, dt_min=15) "Assert minimum runtime – Reversible HP"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1( table=[0, 1, 0; 10, 1, 1; 60, 0, 1; 80, 0, 0], timeScale=1, period=100) "HP on/off command"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Hea( table=[0, 0, 1; 1, 1, 0; 3, 1, 0; 4, 1, 1; 6, 0, 0; 7, 0, 0], timeScale=10, period=100) "HP heating/cooling mode command"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.AssertMinimumRuntime assOffTim( have_chiWat=false, use_runTim=false, nUni=1, dt_min=15) "Assert minimum off-time – Heating-only HP"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Off( table=[0, 1; 20, 0; 30, 1; 40, 0; 60, 1], timeScale=1, period=100) "HP on/off command"; equation connect(u1.y, assRunTim.u1); connect(u1Off.y, assOffTim.u1); connect(u1Hea.y, assRunTim.u1Hea); end AssertMinimumRuntime;

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EquipmentAvailability Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EquipmentAvailability

Validation model for the evaluation of equipment availability

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EquipmentAvailability

Information

This model validates Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EquipmentAvailability for heating-only applications (component avaHeaCoo) and heating and cooling applications (component avaHea).

Modelica definition

model EquipmentAvailability "Validation model for the evaluation of equipment availability" Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EquipmentAvailability avaHeaCoo( have_heaWat=true, have_chiWat=true) "Evaluate equipment availability – Heating and cooling"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Ava( table=[0, 1; 8.1, 0; 9, 1], timeScale=1000, period=10000) "Equipment available signal"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Coo( table=[0, 0; 5, 1; 8, 0; 9.7, 1], timeScale=1000, period=10000) "Equipment enabled in cooling mode"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Hea( table=[0, 1; 1, 0; 2.5, 1; 4.2, 0; 8.5, 1; 9.7, 0], timeScale=1000, period=10000) "Equipment enabled in heating mode"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EquipmentAvailability avaHea( have_heaWat=true, have_chiWat=false) "Evaluate equipment availability – Heating only"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EquipmentAvailability avaCoo( have_heaWat=false, have_chiWat=true) "Evaluate equipment availability – Cooling only"; equation connect(u1Ava.y[1], avaHeaCoo.u1Ava); connect(u1Ava.y[1], avaHea.u1Ava); connect(u1Hea.y[1], avaHea.u1EnaHea); connect(u1Hea.y[1], avaHeaCoo.u1EnaHea); connect(u1Coo.y[1], avaHeaCoo.u1EnaCoo); connect(u1Ava.y[1], avaCoo.u1Ava); connect(u1Coo.y[1], avaCoo.u1EnaCoo); end EquipmentAvailability;

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingMultiple Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingMultiple

Validation model for staging event sequencing of a group of heat pumps

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingMultiple

Information

This model validates Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EventSequencingMultiple in a configuration with one reversible heat pump and one polyvalent heat pump, with dedicated primary pumps and isolation valves at the HP inlet and at the polyvalent HP outlet.

Parameters

TypeNameDefaultDescription
IntegernHp1Number of reversible heat pumps
IntegernPhp1Number of polyvalent units

Modelica definition

model EventSequencingMultiple "Validation model for staging event sequencing of a group of heat pumps" parameter Integer nHp = 1 "Number of reversible heat pumps"; parameter Integer nPhp = 1 "Number of polyvalent units"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EventSequencingMultiple seqEve( final nHp=nHp, final nPhp=nPhp, have_heaWat=true, have_chiWat=true, have_valHpInlIso=true, have_valHpOutIso=false, have_valPhpInlIso=false, have_valPhpOutIso=true, have_pumPriHdr=false, have_pumChiWatPriDedHp=false, nPumHeaWatPri=nHp + nPhp, nPumChiWatPri=nPhp, dtVal=10, dtOff=10) "Staging event sequencing"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1HeaHpPhp( table=[0, 1, 0; 30, 1, 1; 50, 1, 0; 70, 0, 0], timeScale=1, period=100) "Heating enable command – HP (index 1) and polyvalent HP (index 2)"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1CooHpPhp( table=[0, 0, 0; 70, 0, 1; 80, 1, 1], timeScale=1, period=100) "Cooling enable command – HP (index 1) and polyvalent HP (index 2)"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1ShcPhp( table=[0, 0; 50, 1; 70, 0], timeScale=1, period=100) "SHC enable command – Polyvalent HP"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1PumHeaWatPriDed( table=[0, 0, 0; 5, 1, 1], timeScale=1, period=100) "Dedicated primary HW pump status – HP (index 1) and polyvalent HP (index 2)"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1PumChiWatPriDed( table=[0, 0; 62, 1], timeScale=1, period=100) "Dedicated primary CHW pump status – Polyvalent HP"; equation connect(u1HeaHpPhp.y, seqEve.u1HeaHpPhp); connect(u1CooHpPhp.y, seqEve.u1CooHpPhp); connect(u1ShcPhp.y, seqEve.u1ShcPhp); connect(u1PumHeaWatPriDed.y, seqEve.u1PumHeaWatPriDed_actual); connect(u1PumChiWatPriDed.y, seqEve.u1PumChiWatPriDed_actual); end EventSequencingMultiple;

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingSingle Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingSingle

Validation model for event sequencing logic

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.EventSequencingSingle

Information

This model validates Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EventSequencingSingle for the following configurations.

Modelica definition

model EventSequencingSingle "Validation model for event sequencing logic" Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EventSequencingSingle seqEveHea( have_heaWat=true, have_chiWat=false, have_valInlIso=true, have_valOutIso=false, have_pumHeaWatPri=true) "Event sequencing – Heating-only system with primary-secondary distribution"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1( table=[0, 0, 0; 1, 1, 0; 2, 0, 0; 3, 0, 1; 4, 0, 0; 5, 0, 0], timeScale=900, period=4500) "Command signal – Index 1 for heating command, 2 for cooling command"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.EventSequencingSingle seqEveHeaCoo( have_heaWat=true, have_chiWat=true, have_valInlIso=true, have_valOutIso=true, have_pumHeaWatPri=true, have_pumChiWatPri=false) "Event sequencing – Heating and cooling system with primary-only distribution"; Components.Controls.StatusEmulator y1Pum_actual "Pump Status"; Components.Controls.StatusEmulator y1Pum_actual1 "Pump Status"; equation connect(u1.y[1], seqEveHea.u1Hea); connect(u1.y[1], seqEveHeaCoo.u1Hea); connect(u1.y[2], seqEveHeaCoo.u1Coo); connect(seqEveHea.y1PumHeaWatPri, y1Pum_actual.y1); connect(y1Pum_actual.y1_actual, seqEveHea.u1PumHeaWatPri_actual); connect(seqEveHeaCoo.y1PumHeaWatPri, y1Pum_actual1.y1); connect(y1Pum_actual1.y1_actual, seqEveHeaCoo.u1PumHeaWatPri_actual); end EventSequencingSingle;

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.RoutingPrimaryPumpStatus Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.RoutingPrimaryPumpStatus

Validation model for primary pump status signal routing

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.RoutingPrimaryPumpStatus

Information

This model validates Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.RoutingPrimaryPumpStatus for the following configurations, each with two primary pumps.

Modelica definition

model RoutingPrimaryPumpStatus "Validation model for primary pump status signal routing" Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.RoutingPrimaryPumpStatus rouPumHdr( have_pumPriHdr=true, nPumPriDedHp=0, nPumPriDedPhp=0, nPumPri=2) "Routing – Headered primary pumps"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1PumHdr( table=[0, 1, 0; 40, 1, 1], timeScale=1, period=100) "Headered primary pump status"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.RoutingPrimaryPumpStatus rouPumDedHp( have_pumPriHdr=false, nPumPriDedHp=2, nPumPriDedPhp=0, nPumPri=2) "Routing – Dedicated primary pumps, reversible HP only"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1PumDedHp( table=[0, 0, 0; 20, 1, 1], timeScale=1, period=100) "Dedicated primary pump status – HP"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.RoutingPrimaryPumpStatus rouPumDedHpPhp( have_pumPriHdr=false, nPumPriDedHp=1, nPumPriDedPhp=1, nPumPri=2) "Routing – Dedicated primary pumps, reversible HP and polyvalent HP"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1PumDedHpMix( table=[0, 0; 30, 1], timeScale=1, period=100) "Dedicated primary pump status – HP"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1PumDedPhpMix( table=[0, 0; 60, 1], timeScale=1, period=100) "Dedicated primary pump status – Polyvalent HP"; equation connect(u1PumHdr.y, rouPumHdr.u1PumPriHdr_actual); connect(u1PumDedHp.y, rouPumDedHp.u1PumPriDedHp_actual); connect(u1PumDedHpMix.y, rouPumDedHpPhp.u1PumPriDedHp_actual); connect(u1PumDedPhpMix.y, rouPumDedHpPhp.u1PumPriDedPhp_actual); end RoutingPrimaryPumpStatus;

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.SelectModeState Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.SelectModeState

Validation model for equipment mode selection

Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.Validation.SelectModeState

Information

This model validates Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.SelectModeState in a configuration with two reversible heat pumps and two polyvalent heat pumps.

The heating stage index is stepped from stage 0 to stage 4 and the cooling stage index is stepped from stage 0 to stage 3, each independently over time, to exercise equipment selection at each stage. The runtime order of the polyvalent heat pumps is set to the reverse of that of the reversible heat pumps, so that selection by priority order can be observed.

Parameters

TypeNameDefaultDescription
IntegernHp2Number of reversible heat pumps
IntegernPhp2Number of polyvalent units

Modelica definition

model SelectModeState "Validation model for equipment mode selection" parameter Integer nHp = 2 "Number of reversible heat pumps"; parameter Integer nPhp = 2 "Number of polyvalent units"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1AvaHp( table=[0, 1, 1; 80, 0, 1], timeScale=1, period=100) "HP available signal"; Buildings.Templates.Plants.Controls.HeatPumps.Subsequences.SelectModeState selMod( have_chiWat=true, final nHp=nHp, final nPhp=nPhp) "Equipment mode selection"; Buildings.Controls.OBC.CDL.Integers.Sources.TimeTable uStaHea( table=[0, 0, 0; 10, 1, 2; 20, 2, 2; 30, 3, 1; 40, 4, 3], timeScale=1, period=50) "Heating stage index"; PolyvalentHeatPumps.StagingParameters staPhp(final nHp=nHp, final nPhp=nPhp) "Generate staging parameters"; PolyvalentHeatPumps.ExtractStagingMatrix extStaHea( final sta=staPhp.staHea, is_transpose=true) "Extract transpose of heating staging matrix at cooling stage"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1AvaPhp1( table=[0, 1, 1], timeScale=1, period=100) "Polyvalent HP available signal in single mode"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1AvaPhp2( table=[0, 1, 1], timeScale=1, period=100) "Polyvalent HP available signal in SHC mode"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant idxSorHp[nHp]( k={i for i in 1:nHp}) "HP runtime order"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant idxSorPhp[nPhp]( k={i for i in nPhp:-1:1}) "Polyvalent HP runtime order"; Buildings.Controls.OBC.CDL.Integers.Sources.TimeTable uStaCoo( table=[0, 0; 60, 3], timeScale=1, period=100) "Cooling stage index"; PolyvalentHeatPumps.ExtractStagingMatrix extStaCoo( final sta=staPhp.staCoo, is_transpose=true) "Extract transpose of cooling staging matrix at heating stage"; equation connect(uStaHea.y[1], selMod.uStaHea); connect(extStaHea.y, selMod.staTraHea); connect(u1AvaHp.y, selMod.u1AvaHeaHp); connect(u1AvaPhp1.y, selMod.u1AvaHeaPhp); connect(u1AvaPhp2.y, selMod.u1AvaShcPhp); connect(idxSorHp.y, selMod.uIdxSorHp); connect(idxSorPhp.y, selMod.uIdxSorPhp); connect(uStaCoo.y[1], extStaHea.u); connect(u1AvaPhp1.y, selMod.u1AvaCooPhp); connect(u1AvaHp.y, selMod.u1AvaCooHp); connect(extStaCoo.y, selMod.staTraCoo); connect(uStaHea.y[1], extStaCoo.u); connect(uStaCoo.y[1], selMod.uStaCoo); end SelectModeState;