Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences

Subsequences for chiller head pressure control

Information

This package contains chiller head pressure control subsequences.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.ControlLoop ControlLoop Sequence to generate head pressure control signal if it is not available from the chiller controller
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithWSE MappingWithWSE Equipment setpoints when chiller head pressure control is enabled, for plants with waterside economizer and headered condenser water pumps
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithoutWSE MappingWithoutWSE Equipment setpoints when chiller head pressure control is enabled, for plants without waterside economizer
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.ControlLoop Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.ControlLoop

Sequence to generate head pressure control signal if it is not available from the chiller controller

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.ControlLoop

Information

Block that generates chiller head pressure control loop signal when the signal is not available from chiller controller, according to ASHRAE Guideline 36-2021, section 5.20.10 head pressure control, part 5.20.10.1, and 5.20.10.2.

1. When the head pressure control loop is enabled, a reverse acting PID loop shall maintain the temperature differential between the chiller condenser water return (condenser leaving) temperature TConWatRet and chilled water supply temperature TChiWatSup at the minimum allowable lift minChiLif (chiller lift equals to TConWatRet minus TChiWatSup)

2. Each operating chiller shall have its own head pressure control loop.

Parameters

TypeNameDefaultDescription
RealminChiLif10Minimum allowable lift at minimum load for chiller [K]
PID controller
SimpleControllercontrollerTypeBuildings.Controls.OBC.CDL.T...Type of controller
Realk1Gain of controller
RealTi0.5Time constant of integrator block [s]
RealTd0.5Time constant of derivative block [s]

Connectors

TypeNameDescription
input BooleanInputuHeaPreEnaStatus of head pressure control: true = ON, false = OFF
input RealInputTConWatRetMeasured condenser water return temperature (condenser leaving) [K]
input RealInputTChiWatSupMeasured chilled water supply temperature [K]
output RealOutputyHeaPreConChiller head pressure control loop output [1]

Modelica definition

block ControlLoop "Sequence to generate head pressure control signal if it is not available from the chiller controller" parameter Real minChiLif( final min=1e-5, final unit="K", final quantity="TemperatureDifference") = 10 "Minimum allowable lift at minimum load for chiller"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real k=1 "Gain of controller"; parameter Real Ti( final unit="s", final quantity="Time")=0.5 "Time constant of integrator block"; parameter Real Td( final unit="s", final quantity="Time")=0.5 "Time constant of derivative block"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uHeaPreEna "Status of head pressure control: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TConWatRet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured condenser water return temperature (condenser leaving)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSup( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured chilled water supply temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHeaPreCon( final unit="1", final min=0, final max=1) "Chiller head pressure control loop output"; Buildings.Controls.OBC.Utilities.PIDWithEnable conPID( final controllerType=controllerType, final k=k, final Ti=Ti, final Td=Td, final yMax=1, final yMin=0, final y_reset=0) "Generate head pressure control signal"; protected Buildings.Controls.OBC.CDL.Reals.Subtract lif "Lift temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k=1/minChiLif) "Normalized by minimum allowable lift at minimum load for chiller"; equation connect(TConWatRet, lif.u1); connect(con.y, conPID.u_s); connect(conPID.y, yHeaPreCon); connect(lif.y, gai.u); connect(gai.y, conPID.u_m); connect(TChiWatSup, lif.u2); connect(uHeaPreEna, conPID.uEna); end ControlLoop;

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithWSE Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithWSE

Equipment setpoints when chiller head pressure control is enabled, for plants with waterside economizer and headered condenser water pumps

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithWSE

Information

Block that resets maximum cooling tower speed setpoint yMaxTowSpeSet, controls condenser water pump speed yConWatPumSpeSet, and head pressure control valve position yHeaPreConVal for plants with water side economizers and headered condenser water pumps. The development follows ASHRAE Guideline 36-2021, section 5.20.10 Head pressure control, part 5.20.10.5, 5.20.10.6, and 5.20.10.7.

1. For each chiller, when the waterside economizer is disabled (uWSE = false), map the chiller head pressure control loop signal uHeaPreCon as follows:

HeadControlCWP_WSE.png

2. When the waterside economizer is enabled (uWSE = true),

HeadControlValve_WSE.png

3. When the head pressure control loop is disabled (uHeaPreEna = false), the head pressure control valve shall be closed; the maximum tower speed setpoint and the condenser water pump speed setpoints become 0.

Parameters

TypeNameDefaultDescription
RealminTowSpe0.1Minimum cooling tower fan speed
RealminConWatPumSpe0.1Minimum condenser water pump speed
RealminHeaPreValPos0.1Minimum head pressure control valve position

Connectors

