blockEventSequencingSingle

Staging event sequencing for a single heat pump

Information

If a heat pump is commanded on in a desired heating or cooling mode:

  • The isolation valves for desired heating or cooling mode are commanded open.
  • Plants with dedicated primary pumps: The dedicated primary pumps are commanded on when the associated isolation valves are commanded open.
  • Plants with headered primary pumps: The headered primary pumps are commanded on as described in Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered.
  • Once the isolation valves are fully open (based on nominal valve timing dtVal) and the lead pumps are proven on, the heat pump is enabled in heating or cooling mode.

If a heat pump is commanded off:

  • The heat pump is disabled.
  • After the time required for the internal shutdown cycle to time out (dtOff to be determined empirically, defaulting to 3 min), all isolation valves are commanded closed.
  • Plants with dedicated primary pumps: The dedicated primary pumps are commanded off when the associated isolation valves are commanded closed.
  • Plants with headered primary pumps: The headered primary pumps are commanded off as described in Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered.
Polyvalent heat pumps

Note: For polyvalent heat pumps with dedicated primary pumps, no isolation valves are required. This is in contrast with two-pipe reversible heat pumps, which require changeover valves regardless of the primary pump arrangement.

If a polyvalent heat pump is commanded on in either heating-only or cooling-only mode:

  • Plants with dedicated primary pumps: The associated primary pumps are commanded on. Once the associated primary pumps are proven on, the polyvalent heat pump command for the desired mode is switched on.
  • Plants with headered primary pumps: The isolation valves for the desired mode are commanded open. The headered primary pumps are commanded on as described in Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered. Once the isolation valves are fully open (based on nominal valve timing dtVal) and the lead pumps are proven on, the polyvalent heat pump command for the desired mode is switched on.

If a polyvalent heat pump is commanded on in simultaneous heating and cooling mode, the enable interlocking logic described above applies to both the CHW and HW sides. Once both the CHW and HW isolation valves, if any, are fully open (based on nominal valve timing dtVal) and the associated CHW and HW primary pumps are proven on, the polyvalent heat pump commands for both modes are switched on.

If a polyvalent heat pump switches from heating-only or cooling-only mode to simultaneous heating and cooling mode, the enable interlocking logic described above applies to the side being enabled: the polyvalent heat pump command for the newly enabled mode is switched on once the isolation valves of that side, if any, are fully open (based on nominal valve timing dtVal) and the associated primary pumps are proven on.

If a polyvalent heat pump switches from simultaneous heating and cooling mode to heating-only or cooling-only mode:

  • The polyvalent heat pump command for the disabled mode is switched off.
  • Plants with dedicated primary pumps: The associated primary pumps of the disabled side are commanded off without delay.
  • Plants with headered primary pumps: The isolation valves of the disabled side are commanded closed without delay. The headered primary pumps of the disabled side are commanded off as described in Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered.

If a polyvalent heat pump is commanded off:

  • The polyvalent heat pump commands for both modes are switched off.
  • Plants with dedicated primary pumps: After the time required for the internal shutdown cycle to time out (dtOff to be determined empirically, defaulting to 3 min), the dedicated primary pumps are commanded off.
  • Plants with headered primary pumps: After the time required for the internal shutdown cycle to time out (dtOff to be determined empirically, defaulting to 3 min), all isolation valves are commanded closed. The headered primary pumps are commanded off as described in Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered.

Implementation details

The timer tracking the heat pump shutdown cycle is reset if the heat pump is enabled in any mode. This implies that the isolation valves remain open unless the heat pump stays disabled for at least dtOff. The heat pump enable sequence must therefore guarantee that the heat pump remains off for at least dtOff before being enabled in the opposite mode. For polyvalent heat pumps, this requirement is not needed for valve and pump control: when one mode is disabled while the other remains enabled, the isolation valves and pumps of the disabled side are commanded off without delay. However, any minimum off time required by the heat pump between opposite operating modes must still be enforced by the enable sequence.

To facilitate integration into plant controllers serving both reversible and polyvalent heat pumps, the output connectors for the isolation valve commands and the primary pump enable commands are always instantiated, and set to false when the corresponding equipment is not present.

Parameters

TypeNameDefaultDescription
Booleanis_phpfalseSet to true for polyvalent heat pumps
Booleanhave_heaWatSet to true for plants that provide HW
Booleanhave_chiWatSet to true for plants that provide CHW
Booleanhave_valInlIsoSet to true if the system has inlet isolation valves
Booleanhave_valOutIsoSet to true if the system has outlet isolation valves
Booleanhave_pumHeaWatPriSet to true for plants with primary HW pumps
Booleanhave_pumChiWatPriSet to true for plants with separate primary CHW pumps
RealdtVal90Nominal valve timing
RealdtOff180Heat pump internal shutdown cycle timing

Connectors

TypeNameDefaultDescription
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputu1ShcEnable command in SHC mode
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputu1HeaEnable command from heating mode sequence
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputu1PumHeaWatPri_actualPrimary HW pump status – Lead headered or dedicated pump
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputu1PumChiWatPri_actualPrimary CHW pump status – Lead headered or dedicated pump
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1ValHeaWatInlIsoInlet HW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1ValHeaWatOutIsoOutlet HW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1ValChiWatInlIsoInlet CHW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1ValChiWatOutIsoOutlet CHW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1PumHeaWatPriPrimary HW pump request to pump staging logic
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1PumChiWatPriPrimary CHW pump request to pump staging logic
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1Enable command
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1HeaHeating mode command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputu1CooEnable command from cooling mode sequence
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1AndHeaEquipment commanded on in heating mode
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutputy1AndCooEquipment commanded on in cooling mode

