blockControllerHeatPumps

CHW and/or HW minimum flow bypass valve controller for heat pump plants

Information

HW minimum flow

The HW minimum flow bypass valve is modulated based on a reverse acting control loop to maintain the primary HW flow rate at setpoint. The setpoint is calculated as described in Buildings.Templates.Plants.Controls.MinimumFlow.Setpoint using the number of units commanded on in heating mode at each stage.

When using isolation valve command signals (have_valInlIso=true or have_valOutIso=true): When any HW isolation valve is commanded open, the HW bypass valve control loop is enabled. The valve is opened 100 % otherwise. When enabled, the HW bypass valve loop shall be biased to start with the valve 100 % open.

Otherwise (have_valInlIso=false and have_valOutIso=false):

  • For heating and cooling plants with common dedicated CHW and HW pumps: When any primary pump is proven on and the associated heat pump is commanded in heating mode, the HW bypass valve control loop is enabled. The valve is opened 100 % otherwise. When enabled, the HW bypass valve loop shall be biased to start with the valve 100 % open.
  • For any other plants: When any primary HW pump is proven on, the HW bypass valve control loop is enabled. The valve is opened 100 % otherwise. When enabled, the HW bypass valve loop shall be biased to start with the valve 100 % open.

CHW minimum flow

The CHW minimum flow bypass valve is modulated based on a reverse acting control loop to maintain the primary CHW flow rate at setpoint. The setpoint is calculated as described in Buildings.Templates.Plants.Controls.MinimumFlow.Setpoint using the number of units commanded on in cooling mode at each stage.

When using isolation valve command signals (have_valInlIso=true or have_valOutIso=true): When any CHW isolation valve is commanded open, the CHW bypass valve control loop is enabled. The valve is opened 100 % otherwise. When enabled, the CHW bypass valve loop shall be biased to start with the valve 100 % open.

Otherwise (have_valInlIso=false and have_valOutIso=false):

  • For heating and cooling plants with common dedicated CHW and HW pumps: When any primary pump is proven on and the associated heat pump is commanded in cooling mode, the CHW bypass valve control loop is enabled. The valve is opened 100 % otherwise. When enabled, the CHW bypass valve loop shall be biased to start with the valve 100 % open.
  • For any other plants: When any primary CHW pump is proven on, the CHW bypass valve control loop is enabled. The valve is opened 100 % otherwise. When enabled, the CHW bypass valve loop shall be biased to start with the valve 100 % open.

Parameters

TypeNameDefaultDescription
Booleanhave_heaWatSet to true for plants that provide HW
Booleanhave_chiWatSet to true for plants that provide CHW
Booleanhave_pumPriHdrSet to true for headered primary pumps, false for dedicated pumps
Booleanhave_pumChiWatPriDedHpSet to true for HP with separate dedicated primary pumps for CHW and HW circuits
Boolean[nEqu]use_valEqu{(have_valInlIso or have_valOutIso) and (not have_pumPriHdr and i <= nHp and not have_pumChiWatPriDedHp or have_pumPriHdr) for i in 1:nEqu}Set to true to use isolation valve command to enable control loop – Each unit
Booleanuse_val(have_valInlIso or have_valOutIso) and (not have_pumPriHdr and nHp > 0 and not have_pumChiWatPriDedHp or have_pumPriHdr)Set to true to use isolation valve command to enable control loop – Any unit
Boolean[nEqu]use_pumPriDedEqu{not have_pumPriHdr for i in 1:nEqu}Set to true to use dedicated primary pump status to enable control loop – Each unit
Booleanuse_pumPriDednot have_pumPriHdrSet to true to use dedicated primary pump status to enable control loop – Any unit
IntegernHpNumber of 2-pipe heat pumps
IntegernPhpNumber of polyvalent heat pumps
IntegernEqunHp + nPhpHeating or cooling equipment count
Booleanhave_valInlIsoSet to true if inlet isolation valves are present
Booleanhave_valOutIsoSet to true if outlet isolation valves are present
Real[nEqu]VHeaWat_flow_nominalDesign HW flow rate – Each unit
Real[nEqu]VHeaWat_flow_minMinimum HW flow rate – Each unit
Real[nEqu]VChiWat_flow_nominalDesign CHW flow rate – Each unit
Real[nEqu]VChiWat_flow_minMinimum CHW flow rate – Each unit
Realk1Gain of controller
Modelica.Units.SI.TimeTi0.5Time constant of integrator block

