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

Condenser water pump control sequences

Information

This package contains subsequences for condenser water pumps control.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.EnableLead_dedicated EnableLead_dedicated Sequence for enabling lead pump of plants with dedicated condenser water pumps
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.EnableLead_headered EnableLead_headered Sequence for enabling lead pump of plants with headered condenser water pumps
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.Speed Speed Output design speed of condenser water pumps at current stage
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.CondenserWater.Subsequences.Validation Validation Collection of validation models

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

Sequence for enabling lead pump of plants with dedicated condenser water pumps

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

Information

Block that enables and disables the lead condenser water pump, for plants with dedicated condenser water pumps, according to ASHRAE Guideline 36-2021, section 5.20.9 Condenser water pumps, part 5.20.9.4.

The lead condenser water pump should be enabled when the lead chiller is commanded to run (uLeaChiEna = true). It should be disabled when the lead chiller is disabled and either the lead chiller has been proven off (uLeaChiSta = false) for offTimThr, i.e., 3 minutes, or is not requesting condenser water flow (uLeaConWatReq = false).

Connectors

TypeNameDescription
input BooleanInputuEnaPlaTrue: plant is just enabled
input BooleanInputuLeaChiEnaLead chiller commanded on status
input BooleanInputuLeaChiStaLead chiller proven on status
input BooleanInputuLeaConWatReqStatus indicating if chiller is requesting condenser water
output BooleanOutputyLeaLead pump status

Modelica definition

block EnableLead_dedicated "Sequence for enabling lead pump of plants with dedicated condenser water pumps" final parameter Real offTimThr( final unit="s", final quantity="Time")=180 "Threshold to check lead chiller OFF time"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEnaPla "True: plant is just enabled"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uLeaChiEna "Lead chiller commanded on status"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uLeaChiSta "Lead chiller proven on status"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uLeaConWatReq "Status indicating if chiller is requesting condenser water"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLea "Lead pump status"; protected Buildings.Controls.OBC.CDL.Logical.Or or2 "Logical or"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Latch leaPumSta "Lead pump status"; Buildings.Controls.OBC.CDL.Logical.Timer tim( final t=offTimThr) "Check if the chiller has been proven off for more than threshold time"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Check if the lead chiller is disabled"; Buildings.Controls.OBC.CDL.Logical.And and2 "Logical and"; Buildings.Controls.OBC.CDL.Logical.Or or1 "Logical or"; equation connect(uLeaConWatReq, not1.u); connect(uLeaChiEna, leaPumSta.u); connect(uLeaChiSta, not2.u); connect(not2.y, tim.u); connect(not1.y, or2.u2); connect(or2.y, and2.u2); connect(uLeaChiEna, not3.u); connect(not3.y, and2.u1); connect(and2.y, leaPumSta.clr); connect(tim.passed, or2.u1); connect(or1.y, yLea); connect(uEnaPla, or1.u1); connect(leaPumSta.y, or1.u2); end EnableLead_dedicated;

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

Sequence for enabling lead pump of plants with headered condenser water pumps

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

Information

Block that enables and disables the lead condenser water pump, for plants with headered condenser water pumps, according to ASHRAE Guideline 36-2021, section 5.20.9 Condenser water pumps, part 5.20.9.2-3.

  1. Condenser water pumps shall be lead-lag.
  2. The lead condenser water pump shall be enabled when the condenser water isolation valve of any chiller uChiConIsoVal or water side economizer uWseConIsoVal is commanded open. It shall be disabled when all chiller and water side economizer condenser water isolation valves are commanded closed.

Parameters

TypeNameDefaultDescription
Booleanhave_WSEtrueFlag of waterside economizer: true=have WSE, false=no WSE
IntegernChi2Total number of chiller

Connectors

TypeNameDescription
input BooleanInputuWseConIsoValWSE condenser water isolation valve commanded status
input BooleanInputuChiConIsoVal[nChi]Chiller condenser water isolation valve commanded status
input BooleanInputuEnaPlaTrue: plant is just enabled
output BooleanOutputyLeaLead pump status

Modelica definition

block EnableLead_headered "Sequence for enabling lead pump of plants with headered condenser water pumps" parameter Boolean have_WSE = true "Flag of waterside economizer: true=have WSE, false=no WSE"; parameter Integer nChi=2 "Total number of chiller"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWseConIsoVal if have_WSE "WSE condenser water isolation valve commanded status"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiConIsoVal[nChi] "Chiller condenser water isolation valve commanded status"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEnaPla "True: plant is just enabled"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLea "Lead pump status"; protected Buildings.Controls.OBC.CDL.Logical.Switch leaPumSta "Lead pump status"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con1( final k=false) "Logical false"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con( final k=true) "Logical true"; Buildings.Controls.OBC.CDL.Logical.Or or2 "Logical or"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con2( final k=false) if not have_WSE "Logical false"; Buildings.Controls.OBC.CDL.Logical.MultiOr mulOr( final nin=nChi) "Check if there is any chiller enabled"; Buildings.Controls.OBC.CDL.Logical.Or or1 "Logical or"; equation connect(con1.y, leaPumSta.u3); connect(con.y, leaPumSta.u1); connect(leaPumSta.y, yLea); connect(uWseConIsoVal, or2.u2); connect(con2.y, or2.u2); connect(uChiConIsoVal, mulOr.u); connect(mulOr.y, or2.u1); connect(or2.y, or1.u1); connect(uEnaPla, or1.u2); connect(or1.y, leaPumSta.u2); end EnableLead_headered;

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

Output design speed of condenser water pumps at current stage

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

Information

