Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater

Sequences for condenser water pump control

Information

This package contains control sequences for condenser water pumps. The implementations are based on section 5.20.9 in ASHRAE Guideline 36-2021.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Controller Controller Condenser water pump controller
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences Subsequences Condenser water pump control sequences
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Controller Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Controller

Condenser water pump controller

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Controller

Information

Block that generates control signals for condenser water pumps control, according to ASHRAE Guideline 36-2021, section 5.20.9 Condenser water pumps.

This sequence contains three subsequences:

Parameters

TypeNameDefaultDescription
Booleanhave_heaPumtrueFlag of headered condenser water pumps design: true=headered, false=dedicated
Booleanhave_WSEtrueFlag of waterside economizer: true=have WSE, false=no WSE
BooleanfixSpefalseFlag to indicate if the plant has fix speed condenser water pump
IntegernChi2Total number of chillers
IntegernConWatPum2Total number of condenser water pumps
IntegernChiSta3Total number of chiller stages, including stage zero but not the stages with a WSE, if applicable
Stage design speed
IntegernPlaSta6Total number of plant stages, including stage zero and the stages with a WSE, if applicable
RealstaVec[nPlaSta]{0,0.5,1,1.5,2,2.5}Plant stage vector, element value like x.5 means chiller stage x plus WSE
RealdesConWatPumSpe[nPlaSta]{0,0.5,0.75,0.6,0.75,0.9}Design condenser water pump speed setpoints, according to current chiller stage and WSE status
IntegerdesConWatPumNum[nPlaSta]{0,1,1,2,2,2}Design number of condenser water pumps that should be enabled, according to current chiller stage and WSE status
IntegerdesChiNum[nChiSta]{0,1,2}Design number of chiller that should be enabled, according to current chiller stage

Connectors

TypeNameDescription
input BooleanInputuChiConIsoVal[nChi]Chiller condenser water isolation valve status
input BooleanInputuLeaChiEnaLead chiller enabling status: true=lead chiller is enabled
input BooleanInputuLeaChiStaLead chiller status: true=lead chiller proven on
input BooleanInputuLeaConWatReqStatus indicating if chiller is requesting condenser water
input BooleanInputuEnaPlaTrue: plant is just enabled
input IntegerInputuChiStaCurrent chiller stage that does not include WSE
input BooleanInputuWSEWater side economizer status: true = ON, false = OFF
output BooleanOutputyLeaPumLead pump status setpoint
output RealOutputyDesConWatPumSpeCondenser water pump design speed at current stage
output IntegerOutputyConWatPumNumNumber of operating condenser water pumps

Modelica definition

block Controller "Condenser water pump controller" parameter Boolean have_heaPum = true "Flag of headered condenser water pumps design: true=headered, false=dedicated"; parameter Boolean have_WSE = true "Flag of waterside economizer: true=have WSE, false=no WSE"; parameter Boolean fixSpe = false "Flag to indicate if the plant has fix speed condenser water pump"; parameter Integer nChi=2 "Total number of chillers"; parameter Integer nConWatPum=2 "Total number of condenser water pumps"; parameter Integer nPlaSta=6 "Total number of plant stages, including stage zero and the stages with a WSE, if applicable"; parameter Integer nChiSta = 3 "Total number of chiller stages, including stage zero but not the stages with a WSE, if applicable"; parameter Real staVec[nPlaSta]={0,0.5,1,1.5,2,2.5} "Plant stage vector, element value like x.5 means chiller stage x plus WSE"; parameter Real desConWatPumSpe[nPlaSta]={0,0.5,0.75,0.6,0.75,0.9} "Design condenser water pump speed setpoints, according to current chiller stage and WSE status"; parameter Integer desConWatPumNum[nPlaSta]={0,1,1,2,2,2} "Design number of condenser water pumps that should be enabled, according to current chiller stage and WSE status"; parameter Integer desChiNum[nChiSta]={0,1,2} "Design number of chiller that should be enabled, according to current chiller stage"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiConIsoVal[nChi] if have_heaPum "Chiller condenser water isolation valve status"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uLeaChiEna "Lead chiller enabling status: true=lead chiller is enabled"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uLeaChiSta "Lead chiller status: true=lead chiller proven on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uLeaConWatReq "Status indicating if chiller is requesting condenser water"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEnaPla "True: plant is just enabled"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uChiSta "Current chiller stage that does not include WSE"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWSE if have_WSE "Water side economizer status: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaPum "Lead pump status setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDesConWatPumSpe if not fixSpe "Condenser water pump design speed at current stage"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yConWatPumNum "Number of operating condenser water pumps"; protected Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.EnableLead_headered enaLeaHeaPum(final have_WSE=have_WSE) if have_heaPum "Enable lead pumps for plants with headered condenser water pump"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.EnableLead_dedicated enaLeaDedPum if not have_heaPum "Enable lead pumps for plants with dedicated condenser water pump"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.Speed pumSpe( final have_WSE=have_WSE, final fixSpe=fixSpe, final nPlaSta=nPlaSta, final nChiSta=nChiSta, final staVec=staVec, final desConWatPumSpe=desConWatPumSpe, final desConWatPumNum=desConWatPumNum, final desChiNum=desChiNum) "Design pump speed of condenser water pump at current stage"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer(final k=0) if not fixSpe "Constant zero"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant zer1(final k=0) "Constant zero"; Buildings.Controls.OBC.CDL.Reals.Switch swi if not fixSpe "Real switch"; Buildings.Controls.OBC.CDL.Integers.Switch intSwi "Integer switch"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con( final k=false) if not have_WSE "Logical true"; equation connect(uWSE, enaLeaHeaPum.uWseConIsoVal); connect(enaLeaDedPum.uLeaChiSta, uLeaChiSta); connect(enaLeaDedPum.uLeaConWatReq, uLeaConWatReq); connect(uWSE, pumSpe.uWSE); connect(enaLeaHeaPum.yLea, yLeaPum); connect(enaLeaDedPum.yLea, yLeaPum); connect(uChiSta, pumSpe.uChiSta); connect(swi.y,yDesConWatPumSpe); connect(enaLeaDedPum.yLea, swi.u2); connect(enaLeaHeaPum.yLea, swi.u2); connect(zer.y, swi.u3); connect(enaLeaHeaPum.yLea, intSwi.u2); connect(enaLeaDedPum.yLea, intSwi.u2); connect(pumSpe.yConWatPumNum, intSwi.u1); connect(intSwi.y, yConWatPumNum); connect(zer1.y, intSwi.u3); connect(pumSpe.yDesConWatPumSpe, swi.u1); connect(con.y, enaLeaHeaPum.uWseConIsoVal); connect(con.y, pumSpe.uWSE); connect(uLeaChiEna, enaLeaDedPum.uLeaChiEna); connect(enaLeaHeaPum.uChiConIsoVal, uChiConIsoVal); connect(uEnaPla, enaLeaHeaPum.uEnaPla); connect(uEnaPla, enaLeaDedPum.uEnaPla); end Controller;