Connectors

TypeNameDefaultDescription
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nHp]u1PumHeaWatPriDedHp_actualPrimary HW pump status – HP dedicated pumps
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPhp]u1PumHeaWatPriDedPhp_actualPrimary HW pump status – Polyvalent HP dedicated pumps
Buildings.Controls.OBC.CDL.Interfaces.RealInputVChiWatPri_flowPrimary CHW volume flow rate
Buildings.Controls.OBC.CDL.Interfaces.RealInputVHeaWatPri_flowPrimary HW volume flow rate
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nEqu]u1ValHeaWatInlIsoInlet HW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nEqu]u1ValHeaWatOutIsoOutlet HW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.RealOutputyValHeaWatMinBypHW minimum flow bypass valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nHp]u1HpHP enable command
Buildings.Controls.OBC.CDL.Interfaces.RealOutputVHeaWatPriSet_flowPrimary HW flow setpoint
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nHp]u1HeaHpHP heating mode command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nEqu]u1ValChiWatInlIsoInlet CHW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nEqu]u1ValChiWatOutIsoOutlet CHW isolation valve command
Buildings.Controls.OBC.CDL.Interfaces.RealOutputyValChiWatMinBypCHW minimum flow bypass valve command
Buildings.Controls.OBC.CDL.Interfaces.RealOutputVChiWatPriSet_flowPrimary CHW flow setpoint
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPhp]u1HeaPhpPolyvalent HP heating mode command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPhp]u1CooPhpPolyvalent HP cooling mode command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nHp]u1PumChiWatPriDedHp_actualPrimary CHW pump status – HP dedicated pumps
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPhp]u1PumChiWatPriDedPhp_actualPrimary CHW pump status – Polyvalent HP dedicated pumps

Components

TypeNameDefaultDescription
ControllerctlFloMinHeaWatHW minimum flow control
ControllerctlFloMinChiWatCHW minimum flow control
Utilities.PlaceholderLogical[nHp]phHeaCooHpPlaceholder signal for single mode applications
Buildings.Controls.OBC.CDL.Logical.Not[nHp]u1CooHpTrue if HP in cooling mode
Buildings.Controls.OBC.CDL.Logical.And[nHp]onAndHeaHpTrue if HP commanded on in heating mode
Buildings.Controls.OBC.CDL.Logical.And[nHp]onAndCooHpTrue if HP commanded on in cooling mode
Buildings.Controls.OBC.CDL.Logical.And[nHp]pumDedOnAndCooHpDedicated pump on and cooling mode – HP with common CHW and HW pumps
Buildings.Controls.OBC.CDL.Logical.And[nHp]pumDedOnAndHeaHpDedicated pump on and HP in heating mode – HP with common CHW and HW pump
Utilities.PlaceholderLogical[nEqu]phValHeaWatInlIsoPlaceholder signal
Utilities.PlaceholderLogical[nEqu]phValHeaWatOutIsoPlaceholder signal
Buildings.Controls.OBC.CDL.Logical.Or[nEqu]valHeaWatInlOrOutIsoInlet or outlet HW isolation valve commanded open
Utilities.PlaceholderLogical[nEqu]phValChiWatInlIsoPlaceholder signal
Utilities.PlaceholderLogical[nEqu]phValChiWatOutIsoPlaceholder signal
Buildings.Controls.OBC.CDL.Logical.Or[nEqu]valChiWatInlOrOutIsoInlet or outlet CHW isolation valve commanded open
Utilities.ConcatenateSelectLogicalpumDedOnCooDedicated pump on and cooling mode
Utilities.ConcatenateSelectLogicalpumDedOnHeaHpPhpDedicated pump on and heating mode
Utilities.PlaceholderLogical[nHp]pumDedOnAndHeaHp1Dedicated pump on and heating mode – HP
Utilities.PlaceholderLogical[nHp]pumDedOnAndHeaHp2Dedicated pump on and heating mode – HP
Utilities.ConcatenateSelectLogicalonAndHeaHeating mode enable
Utilities.ConcatenateSelectLogicalonAndCooCooling mode enable

Revisions

  • July 10, 2026, by Antoine Gautier:
    Renamed from ControllerDualMode and refactored to support plants with polyvalent heat pumps.
    This is for #4512.
  • May 31, 2024, by Antoine Gautier:
    First implementation.