TypeNameDescription
input RealInputuHeaPreConChiller head pressure control loop signal [1]
input RealInputdesConWatPumSpeDesign condenser water pump speed for current stage [1]
input BooleanInputuWSEStatus of water side economizer: true = ON, false = OFF
input BooleanInputuHeaPreEnaStatus of head pressure control: true = ON, false = OFF
output RealOutputyMaxTowSpeSetMaximum cooling tower speed setpoint [1]
output RealOutputyConWatPumSpeSetCondenser water pump speed setpoint [1]
output RealOutputyHeaPreConValHead pressure control valve position [1]

Modelica definition

block MappingWithWSE "Equipment setpoints when chiller head pressure control is enabled, for plants with waterside economizer and headered condenser water pumps" parameter Real minTowSpe = 0.1 "Minimum cooling tower fan speed"; parameter Real minConWatPumSpe = 0.1 "Minimum condenser water pump speed"; parameter Real minHeaPreValPos = 0.1 "Minimum head pressure control valve position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uHeaPreCon( final unit="1", final min=0, final max=1) "Chiller head pressure control loop signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput desConWatPumSpe( final unit="1", final min=0, final max=1) "Design condenser water pump speed for current stage"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWSE "Status of water side economizer: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uHeaPreEna "Status of head pressure control: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yMaxTowSpeSet( final unit="1", final min=0, final max=1) "Maximum cooling tower speed setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yConWatPumSpeSet( final unit="1", final min=0, final max=1) "Condenser water pump speed setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHeaPreConVal( final unit="1", final min=0, final max=1) "Head pressure control valve position"; protected Buildings.Controls.OBC.CDL.Reals.Line maxCooTowSpeSet "Maximum cooling tower speed setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer(final k=0) "Constant zero"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one(final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hal(final k=0.5) "Constant value"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hpTowMaxSpe( final k=minTowSpe) "Minimum allowable tower speed"; Buildings.Controls.OBC.CDL.Reals.Line conWatPumSpe "Condenser water pump speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hal1(final k=0.5) "Constant value"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one2(final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( final k=minConWatPumSpe) "Minimum condenser water pump speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one3(final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one4(final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( final k=minHeaPreValPos) "Minimum head pressure control valve position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer1(final k=0) "Constant value"; Buildings.Controls.OBC.CDL.Reals.Line heaPreConVal "Head pressure control valve position"; Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch the maximum tower speed setpoint based on the economizer status"; Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch the condenser water pump speed setpoint based on the economizer status"; Buildings.Controls.OBC.CDL.Reals.Switch swi2 "Switch the head pressure control valve setpoint based on the economizer status"; Buildings.Controls.OBC.CDL.Reals.Switch swi3 "Switch the valve setpoint to 0 when the head pressure control is disabled"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer2(final k=0) "Constant value"; Buildings.Controls.OBC.CDL.Reals.Switch swi4 "Switch the pump speed setpoint to 0 when the head pressure control is disabled"; Buildings.Controls.OBC.CDL.Reals.Switch swi5 "Switch the maximum tower speed setpoint to 0 when the head pressure control is disabled"; equation connect(zer.y, maxCooTowSpeSet.x1); connect(one.y, maxCooTowSpeSet.f1); connect(hal.y, maxCooTowSpeSet.x2); connect(hpTowMaxSpe.y, maxCooTowSpeSet.f2); connect(uHeaPreCon, maxCooTowSpeSet.u); connect(hal1.y,conWatPumSpe. x1); connect(con.y,conWatPumSpe. f2); connect(one2.y,conWatPumSpe. x2); connect(uHeaPreCon,conWatPumSpe. u); connect(zer1.y, heaPreConVal.x1); connect(one3.y, heaPreConVal.f1); connect(one4.y, heaPreConVal.x2); connect(con1.y, heaPreConVal.f2); connect(uHeaPreCon, heaPreConVal.u); connect(zer2.y, swi3.u3); connect(uHeaPreEna, swi3.u2); connect(swi2.y, swi3.u1); connect(swi3.y, yHeaPreConVal); connect(desConWatPumSpe, conWatPumSpe.f1); connect(one4.y, swi2.u3); connect(heaPreConVal.y, swi2.u1); connect(swi4.y, yConWatPumSpeSet); connect(swi5.y, yMaxTowSpeSet); connect(zer2.y, swi1.u3); connect(zer2.y, swi.u3); connect(uHeaPreEna, swi.u2); connect(uHeaPreEna, swi1.u2); connect(maxCooTowSpeSet.y, swi.u1); connect(conWatPumSpe.y, swi1.u1); connect(uWSE, swi5.u2); connect(uWSE, swi4.u2); connect(swi.y, swi5.u3); connect(one.y, swi5.u1); connect(desConWatPumSpe, swi4.u1); connect(swi1.y, swi4.u3); connect(uWSE, swi2.u2); end MappingWithWSE;

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithoutWSE Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithoutWSE

Equipment setpoints when chiller head pressure control is enabled, for plants without waterside economizer

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.Subsequences.MappingWithoutWSE

Information

Block that resets maximum cooling tower speed setpoint yMaxTowSpeSet, controls head pressure control valve position yHeaPreConVal or condenser water pump speed yConWatPumSpeSet for plants without water side economizers. The development follows ASHRAE Guideline 36-2021, section 5.20.10 head pressure control, part 5.20.10.3, part 5.20.10.4, and 5.20.10.7.

1. For each chiller, map chiller head pressure control loop signal uHeaPreCon as follows:

HeadControlValve_noWSE.png

2. When the head pressure control loop is disabled (uHeaPreEna = false), the head pressure control valve shall be closed, or the pump should be disabled; the maximum tower speed setpoint becomes 0.

Parameters

TypeNameDefaultDescription
Booleanhave_fixSpeConWatPumtrueFlag: true=fixed speed condenser water pumps, false=variable speed condenser water pumps
RealminTowSpe0.1Minimum cooling tower fan speed
RealminConWatPumSpe0.1Minimum condenser water pump speed
RealminHeaPreValPos0.1Minimum head pressure control valve position

Connectors

TypeNameDescription
input RealInputuHeaPreConChiller head pressure control loop signal [1]
input RealInputdesConWatPumSpeDesign condenser water pump speed for current stage [1]
input BooleanInputuHeaPreEnaStatus of head pressure control: true = ON, false = OFF
output RealOutputyMaxTowSpeSetMaximum cooling tower speed setpoint [1]
output RealOutputyHeaPreConValHead pressure control valve position [1]
output RealOutputyConWatPumSpeSetCondenser water pump speed setpoint [1]

Modelica definition

block MappingWithoutWSE "Equipment setpoints when chiller head pressure control is enabled, for plants without waterside economizer" parameter Boolean have_fixSpeConWatPum = true "Flag: true=fixed speed condenser water pumps, false=variable speed condenser water pumps"; parameter Real minTowSpe = 0.1 "Minimum cooling tower fan speed"; parameter Real minConWatPumSpe = 0.1 "Minimum condenser water pump speed"; parameter Real minHeaPreValPos = 0.1 "Minimum head pressure control valve position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uHeaPreCon( final min=0, final max=1, final unit="1") "Chiller head pressure control loop signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput desConWatPumSpe( final min=0, final max=1, final unit="1") if not have_fixSpeConWatPum "Design condenser water pump speed for current stage"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uHeaPreEna "Status of head pressure control: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yMaxTowSpeSet( final unit="1", final min=0, final max=1) "Maximum cooling tower speed setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHeaPreConVal( final unit="1", final min=0, final max=1) if have_fixSpeConWatPum "Head pressure control valve position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yConWatPumSpeSet( final unit="1", final min=0, final max=1) if not have_fixSpeConWatPum "Condenser water pump speed setpoint"; protected Buildings.Controls.OBC.CDL.Reals.Line maxCooTowSpeSet "Maximum cooling tower speed setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer(final k=0) "Constant zero"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one(final k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hal(final k=0.5) "Constant value"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hpTowMaxSpe( final k=minTowSpe) "Minimum allowable tower speed"; Buildings.Controls.OBC.CDL.Reals.Line lin "Head pressure control valve position, or condenser water pump speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hal1(final k=0.5) "Constant value"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant fulOpeVal( final k=1) if have_fixSpeConWatPum "Fully open valve position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant one2(k=1) "Constant one"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minValPos( final k=minHeaPreValPos) if have_fixSpeConWatPum "Minimum head pressure control valve position"; Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch the setpoint to 0 if the head pressure control loop is disabled"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant minPumSpe( final k=minConWatPumSpe) if not have_fixSpeConWatPum "Minimum condenser water pump speed"; Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch the setpoint to 0 if the head pressure control loop is disabled"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zero(final k=0) "Constant zero"; equation connect(zer.y, maxCooTowSpeSet.x1); connect(one.y, maxCooTowSpeSet.f1); connect(hal.y, maxCooTowSpeSet.x2); connect(hpTowMaxSpe.y, maxCooTowSpeSet.f2); connect(uHeaPreCon, maxCooTowSpeSet.u); connect(hal1.y, lin.x1); connect(fulOpeVal.y, lin.f1); connect(minValPos.y, lin.f2); connect(one2.y, lin.x2); connect(uHeaPreCon, lin.u); connect(uHeaPreEna, swi.u2); connect(lin.y, swi.u1); connect(swi.y, yConWatPumSpeSet); connect(desConWatPumSpe, lin.f1); connect(minPumSpe.y, lin.f2); connect(swi.y, yHeaPreConVal); connect(uHeaPreEna, swi1.u2); connect(maxCooTowSpeSet.y, swi1.u1); connect(swi1.y, yMaxTowSpeSet); connect(zero.y, swi.u3); connect(zero.y, swi1.u3); end MappingWithoutWSE;