Block that outputs the number of operating condenser water pumps and design pump speed for current stage, according to ASHRAE Guideline 36-2021, section 5.20.9 Condenser water pumps, part 5.20.9.5, and 5.20.9.6.

If the plant has the fixed speed condenser water pump (fixSpe=true) and does not have the wateside economizer (have_WSE=false):

Otherwise:

Chiller stage Number of pump ON Design pump speed setpoint for current stage
0 0 N/A, Off
0+WSE 1 Per TAB to provide design flow through HX
1 1 Per TAB to provide design flow through chiller
1+WSE 2 Per TAB to provide at least design flow through both chiller and WSE
2 2 Per TAB to provide at least design flow through both chillers
2+WSE 2 Per TAB to provide at least design flow through both chillers and WSE, or 100% speed if design flow cannot be achieved.

Note that this sequence is for the plants with the condenser water pumps are equally sized.

Parameters

TypeNameDefaultDescription
Booleanhave_WSEtrueFlag to indicate if the plant has water side economizer
BooleanfixSpefalseFlag to indicate if the plant has fix speed condenser water pump
IntegernPlaSta6Total number of plant stages, including stage zero and the stages with a WSE, if applicable
IntegernChiSta3Total number of chiller stages, including stage zero but not 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
Setpoint according to stage
RealdesConWatPumSpe[nPlaSta]{0,0.5,0.75,0.6,0.75,0.9}Design condenser water pump speed setpoint, 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 ON, according to current chiller stage and WSE status
IntegerdesChiNum[nChiSta]{0,1,2}Design number of chiller that should be ON, according to current chiller stage

Connectors

TypeNameDescription
input IntegerInputuChiStaCurrent chiller stage index that does not include the WSE
input BooleanInputuWSEWater side economizer status: true = ON, false = OFF
output IntegerOutputyConWatPumNumDesign number of operating condenser water pumps at current stage
output RealOutputyDesConWatPumSpeDesign condenser water pump speed at current stage

Modelica definition

block Speed "Output design speed of condenser water pumps at current stage" parameter Boolean have_WSE = true "Flag to indicate if the plant has water side economizer"; parameter Boolean fixSpe = false "Flag to indicate if the plant has fix speed condenser water pump"; 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 setpoint, 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 ON, according to current chiller stage and WSE status"; parameter Integer desChiNum[nChiSta] = {0, 1, 2} "Design number of chiller that should be ON, according to current chiller stage"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uChiSta "Current chiller stage index that does not include the WSE"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWSE if have_WSE "Water side economizer status: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yConWatPumNum "Design number of operating condenser water pumps at current stage"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDesConWatPumSpe if not fixSpe "Design condenser water pump speed at current stage"; protected Buildings.Controls.OBC.CDL.Routing.IntegerExtractor conWatPumOn( final nin=nPlaSta) if not fixSpe "Number of condenser water pump should be on"; Buildings.Controls.OBC.CDL.Routing.RealExtractor conWatPumSpe( final nin=nPlaSta) if not fixSpe "Condenser water pump speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1[nPlaSta]( final k=desConWatPumSpe) if not fixSpe "Condenser water pump speed setpoint"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1[nPlaSta]( final k=desConWatPumNum) if not fixSpe "Number of condenser water pump should be on"; Buildings.Controls.OBC.CDL.Conversions.IntegerToReal intToRea if not fixSpe "Convert integer to real number"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3[nPlaSta]( final k=staVec) if not fixSpe "Chiller stage vector, element value like x.5 means chiller stage x plus WSE"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea( final realTrue=0.5) if have_WSE "Convert boolean input to real output"; Buildings.Controls.OBC.CDL.Reals.Add add2 if not fixSpe "Add two real inputs"; Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator reaRep( final nout=nPlaSta) if not fixSpe "Replicate real input"; Buildings.Controls.OBC.CDL.Reals.Subtract sub1[nPlaSta] if not fixSpe "Add two real inputs"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greEquThr[nPlaSta]( final t=fill(-0.1, nPlaSta)) if not fixSpe "Identify current stage"; Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt[nPlaSta] if not fixSpe "Convert boolean to integer"; Buildings.Controls.OBC.CDL.Integers.MultiSum mulSumInt( final nin=nPlaSta) if not fixSpe "Current stage index"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4( final k=0) if not have_WSE "Constant zero"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt[nChiSta]( final k=desChiNum) if fixSpe "Number of chiller should be enabled"; Buildings.Controls.OBC.CDL.Routing.IntegerExtractor conWatPumOn1( final nin=nChiSta) if fixSpe "Number of condenser water pump should be on"; Buildings.Controls.OBC.CDL.Integers.AddParameter addPar( final p=1) if fixSpe "Change the chiller stage index to the index for downstream selection"; equation connect(con1.y,conWatPumSpe. u); connect(uChiSta,intToRea. u); connect(conWatPumSpe.y, yDesConWatPumSpe); connect(uWSE, booToRea.u); connect(intToRea.y, add2.u1); connect(booToRea.y, add2.u2); connect(add2.y, reaRep.u); connect(sub1.y,greEquThr. u); connect(greEquThr.y, booToInt.u); connect(mulSumInt.y, conWatPumSpe.index); connect(mulSumInt.y, conWatPumOn.index); connect(booToInt.y, mulSumInt.u); connect(con4.y, add2.u2); connect(reaRep.y, sub1.u1); connect(con3.y, sub1.u2); connect(addPar.y, conWatPumOn1.index); connect(uChiSta, addPar.u); connect(conWatPumOn.y, yConWatPumNum); connect(conWatPumOn1.y, yConWatPumNum); connect(conInt.y, conWatPumOn1.u); connect(conInt1.y, conWatPumOn.u); end Speed;