blockAirToWater
Information
This block implements the sequence of operation for plants with air-to-water heat pumps. Most parts of the sequence of operation are similar to that described in ASHRAE, 2024 for chiller plants.
The supported plant configurations are enumerated in the table below.
| Configuration parameter | Options | Notes |
|---|---|---|
| Function and equipment type |
Heating-only with non-reversible heat pumps Heating and cooling with reversible heat pumps Heating and cooling with reversible heat pumps and heat recovery chiller Heating and cooling with reversible (2-pipe) heat pumps and polyvalent (4-pipe) heat pumps Heating and cooling with polyvalent (4-pipe) heat pumps |
For configurations without polyvalent heat pumps, the heat pumps may be
unequally sized, with only a subset of the units participating in
lead/lag alternation. For configurations with polyvalent heat pumps, the reversible heat pumps must be equally sized among themselves, and the polyvalent heat pumps must be equally sized among themselves. All units are lead/lag alternated within their own pool. For the configuration with a heat recovery chiller, the chiller is considered connected in a sidestream configuration to both the CHW return and the HW return. |
| Type of distribution |
Variable primary-only Constant primary-variable secondary centralized |
It is assumed that the HW and the CHW loops have the same type of
distribution, as specified by this parameter. Most AWHPs on the market use a reverse cycle for defrosting. This requires maximum primary flow during defrost cycles. Consequently, variable primary plants commonly adopt a high minimum flow setpoint, typically close to the design flow rate, effectively operating akin to constant primary plants but with variable speed pumps controlling the loop differential pressure. While the flow rate directed towards the loads varies, the bypass valve control loop ensures a constant primary flow for a given number of staged units. "Centralized secondary pumps" refers to configurations with a single group of secondary pumps that is typically integrated into the plant. Distributed secondary pumps with multiple secondary loops served by dedicated secondary pumps are currently not supported. |
| Type of primary pump arrangement |
Dedicated Headered |
It is assumed that the HW and the CHW loops have the same type of
primary pump arrangement, as specified by this parameter. Primary-secondary plants with both reversible and polyvalent heat pumps must have primary dedicated pumps: primary headered pumps are not supported for this configuration. |
| Separate dedicated primary pumps for the CHW and HW circuits |
False True |
This option is only available for reversible heat pumps with dedicated primary pumps. If this option is not selected, each AWHP uses a common dedicated primary pump for CHW and HW – this pump is then denoted as the primary HW pump. Otherwise, each AWHP relies on a separate dedicated HW pump and a separate dedicated CHW pump. |
| Type of primary HW pumps |
Variable speed Constant speed |
For constant primary-variable secondary distributions, the variable
speed primary pumps are commanded at fixed speeds, determined during the
Testing, Adjusting and Balancing phase to provide design AWHP flow in
heating and cooling modes. The same intent is achieved with constant
speed primary pumps through the use of balancing valves. This parameter is only available for constant primary-variable secondary plants. |
| Type of primary CHW pumps |
Variable speed Constant speed |
See the note above on primary HW pumps. |
Details
For plants without polyvalent heat pumps, a staging matrix
staEqu is required as a parameter. See the documentation of
Buildings.Templates.Plants.Controls.StagingRotation.EquipmentEnable
for the associated definition and requirements.
For plants with polyvalent heat pumps, the staging matrix is programmatically generated, under the assumption that all units (polyvalent heat pumps on the one hand, and optionally reversible heat pumps on the other hand) are equally sized. See the documentation of Buildings.Templates.Plants.Controls.PolyvalentHeatPumps.StagingParameters for the associated logic.
Depending on the plant configuration, the term "primary HW pumps" (and the
corresponding variables containing *pumHeaWatPri*) refers
either to primary HW pumps for plants with separate primary HW and CHW pumps
(either headered or dedicated) or to dedicated primary pumps for plants with
common primary pumps serving both the HW and CHW loops.
At its current stage of development, this controller contains no logic for handling faulted equipment. It is therefore assumed that any equipment is available at all times.
References
- ASHRAE, 2024. Guideline 36-2024, High-Performance Sequences of Operation for HVAC Systems. Atlanta, GA.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | have_hrc | typ == Buildings.Templates.Plants.Controls.Types.PlantHeatPump.ReversibleHeatRecovery | Set to true for plants with sidestream heat recovery chiller |
| Boolean | have_hp | typ <> Buildings.Templates.Plants.Controls.Types.PlantHeatPump.Polyvalent | Set to true for plants with 2-pipe heat pumps |
| Boolean | have_php | typ == Buildings.Templates.Plants.Controls.Types.PlantHeatPump.ReversiblePolyvalent or typ == Buildings.Templates.Plants.Controls.Types.PlantHeatPump.Polyvalent | Set to true for plants with polyvalent heat pumps |
| Boolean | have_pumHeaWatPri | have_heaWat | Set to true for plants with primary HW pumps |
| Boolean | have_pumChiWatPriDedHp | if have_hp and have_chiWat and not have_pumPriHdr then have_pumChiWatPriDedHp_select else false | Set to true for HP with separate dedicated primary CHW pumps |
| Boolean | have_pumChiWatPri | have_chiWat and (have_pumPriHdr or have_pumChiWatPriDedHp or have_php) | Set to true for HP with separate dedicated primary pumps for CHW and HW circuits |
| Boolean | have_pumHeaWatPriVar | have_pumHeaWatPri and (is_priOnl or have_pumHeaWatPriVar_select) | Set to true for variable speed primary HW pumps, false for constant speed pumps |
| Boolean | have_pumChiWatPriVar | have_pumChiWatPri and (is_priOnl or have_pumChiWatPriVar_select) | Set to true for variable speed primary CHW pumps, false for constant speed pumps |
| Boolean | have_pumHeaWatSec | have_heaWat and not is_priOnl | Set to true for plants with secondary HW pumps |
| Boolean | have_pumChiWatSec | have_chiWat and not is_priOnl | Set to true for plants with secondary CHW pumps |
| Boolean | have_senVPri | is_priOnl | Set to true for plants with primary CHW/HW flow sensor |
| Boolean | have_senTPriSup | true | Set to true for plants with primary CHW/HW supply temperature sensor |
| Boolean | have_senTPriRet | if is_priOnl then true else have_senTPriRet_select | Set to true for plants with primary CHW/HW return temperature sensor |
| Boolean | have_senTLooRet | is_priOnl and (if have_hrc then true else have_senTLooRet_select) | Set to true for plants with CHW/HW loop return temperature sensor |
| Boolean | have_senVLoo | is_priOnl and have_hrc | Set to true for plants with CHW/HW loop flow sensor |
| Boolean | have_senVSec | not is_priOnl | Set to true for plants with secondary CHW/HW flow sensor |
| Boolean | have_senTSec | not is_priOnl | Set to true for plants with secondary CHW/HW supply and return temperature sensors |
| Boolean | have_senVHeaWatPri | have_heaWat and have_senVPri | Set to true for plants with primary HW flow sensor |
| Boolean | have_senVHeaWatLoo | have_heaWat and have_senVLoo | Set to true for plants with HW loop flow sensor |
| Boolean | have_senVHeaWatSec | have_heaWat and have_senVSec | Set to true for plants with secondary HW flow sensor |
| Boolean | have_senVChiWatPri | have_chiWat and have_senVPri | Set to true for plants with primary CHW flow sensor |
| Boolean | have_senVChiWatLoo | have_chiWat and have_senVLoo | Set to true for plants with CHW loop flow sensor |
| Boolean | have_senVChiWatSec | have_chiWat and have_senVSec | Set to true for plants with secondary CHW flow sensor |
| Boolean | have_senTHeaWatPriSup | have_heaWat and have_senTPriSup | Set to true for plants with primary HW supply temperature sensor |
| Boolean | have_senTHeaWatPriRet | have_heaWat and have_senTPriRet | Set to true for plants with primary HW return temperature sensor |
| Boolean | have_senTChiWatPriSup | have_chiWat and have_senTPriSup | Set to true for plants with primary CHW supply temperature sensor |
| Boolean | have_senTChiWatPriRet | have_chiWat and have_senTPriRet | Set to true for plants with primary CHW return temperature sensor |
| Boolean | have_senTHeaWatSecSup | have_heaWat and have_senTSec | Set to true for plants with secondary HW supply temperature sensor |
| Boolean | have_senTChiWatSecSup | have_chiWat and have_senTSec | Set to true for plants with secondary CHW supply temperature sensor |
| Boolean | have_senTHeaWatLooRet | have_heaWat and have_senTLooRet | Set to true for plants with HW loop return temperature sensor (load side of minimum flow bypass) |
| Boolean | have_senTChiWatLooRet | have_chiWat and have_senTLooRet | Set to true for plants with CHW loop return temperature sensor (load side of minimum flow bypass) |
| Boolean | have_senTHeaWatSecRet | have_heaWat and have_senTSec | Set to true for plants with loop/secondary HW return temperature sensor |
| Boolean | have_senTChiWatSecRet | have_chiWat and have_senTSec | Set to true for plants with secondary CHW return temperature sensor |
| Integer | nPumHeaWatPriDedHp | if have_hp and not have_pumPriHdr then nHp else 0 | Number of dedicated primary HW pumps serving HP |
| Integer | nPumHeaWatPriDedPhp | if have_php and not have_pumPriHdr then nPhp else 0 | Number of dedicated primary HW pumps serving polyvalent HP |
| Integer | nPumHeaWatPri | if have_pumHeaWatPri and have_pumPriHdr then nPumHeaWatPri_select elseif have_pumHeaWatPri and not have_pumPriHdr then nHp + nPhp else 0 | Number of primary HW pumps |
| Integer | nPumChiWatPriDedHp | if have_pumChiWatPriDedHp then nHp else 0 | Number of dedicated primary CHW pumps serving HP |
| Integer | nPumChiWatPriDedPhp | if have_php and not have_pumPriHdr then nPhp else 0 | Number of dedicated primary CHW pumps serving polyvalent HP |
| Integer | nPumChiWatPri | if have_pumChiWatPri and have_pumPriHdr then nPumChiWatPri_select elseif have_pumChiWatPri and not have_pumPriHdr then nPumChiWatPriDedHp + nPumChiWatPriDedPhp else 0 | Number of primary CHW pumps |
| Integer | nPumHeaWatSec | if have_pumHeaWatSec then nPumHeaWatSec_select else 0 | Number of secondary HW pumps |
| Integer | nPumChiWatSec | if have_pumChiWatSec then nPumChiWatSec_select else 0 | Number of secondary CHW pumps |
| Integer | nStaHp | size(staHp, 1) | Number of stages in heat pump staging matrix |
| Integer | nSta | if have_php then nHp + nPhp else nStaHp | Number of stages |
| Integer | nAltHp | if have_hp and not have_php then (if nHp == 1 then 1 else max({sum({(if staHp[i, j] > 0 and staHp[i, j] < 1 then 1 else 0) for j in 1:nHp}) for i in 1:nStaHp})) else nHp | Number of lead/lag alternate heat pumps |
| Plant configuration | |||
| Buildings.Templates.Plants.Controls.Types.PlantHeatPump | typ | Buildings.Templates.Plants.Controls.Types.PlantHeatPump.Reversible | Type of plant |
| Boolean | have_heaWat | true | Set to true for plants that provide HW |
| Boolean | have_chiWat | typ <> Buildings.Templates.Plants.Controls.Types.PlantHeatPump.HeatingOnly | Set to true for plants that provide CHW |
| Boolean | is_priOnl | false | Set to true for primary-only plant |
| Boolean | have_valHpInlIso | Set to true for plants with isolation valves at heat pump inlet | |
| Boolean | have_valHpOutIso | Set to true for plants with isolation valves at heat pump outlet | |
| Boolean | have_valPhpInlIso | Set to true for isolation valves at polyvalent HP inlet | |
| Boolean | have_valPhpOutIso | Set to true for isolation valves at polyvalent HP outlet | |
| Boolean | have_pumChiWatPriDedHp_select | false | Set to true for HP with separate dedicated primary pumps for CHW and HW circuits |
| Boolean | have_pumPriHdr | Set to true for headered primary pumps, false for dedicated pumps | |
| Boolean | have_pumHeaWatPriVar_select | true | Set to true for variable speed primary HW pumps, false for constant speed pumps |
| Boolean | have_pumChiWatPriVar_select | true | Set to true for variable speed primary CHW pumps, false for constant speed pumps |
| Boolean | have_pumPriCtlDp | is_priOnl | Set to true for primary variable speed pumps using ∆p pump speed control |
| Boolean | have_pumSecHdr | true | Set to true for headered secondary pumps, false for dedicated pumps |
| Boolean | have_pumSecCtlDp | have_pumHeaWatSec or have_pumChiWatSec | Set to true for secondary variable speed pumps using ∆p pump speed control |
| Integer | nHp_select | Number of 2-pipe heat pumps | |
| Integer | nHp | if have_hp then nHp_select else 0 | Number of 2-pipe heat pumps |
| Integer | nPhp_select | Number of polyvalent heat pumps | |
| Integer | nPhp | if have_php then nPhp_select else 0 | Number of polyvalent heat pumps |
| Integer | nPumHeaWatPri_select | nHp + nPhp | Number of primary HW pumps |
| Integer | nPumChiWatPri_select | nHp + nPhp | Number of primary CHW pumps |
| Integer | nPumHeaWatSec_select | nHp + nPhp | Number of secondary HW pumps |
| Integer | nPumChiWatSec_select | nHp + nPhp | Number of secondary CHW pumps |
| Sensors | |||
| Boolean | have_senTPriRet_select | false | Set to true for plants with primary CHW/HW return temperature sensor |
| Boolean | have_senTLooRet_select | false | Set to true for plants with CHW/HW loop return temperature sensor (load side of minimum flow bypass) |
| Boolean | have_senDpHeaWatRemWir | false | Set to true for remote HW differential pressure sensor(s) hardwired to plant or pump controller |
| Integer | nSenDpHeaWatRem | Number of remote HW differential pressure sensors used for HW pump speed control | |
| Boolean | have_senDpChiWatRemWir | false | Set to true for remote CHW differential pressure sensor(s) hardwired to plant or pump controller |
| Integer | nSenDpChiWatRem | Number of remote CHW differential pressure sensors used for CHW pump speed control | |
| Information provided by designer | |||
| Real | THeaWatSup_nominal | Design HW supply temperature (maximum setpoint) | |
| Real | THeaWatSupSet_min | Minimum value to which the HW supply temperature can be reset | |
| Real | TOutHeaWatLck | 294.15 | Outdoor air lockout temperature above which the HW loop is prevented from operating |
| Real[nHp] | capHeaHp_nominal | Design heating capacity - Each heat pump | |
| Real[nHp] | VHeaWatHp_flow_nominal | Design HW volume flow rate - Each heat pump | |
| Real[nHp] | VHeaWatHp_flow_min | Minimum HW volume flow rate - Each heat pump | |
| Real[nPhp] | capHeaPhp_nominal | Design heating capacity - Each polyvalent heat pump | |
| Real[nPhp] | capHeaShcPhp_nominal | Design heating capacity in SHC mode - Each polyvalent heat pump | |
| Real[nPhp] | VHeaWatPhp_flow_nominal | Design HW volume flow rate - Each polyvalent heat pump | |
| Real[nPhp] | VHeaWatPhp_flow_min | Minimum HW volume flow rate - Each polyvalent heat pump | |
| Real | VHeaWatPri_flow_nominal | sum(cat(1, VHeaWatHp_flow_nominal, VHeaWatPhp_flow_nominal)) | Primary HW volume flow rate |
| Real | VHeaWatSec_flow_nominal | Design secondary HW volume flow rate | |
| Real | dpHeaWatRemSet_min | 5*6894 | Minimum value to which the HW differential pressure can be reset - Remote sensor |
| Real | TChiWatSup_nominal | Design CHW supply temperature (minimum setpoint) | |
| Real | TChiWatSupSet_max | Maximum value to which the CHW supply temperature can be reset | |
| Real | TOutChiWatLck | 289.15 | Outdoor air lockout temperature below which the CHW loop is prevented from operating |
| Real[nHp] | capCooHp_nominal | Design cooling capacity - Each heat pump | |
| Real[nHp] | VChiWatHp_flow_nominal | Design CHW volume flow rate - Each heat pump | |
| Real[nHp] | VChiWatHp_flow_min | Minimum CHW volume flow rate - Each heat pump | |
| Real[nPhp] | capCooPhp_nominal | Design cooling capacity - Each polyvalent heat pump | |
| Real[nPhp] | capCooShcPhp_nominal | Design cooling capacity in SHC mode - Each polyvalent heat pump | |
| Real[nPhp] | VChiWatPhp_flow_nominal | Design CHW volume flow rate - Each polyvalent heat pump | |
| Real[nPhp] | VChiWatPhp_flow_min | Minimum CHW volume flow rate - Each polyvalent heat pump | |
| Real | VChiWatPri_flow_nominal | sum(cat(1, VChiWatHp_flow_nominal, VChiWatPhp_flow_nominal)) | Primary CHW volume flow rate |
| Real | VChiWatSec_flow_nominal | Design secondary CHW volume flow rate | |
| Real | dpChiWatRemSet_min | 5*6894 | Minimum value to which the CHW differential pressure can be reset - Remote sensor |
| Real | cp_default | 4184 | Default specific heat capacity used to compute required capacity |
| Real | rho_default | 996 | Default density used to compute required capacity |
| Real | TChiWatSupHrc_min | Sidestream HRC – Minimum allowable CHW supply temperature | |
| Real | THeaWatSupHrc_max | Sidestream HRC – Maximum allowable HW supply temperature | |
| Real | COPHeaHrc_nominal | Sidestream HRC – Heating COP at design heating conditions | |
| Real | capCooHrc_min | Sidestream HRC – Minimum cooling capacity below which cycling occurs | |
| Real | capHeaHrc_min | Sidestream HRC – Minimum heating capacity below which cycling occurs | |
| Information provided by testing, adjusting, and balancing contractor | |||
| Real[nSenDpHeaWatRem] | dpHeaWatRemSet_max | Maximum HW differential pressure setpoint - Remote sensor | |
| Real | yPumHeaWatPriHdrSet | Primary HW pump speed providing design flow – Headered pumps | |
| Real | yPumHeaWatPriDedHpSet | Primary pump speed providing design flow in heating mode – HP dedicated pumps | |
| Real | yPumHeaWatPriDedPhpSet | Primary HW pump speed providing design flow – Polyvalent HP dedicated pumps | |
| Real[nSenDpChiWatRem] | dpChiWatRemSet_max | Maximum CHW differential pressure setpoint - Remote sensor | |
| Real | yPumChiWatPriHdrSet | Primary CHW pump speed providing design flow – Headered pumps | |
| Real | yPumChiWatPriDedHpSet | Primary pump speed providing design flow in cooling mode – HP dedicated pumps | |
| Real | yPumChiWatPriDedPhpSet | Primary CHW pump speed providing design flow – Polyvalent HP dedicated pumps | |
| Plant enable | |||
| Boolean | have_inpSch | false | Set to true to provide schedule via software input point |
| Real[:,2] | schHea | [0, 1; 24*3600, 1] | Heating mode enable schedule |
| Real[:,2] | schCoo | [0, 1; 24*3600, 1] | Cooling mode enable schedule |
| Advanced › Plant enable | |||
| Integer | nReqIgnHeaWat | 0 | Number of ignored HW plant requests |
| Integer | nReqIgnChiWat | 0 | Number of ignored CHW plant requests |
| Real | dTOutLck | 0.5 | Hysteresis for outdoor air lockout temperature |
| Real | dtRunEna | 15*60 | Minimum runtime of enable and disable states |
| Real | dtReqDis | 3*60 | Runtime with low number of request before disabling |
| Equipment staging and rotation | |||
| Real[:,:] | staHp | {i/nHp for _ in 1:nHp, i in 1:nHp} | Heat pump staging matrix – Equipment required for each stage |
| Integer[:] | idxAltHp_select | 1:nHp | Indices of lead/lag alternate heat pumps |
| Integer[:] | idxAltHp | if have_hp and not have_php then idxAltHp_select else 1:nHp | Indices of lead/lag alternate heat pumps |
| Real | plrSta | 0.9 | Staging part load ratio |
| Advanced › Equipment staging and rotation | |||
| Real | dTHea | 2.5 | Delta-T triggering stage up command for heating applications (>0) |
| Real | dTCoo | 1 | Delta-T triggering stage up command for cooling applications (>0) |
| Real | dtVal | 90 | Nominal valve timing |
| Real | dtRunSta | 900 | Minimum runtime of each stage |
| Real | dtOff | 900 | Off time required before equipment is deemed available again |
| Real | dtOffHp | 180 | Heat pump internal shutdown cycle timing (before closing isolation valves or disabling primary pumps) |
| Real | dtPri | 900 | Runtime with high primary-setpoint Delta-T before staging up |
| Real | dtSec | 600 | Runtime with high secondary-primary and secondary-setpoint Delta-T before staging up |
| Advanced › Pump staging | |||
| Real | dtRunPumSta | 600 | Runtime before triggering stage change command based on efficiency condition |
| Real | dtRunFaiSafPumSta | 300 | Runtime before triggering stage change command based on failsafe condition |
| Real | dtRunFaiSafLowYPumSta | dtRunPumSta | Runtime before triggering stage change command based on low pump speed failsafe condition |
| Real | dVOffUpPumSta | 0.03 | Stage up flow point offset |
| Real | dVOffDowPumSta | dVOffUpPumSta | Stage down flow point offset |
| Real | dpOffPumSta | 1E4 | Stage change ∆p point offset (>0) |
| Real | yUpPumSta | 0.99 | Stage up pump speed point |
| Real | yDowPumSta | 0.4 | Stage down pump speed point |
| Advanced › Plant reset | |||
| Real | dtHol | 900 | Minimum hold time during stage change |
| Real | resDpHeaWat_max | 0.5 | Upper limit of plant reset interval for HW differential pressure reset |
| Real | resTHeaWatSup_min | resDpHeaWat_max | Lower limit of plant reset interval for HW supply temperature reset |
| Real | resDpChiWat_max | 0.5 | Upper limit of plant reset interval for CHW differential pressure reset |
| Real | resTChiWatSup_min | resDpChiWat_max | Lower limit of plant reset interval for CHW supply temperature reset |
| Real | res_init | 1 | Initial reset value |
| Real | res_min | 0 | Minimum reset value |
| Real | res_max | 1 | Maximum reset value |
| Real | dtDel | 900 | Delay time before the reset begins |
| Real | dtResHeaWat | 300 | Time step for HW plant reset |
| Integer | nReqResIgnHeaWat | 2 | Number of ignored requests for HW plant reset |
| Real | triHeaWat | -0.02 | Trim amount for HW plant reset |
| Real | rspHeaWat | 0.03 | Respond amount for HW plant reset |
| Real | rspHeaWat_max | 0.07 | Maximum response per time interval for HW plant reset |
| Real | dtResChiWat | 300 | Time step for CHW plant reset |
| Integer | nReqResIgnChiWat | 2 | Number of ignored requests for CHW plant reset |
| Real | triChiWat | -0.02 | Trim amount for CHW plant reset |
| Real | rspChiWat | 0.03 | Respond amount for CHW plant reset |
| Real | rspChiWat_max | 0.07 | Maximum response per time interval for CHW plant reset |
| Advanced › Pump control | |||
| Real | yPumHeaWatPri_min | 0.1 | Minimum primary HW pump speed |
| Real | yPumChiWatPri_min | 0.1 | Minimum primary CHW pump speed |
| Real | yPumHeaWatSec_min | 0.1 | Minimum secondary HW pump speed |
| Real | yPumChiWatSec_min | 0.1 | Minimum secondary CHW pump speed |
| Advanced › Loop differential pressure | |||
| Real | kCtlDpHeaWat | 1 | Gain of controller for HW loop ∆p control |
| Real | TiCtlDpHeaWat | 60 | Time constant of integrator block for HW loop ∆p control |
| Real | kCtlDpChiWat | 1 | Gain of controller for CHW loop ∆p control |
| Real | TiCtlDpChiWat | 60 | Time constant of integrator block for CHW loop ∆p control |
| Advanced › Minimum flow control | |||
| Real | kValMinByp | 1 | Gain of controller |
| Modelica.Units.SI.Time | TiValMinByp | 60 | Time constant of integrator block |
| Advanced › Sidestream HRC | |||
| Boolean | have_reqFloHrc | false | Set to true if HRC provides flow request point via network interface |
| Real | dtLoaHrc | 600 | Runtime with sufficient load before enabling |
| Real | dtTem1Hrc | 180 | Runtime with first temperature threshold exceeded before disabling |
| Real | dtTem2Hrc | 60 | Runtime with second temperature threshold exceeded before disabling |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Controls.OBC.CDL.Interfaces.IntegerInput | nReqPlaHeaWat | Number of HW plant requests | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TOut | Outdoor air temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1SchHea | Heating mode enable via schedule | |
| Buildings.Controls.OBC.CDL.Interfaces.IntegerInput | nReqPlaChiWat | Number of CHW plant requests | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1SchCoo | Cooling mode enable via schedule | |
| Buildings.Controls.OBC.CDL.Interfaces.IntegerInput | nReqResHeaWat | Sum of HW reset requests of all heating loads served | |
| Buildings.Controls.OBC.CDL.Interfaces.IntegerInput | nReqResChiWat | Sum of CHW reset requests of all heating loads served | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPhp] | u1Php_actual | Polyvalent heat pump status | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumHeaWatPriDedPhp] | u1PumHeaWatPriDedPhp_actual | Primary HW pump status | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumChiWatPri] | u1PumChiWatPriHdr_actual | Primary CHW pump status – Headered pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumHeaWatSec] | u1PumHeaWatSec_actual | Secondary HW pump status | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumChiWatSec] | u1PumChiWatSec_actual | Secondary CHW pump status | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | THeaWatPriRet | Primary HW return temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | VHeaWatPri_flow | Primary HW volume flow rate | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | dpHeaWatLoc | Local HW differential pressure | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nSenDpHeaWatRem] | dpHeaWatLocSet | Local HW differential pressure setpoint output from each of the remote loops | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nSenDpHeaWatRem] | dpHeaWatRem | Remote HW differential pressure | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | dpChiWatLoc | Local CHW differential pressure | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nSenDpChiWatRem] | dpChiWatLocSet | Local CHW differential pressure setpoint output from each of the remote loops | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nSenDpChiWatRem] | dpChiWatRem | Remote CHW differential pressure | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nHp] | y1ValHeaWatHpInlIso | Heat pump inlet HW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nHp] | y1ValHeaWatHpOutIso | Heat pump outlet HW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nHp] | y1ValChiWatHpInlIso | Heat pump inlet CHW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nHp] | y1ValChiWatHpOutIso | Heat pump outlet CHW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumHeaWatPri] | y1PumHeaWatPriHdr | Primary HW pump start command – Headered pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumChiWatPri] | y1PumChiWatPriHdr | Primary CHW pump start command – Headered pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumHeaWatSec] | y1PumHeaWatSec | Secondary HW pump start command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumChiWatSec] | y1PumChiWatSec | Secondary CHW pump start command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nHp] | y1Hp | Heat pump enable command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nHp] | y1HeaHp | Heat pump heating/cooling mode command: true=heating, false=cooling | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPhp] | y1HeaPhp | Polyvalent HP heating on/off command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPhp] | y1CooPhp | Polyvalent HP cooling on/off command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPhp] | y1ValHeaWatPhpInlIso | Polyvalent HP inlet HW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPhp] | y1ValChiWatPhpInlIso | Polyvalent HP inlet CHW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPhp] | y1ValHeaWatPhpOutIso | Polyvalent HP outlet HW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPhp] | y1ValChiWatPhpOutIso | Polyvalent HP outlet CHW isolation valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nSenDpHeaWatRem] | dpHeaWatRemSet | HW differential pressure setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nSenDpChiWatRem] | dpChiWatRemSet | CHW differential pressure setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | yPumHeaWatPriHdr | Primary HW pump speed command – Headered pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | yPumChiWatPriHdr | Primary CHW pump speed command – Headered pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | yPumHeaWatSec | Primary HW pump speed command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | yPumChiWatSec | Primary CHW pump speed command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | TChiWatSupSet | Plant CHW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | THeaWatSupSet | Plant HW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TChiWatPriRet | Primary CHW return temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | VChiWatPri_flow | Primary CHW volume flow rate | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nHp] | u1Hp_actual | Heat pump status | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nPumHeaWatPriDedHp] | yPumHeaWatPriDedHp | Primary HW pump speed command – HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nPumChiWatPriDedHp] | yPumChiWatPriDedHp | Primary CHW pump speed command – HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | THeaWatLooOrSecRet | HW loop (primary-only) or secondary (primary-secondary) return temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | VHeaWatLooOrSec_flow | HW loop (primary-only) or secondary (primary-secondary) volume flow rate | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TChiWatLooOrSecRet | CHW loop (primary-only) or secondary (primary-secondary) return temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | VChiWatLooOrSec_flow | CHW loop (primary-only) or secondary (primary-secondary) volume flow rate | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nHp] | THeaWatSupHpSet | HP HW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | THeaWatPriSup | Primary HW supply temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TChiWatPriSup | Primary CHW return temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | THeaWatSecSup | Secondary HW supply temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TChiWatSecSup | Secondary CHW supply temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1Hrc | Sidestream HRC enable command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1CooHrc | Sidestream HRC mode command: true for cooling, false for heating | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1PumChiWatHrc | Sidestream HRC CHW pump enable command | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput | y1PumHeaWatHrc | Sidestream HRC HW pump enable command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | THeaWatSupHrcSet | Sidestream HRC HW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TChiWatRetUpsHrc | CHW return temperature upstream of HRC | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | THeaWatRetUpsHrc | HW return temperature upstream of HRC | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1Hrc_actual | HRC status | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1ReqFloChiWat | CHW flow request from HRC | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput | u1ReqFloConWat | CW flow request from HRC | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | yValHeaWatMinByp | HW minimum flow bypass valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | yValChiWatMinByp | CHW minimum flow bypass valve command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nHp] | TChiWatSupHpSet | HP CHW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | TChiWatSupHrcSet | Sidestream HRC CHW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumChiWatPriDedHp] | u1PumChiWatPriDedHp_actual | Primary CHW pump status – HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumChiWatPriDedPhp] | u1PumChiWatPriDedPhp_actual | Primary CHW pump status – Polyvalent HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumChiWatPriDedHp] | y1PumChiWatPriDedHp | Primary CHW pump start command – HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumChiWatPriDedPhp] | y1PumChiWatPriDedPhp | Primary CHW pump start command – Polyvalent HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nPumChiWatPriDedPhp] | yPumChiWatPriDedPhp | Primary CHW pump speed command – Polyvalent HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumHeaWatPriDedHp] | u1PumHeaWatPriDedHp_actual | Primary HW pump status | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumHeaWatPriDedHp] | y1PumHeaWatPriDedHp | Primary HW pump start command – HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPumHeaWatPriDedPhp] | y1PumHeaWatPriDedPhp | Primary HW pump start command – Polyvalent HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nPumHeaWatPriDedPhp] | yPumHeaWatPriDedPhp | Primary HW pump speed command – Polyvalent HP dedicated pumps | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nPhp] | THeaWatSupPhpSet | Polyvalent HP HW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nPhp] | TChiWatSupPhpSet | Polyvalent HP CHW supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPumHeaWatPri] | u1PumHeaWatPriHdr_actual | Primary HW pump status |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant[nHp] | u1AvaHp | Heat pump available signal – Block does not handle faulted equipment yet | |
| Enabling.Enable | enaHea | Heating mode enable | |
| Utilities.StageIndex | idxStaHea | Compute heating stage index | |
| StagingRotation.StageAvailability | avaStaHea | Evaluate heating stage availability | |
| Subsequences.SelectModeState | selMod | Compute enable command for equipment in heating mode | |
| Subsequences.EventSequencingMultiple | seqEve | Event sequencing | |
| StagingRotation.StageAvailability | avaStaCoo | Evaluate cooling stage availability | |
| StagingRotation.StageChangeCommand | chaStaHea | Generate heating stage transition command | |
| Enabling.Enable | enaCoo | Cooling mode enable | |
| StagingRotation.StageChangeCommand | chaStaCoo | Generate cooling stage transition command | |
| Utilities.StageIndex | idxStaCoo | Compute cooling stage index | |
| Subsequences.EquipmentAvailability[nHp] | avaHeaCooHp | Evaluate HP availability in heating or cooling mode | |
| StagingRotation.SortRuntime | sorRunTimHp | Sort lead/lag alternate HP by increasing runtime | |
| Pumps.Generic.StagingHeadered | staPumHeaWatPri | Primary HW pump staging | |
| Pumps.Generic.StagingHeadered | staPumChiWatPri | Primary CHW pump staging | |
| Pumps.Generic.StagingHeadered | staPumChiWatSec | Secondary CHW pump staging | |
| Pumps.Generic.StagingHeadered | staPumHeaWatSec | Secondary HW pump staging | |
| Utilities.PlaceholderReal | THeaWatRet | For staging logic select primary sensor if both temperature and flow sensors available | |
| Utilities.PlaceholderReal | VHeaWatSta_flow | For staging logic select primary sensor if both temperature and flow sensors available | |
| Utilities.PlaceholderReal | TChiWatRet | For staging logic select primary sensor if both temperature and flow sensors available | |
| Utilities.PlaceholderReal | VChiWatSta_flow | For staging logic select primary sensor if both temperature and flow sensors available | |
| StagingRotation.StageCompletion | comStaCoo | Check successful completion of cooling stage change | |
| StagingRotation.StageCompletion | comStaHea | Check successful completion of heating stage change | |
| Setpoints.PlantReset | resHeaWat | HW plant reset | |
| Setpoints.PlantReset | resChiWat | CHW plant reset | |
| Pumps.Primary.VariableSpeedWithHeatPumps | ctlPumPri | Primary pump speed control | |
| Pumps.Generic.ControlDifferentialPressure | ctlPumHeaWatSec | Secondary HW pump speed control | |
| Pumps.Generic.ControlDifferentialPressure | ctlPumChiWatSec | Secondary CHW pump speed control | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | repTChiWatSupHpSet | Replicate CHWST setpoint | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | repTHeaWatSupHpSet | Replicate HWST setpoint | |
| HeatRecoveryChillers.Controller | hrc | Sidestream heat recovery chiller control | |
| Buildings.Controls.OBC.CDL.Routing.RealExtractSignal | pasDpHeaWatRemSet | Direct pass through for HW ∆p setpoint | |
| Buildings.Controls.OBC.CDL.Routing.RealExtractSignal | pasDpChiWatRemSet | Direct pass through for CHW ∆p setpoint | |
| MinimumFlow.ControllerHeatPumps | ctlFloMin | CHW/HW minimum flow bypass valve controller | |
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant[nPhp] | u1AvaPhp | Polyvalent heat pump available signal – Block does not handle faulted equipment yet | |
| PolyvalentHeatPumps.StagingParameters | staPhp | Staging parameters for plants with polyvalent HP | |
| Subsequences.EquipmentAvailability[nPhp] | avaHeaCooPhp | Evaluate polyvalent HP availability in heating or cooling mode | |
| Subsequences.RoutingPrimaryPumpStatus | rouPumChiWatPri | Reroute primary CHW pump status signal | |
| Subsequences.RoutingPrimaryPumpStatus | rouPumHeaWatPri | Reroute primary HW pump status signal | |
| Buildings.Controls.OBC.CDL.Utilities.Assert | assPlaCfg | Assert unsupported plant configuration | |
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant | conIsPriOnl | Constant flagging primary-only plant configuration | |
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant | conNotRevPhp | Constant flagging plant type other than reversible and polyvalent HP | |
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant | conNotHavePumPriHdr | Constant flagging plant without headered primary pumps | |
| Buildings.Controls.OBC.CDL.Logical.MultiOr | mulOrConfSupported | Evaluate whether plant configuration is supported | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | repTHeaWatSupPhpSet | Replicate HWST setpoint | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | repTChiWatSupPhpSet | Replicate CHWST setpoint | |
| PolyvalentHeatPumps.AssertMinimumRuntime | assMinRunTimPhp | Assert polyvalent HP minimum runtime | |
| PolyvalentHeatPumps.AssertMinimumRuntime | assMinOffTimPhp | Assert polyvalent HP minimum off-time | |
| StagingRotation.SortRuntime | sorRunTimPhp | Sort polyvalent HP by increasing runtime | |
| Buildings.Controls.OBC.CDL.Logical.And[nPhp] | y1ShcPhp | Polyvalent HP commanded in SHC mode | |
| Subsequences.AssertMinimumRuntime | assMinRunTimHp | Assert HP minimum runtime | |
| Subsequences.AssertMinimumRuntime | assMinOffTimHp | Assert HP minimum off-time |
Revisions
-
July 10, 2026, by Antoine Gautier:
Enhanced controller to support plants with polyvalent (4-pipe) units.
This is for #4512. -
June 10, 2026, by Antoine Gautier:
Refactored with a single instance ofSortRuntimefor both modes.
This is for #4624. -
March 23, 2026, by Antoine Gautier:
Refactored HP and HRC points with two separate outputs for HW and CHW supply temperature setpoints.
This is for #4507. -
January 23, 2025, by Antoine Gautier:
Refactored to use "required to run" conditions in the equipment availability logic.
This is for #4432. -
May 31, 2024, by Antoine Gautier:
Added sidestream heat recovery chiller, primary-only pumping and failsafe staging conditions.
This is for #3808. -
March 29, 2024, by Antoine Gautier:
First implementation.