blockEventSequencingSingle
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
(
dtOffto 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 (
dtOffto 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 (
dtOffto 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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | is_php | false | Set to true for polyvalent heat pumps |
| Boolean | have_heaWat | Set to true for plants that provide HW | |
| Boolean | have_chiWat | Set to true for plants that provide CHW | |
| Boolean | have_valInlIso | Set to true if the system has inlet isolation valves | |
| Boolean | have_valOutIso | Set to true if the system has outlet isolation valves | |
| Boolean | have_pumHeaWatPri | Set to true for plants with primary HW pumps | |
| Boolean | have_pumChiWatPri | Set to true for plants with separate primary CHW pumps | |
| Real | dtVal | 90 | Nominal valve timing |
| Real | dtOff | 180 | Heat pump internal shutdown cycle timing |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1Shc | Enable command in SHC mode | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1Hea | Enable command from heating mode sequence | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1PumHeaWatPri_actual | Primary HW pump status – Lead headered or dedicated pump | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1PumChiWatPri_actual | Primary CHW pump status – Lead headered or dedicated pump | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1ValHeaWatInlIso | Inlet HW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1ValHeaWatOutIso | Outlet HW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1ValChiWatInlIso | Inlet CHW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1ValChiWatOutIso | Outlet CHW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1PumHeaWatPri | Primary HW pump request to pump staging logic | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1PumChiWatPri | Primary CHW pump request to pump staging logic | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1 | Enable command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1Hea | Heating mode command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1Coo | Enable command from cooling mode sequence | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1AndHea | Equipment commanded on in heating mode | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1AndCoo | Equipment commanded on in cooling mode |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Controls.OBC.CDL.Logical.Timer | timValHea | Return true when nominal valve timing elapsed | |
| Buildings.Controls.OBC.CDL.Logical.MultiAnd | heaValPum | Return true if heating AND valve timing elapsed AND lead HW pumps on | |
| Buildings.Controls.OBC.CDL.Logical.Or | heaOrCooMet | True if either heating or cooling enable clause met | |
| Buildings.Controls.OBC.CDL.Logical.MultiAnd | cooValPum | Return true if cooling AND valve timing elapsed AND lead CHW pumps on | |
| Utilities.PlaceholderLogical | timValHea_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | u1Coo_internal | Replace with placeholder value if input signal is not available | |
| Buildings.Controls.OBC.CDL.Logical.Or | u1HeaOrCoo | Return true if enabled from heating or cooling mode sequence | |
| Utilities.PlaceholderLogical | u1Hea_internal | Replace with placeholder value if input signal is not available | |
| Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator | rou | Signal routing for plants with dedicated primary CHW pumps | |
| Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator | rou1 | Signal routing for plants without dedicated primary CHW pumps | |
| Buildings.Controls.OBC.CDL.Logical.Nor | off | Return true if disabled from heating and cooling mode sequence | |
| Buildings.Controls.OBC.CDL.Logical.Timer | timHp | Return true when heat pump internal shutdown cycle times out | |
| Buildings.Controls.OBC.CDL.Logical.Latch | latValHeaWatIso | Keep valve open until heat pump internal shutdown cycle times out | |
| Buildings.Controls.OBC.CDL.Logical.Latch | latValChiWatIso | Keep valve open until heat pump internal shutdown cycle times out | |
| Buildings.Controls.OBC.CDL.Logical.Latch | latPumHeaWatPri | Keep pump running until heat pump internal shutdown cycle times out | |
| Buildings.Controls.OBC.CDL.Logical.Latch | latPumChiWatPri | Keep pump running until heat pump internal shutdown cycle times out | |
| Buildings.Controls.OBC.CDL.Logical.Timer | timValCoo | Return true when nominal valve timing elapsed | |
| Utilities.PlaceholderLogical | timValCoo_internal | Replace with placeholder value if input signal is not available | |
| Buildings.Controls.OBC.CDL.Logical.Not | notHea | Return true if disabled from heating sequence | |
| Buildings.Controls.OBC.CDL.Logical.Not | notCoo | Return true if disabled from cooling sequence | |
| Buildings.Controls.OBC.CDL.Logical.MultiAnd | isPhpAndNotCooAndHea | Return true if polyvalent HP disabled for cooling and enabled for heating | |
| Buildings.Controls.OBC.CDL.Logical.Or | timHpOrPhpNotCooAndHea | Return true if HP shutdown cycle ended or polyvalent HP switching to cooling disabled | |
| Buildings.Controls.OBC.CDL.Logical.MultiAnd | isPhpAndNotHeaAndCoo | Return true if polyvalent HP disabled for heating and enabled for cooling | |
| Buildings.Controls.OBC.CDL.Logical.Or | timHpOrPhpNotHeaAndCoo | Return true if HP shutdown cycle ended or polyvalent HP switching to heating disabled | |
| Utilities.PlaceholderLogical | u1ShcHea_internal | Replace with placeholder value if input signal is not available | |
| Buildings.Controls.OBC.CDL.Logical.Or | u1HeaOrShcHea | Return true if heating enabled | |
| Buildings.Controls.OBC.CDL.Logical.Or | u1CooOrShcCoo | Return true if cooling enabled | |
| Buildings.Controls.OBC.CDL.Logical.And | heaAndCooMet | True if both heating and cooling enable clauses met | |
| Buildings.Controls.OBC.CDL.Logical.Pre | y1AndHeaPre | True if heating previously enabled | |
| Buildings.Controls.OBC.CDL.Logical.Pre | y1AndCooPre | True if cooling previously enabled | |
| Buildings.Controls.OBC.CDL.Logical.Switch | swiShcHea | Switch to conditions on both modes being met to transition from off to SHC | |
| Buildings.Controls.OBC.CDL.Logical.Nor | offPre | True if heating and cooling previously disabled | |
| Buildings.Controls.OBC.CDL.Logical.And | u1ShcAndOffPre | True if SHC command with heating and cooling previously disabled | |
| Buildings.Controls.OBC.CDL.Logical.Switch | swiShcCoo | Switch to conditions on both modes being met to transition from off to SHC | |
| Utilities.PlaceholderLogical | offPre_internal | Replace with placeholder value if input signal is not available | |
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant | isPhp | Return true for polyvalent HP | |
| Utilities.PlaceholderLogical | y1ValHeaWatInlIso_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | y1ValHeaWatOutIso_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | y1ValChiWatInlIso_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | y1ValChiWatOutIso_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | y1PumHeaWatPri_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | y1PumChiWatPri_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | u1PumChiWatPri_internal | Replace with placeholder value if input signal is not available | |
| Utilities.PlaceholderLogical | u1PumHeaWatPri_internal | Replace 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.