Components

TypeNameDefaultDescription
Buildings.Controls.OBC.CDL.Logical.TimertimValHeaReturn true when nominal valve timing elapsed
Buildings.Controls.OBC.CDL.Logical.MultiAndheaValPumReturn true if heating AND valve timing elapsed AND lead HW pumps on
Buildings.Controls.OBC.CDL.Logical.OrheaOrCooMetTrue if either heating or cooling enable clause met
Buildings.Controls.OBC.CDL.Logical.MultiAndcooValPumReturn true if cooling AND valve timing elapsed AND lead CHW pumps on
Utilities.PlaceholderLogicaltimValHea_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicalu1Coo_internalReplace with placeholder value if input signal is not available
Buildings.Controls.OBC.CDL.Logical.Oru1HeaOrCooReturn true if enabled from heating or cooling mode sequence
Utilities.PlaceholderLogicalu1Hea_internalReplace with placeholder value if input signal is not available
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorrouSignal routing for plants with dedicated primary CHW pumps
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorrou1Signal routing for plants without dedicated primary CHW pumps
Buildings.Controls.OBC.CDL.Logical.NoroffReturn true if disabled from heating and cooling mode sequence
Buildings.Controls.OBC.CDL.Logical.TimertimHpReturn true when heat pump internal shutdown cycle times out
Buildings.Controls.OBC.CDL.Logical.LatchlatValHeaWatIsoKeep valve open until heat pump internal shutdown cycle times out
Buildings.Controls.OBC.CDL.Logical.LatchlatValChiWatIsoKeep valve open until heat pump internal shutdown cycle times out
Buildings.Controls.OBC.CDL.Logical.LatchlatPumHeaWatPriKeep pump running until heat pump internal shutdown cycle times out
Buildings.Controls.OBC.CDL.Logical.LatchlatPumChiWatPriKeep pump running until heat pump internal shutdown cycle times out
Buildings.Controls.OBC.CDL.Logical.TimertimValCooReturn true when nominal valve timing elapsed
Utilities.PlaceholderLogicaltimValCoo_internalReplace with placeholder value if input signal is not available
Buildings.Controls.OBC.CDL.Logical.NotnotHeaReturn true if disabled from heating sequence
Buildings.Controls.OBC.CDL.Logical.NotnotCooReturn true if disabled from cooling sequence
Buildings.Controls.OBC.CDL.Logical.MultiAndisPhpAndNotCooAndHeaReturn true if polyvalent HP disabled for cooling and enabled for heating
Buildings.Controls.OBC.CDL.Logical.OrtimHpOrPhpNotCooAndHeaReturn true if HP shutdown cycle ended or polyvalent HP switching to cooling disabled
Buildings.Controls.OBC.CDL.Logical.MultiAndisPhpAndNotHeaAndCooReturn true if polyvalent HP disabled for heating and enabled for cooling
Buildings.Controls.OBC.CDL.Logical.OrtimHpOrPhpNotHeaAndCooReturn true if HP shutdown cycle ended or polyvalent HP switching to heating disabled
Utilities.PlaceholderLogicalu1ShcHea_internalReplace with placeholder value if input signal is not available
Buildings.Controls.OBC.CDL.Logical.Oru1HeaOrShcHeaReturn true if heating enabled
Buildings.Controls.OBC.CDL.Logical.Oru1CooOrShcCooReturn true if cooling enabled
Buildings.Controls.OBC.CDL.Logical.AndheaAndCooMetTrue if both heating and cooling enable clauses met
Buildings.Controls.OBC.CDL.Logical.Prey1AndHeaPreTrue if heating previously enabled
Buildings.Controls.OBC.CDL.Logical.Prey1AndCooPreTrue if cooling previously enabled
Buildings.Controls.OBC.CDL.Logical.SwitchswiShcHeaSwitch to conditions on both modes being met to transition from off to SHC
Buildings.Controls.OBC.CDL.Logical.NoroffPreTrue if heating and cooling previously disabled
Buildings.Controls.OBC.CDL.Logical.Andu1ShcAndOffPreTrue if SHC command with heating and cooling previously disabled
Buildings.Controls.OBC.CDL.Logical.SwitchswiShcCooSwitch to conditions on both modes being met to transition from off to SHC
Utilities.PlaceholderLogicaloffPre_internalReplace with placeholder value if input signal is not available
Buildings.Controls.OBC.CDL.Logical.Sources.ConstantisPhpReturn true for polyvalent HP
Utilities.PlaceholderLogicaly1ValHeaWatInlIso_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicaly1ValHeaWatOutIso_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicaly1ValChiWatInlIso_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicaly1ValChiWatOutIso_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicaly1PumHeaWatPri_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicaly1PumChiWatPri_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicalu1PumChiWatPri_internalReplace with placeholder value if input signal is not available
Utilities.PlaceholderLogicalu1PumHeaWatPri_internalReplace with placeholder value if input signal is not available

Revisions

  • July 10, 2026, by Antoine Gautier:
    Refactored to support polyvalent heat pumps.
  • March 29, 2024, by Antoine Gautier:
    First implementation.