Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable

Package of sequences for enabling plant and the associated devices

Information

This package contains sequences for enabling the plant and the associate devices. The sequences are implemented based on ASHRAE Guideline36-2021, section 5.20.2.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.DisableChillers DisableChillers Disable devices when the plant is disabled from chiller mode
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.Enable Enable Sequence to enable and disable plant
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.EnableDevices EnableDevices Enable devices when plants is enabled in chiller mode or waterside economizer mode
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.DisableChillers Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.DisableChillers

Disable devices when the plant is disabled from chiller mode

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.DisableChillers

Information

It disables the devices when the chiller plant is disabled in chiller mode. It is implemented as ASHRAE Guideline 36-2021, section 5.20.2.5 and 5.20.2.7.

When the plant is disabled:

Parameters

TypeNameDefaultDescription
Booleanhave_airCoofalseTrue: the plant has air cooled chiller
Booleanhave_WSEtrueTrue if the plant has waterside economizer. When the plant has waterside economizer, the condenser water pump speed must be variable
IntegernChi2Total number of chillers
IntegernChiWatPum2Total number of chilled water pumps
IntegernConWatPum2Total number of condenser water pumps
IntegernTowCel2Total number of cooling tower cells
Booleanhave_fixSpeConWatPumfalseTrue: the plant has fixed speed condenser water pumps. When the plant has waterside economizer, it must be false
ActuatorchiIsoValTypBuildings.Controls.OBC.ASHRA...Chilled water isolation valve type

Connectors

TypeNameDescription
input BooleanInputuChi[nChi]Chiller commanded on
input BooleanInputuChiWatReq[nChi]Chilled water request status for each chiller
input BooleanInputu1ChiWatIsoVal[nChi]Chilled water isolation valve position
input RealInputuChiWatIsoVal[nChi]Chiller chilled water isolation valve position [1]
input BooleanInputuConWatReq[nChi]Condenser water request status for each chiller
input RealInputuConWatIsoVal[nChi]Chiller condenser water isolation valve position [1]
input BooleanInputu1ConWatIsoVal[nChi]Condenser water isolation valve commanded setpoint
input BooleanInputuChiWatPum[nChiWatPum]Chilled water pump commanded status
input RealInputuChiWatPumSpeChilled water pump speed
input BooleanInputchaProIndicate if there is a stage up or stage down command
input RealInputuConWatPumSpeCondenser water pump speed
input BooleanInputuConWatPum[nConWatPum]Condenser water pump commanded status
input BooleanInputuWSEWater side economizer status: true = ON, false = OFF
output BooleanOutputy1ChiWatIsoVal[nChi]Chiller chilled water isolation valve commanded setpoint
output RealOutputyChiWatIsoVal[nChi]Chiller chilled water isolation valve position setpoints [1]
output RealOutputyConWatIsoVal[nChi]Chiller condenser water isolation valve position setpoints [1]
output BooleanOutputy1ConWatIsoVal[nChi]Condenser water isolation valve commanded setpoint
output BooleanOutputyChiWatPum[nChiWatPum]Chilled water pump commanded status: true-comanded on
output RealOutputyChiWatPumSpeChilled water pump speed [1]
output RealOutputyConWatPumSpeCondenser water pump speed [1]
output BooleanOutputyConWatPum[nConWatPum]Condenser water pump commanded status: true-comanded on
output BooleanOutputyTowCelTrue: the tower cells should be enabled

Modelica definition

block DisableChillers "Disable devices when the plant is disabled from chiller mode" parameter Boolean have_airCoo=false "True: the plant has air cooled chiller"; parameter Boolean have_WSE=true "True if the plant has waterside economizer. When the plant has waterside economizer, the condenser water pump speed must be variable"; parameter Integer nChi=2 "Total number of chillers"; parameter Integer nChiWatPum = 2 "Total number of chilled water pumps"; parameter Integer nConWatPum = 2 "Total number of condenser water pumps"; parameter Integer nTowCel = 2 "Total number of cooling tower cells"; parameter Boolean have_fixSpeConWatPum = false "True: the plant has fixed speed condenser water pumps. When the plant has waterside economizer, it must be false"; parameter Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator chiIsoValTyp= Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator.Modulating "Chilled water isolation valve type"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChi[nChi] "Chiller commanded on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiWatReq[nChi] "Chilled water request status for each chiller"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1ChiWatIsoVal[nChi] "Chilled water isolation valve position"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uChiWatIsoVal[nChi]( final min=fill(0, nChi), final max=fill(1, nChi), final unit=fill("1", nChi)) if chiIsoValTyp == Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator.Modulating "Chiller chilled water isolation valve position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uConWatReq[nChi] if not have_airCoo "Condenser water request status for each chiller"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uConWatIsoVal[nChi]( final min=fill(0, nChi), final max=fill(1, nChi), final unit=fill("1", nChi)) if not have_airCoo "Chiller condenser water isolation valve position"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1ConWatIsoVal[nChi] if not have_airCoo "Condenser water isolation valve commanded setpoint"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiWatPum[nChiWatPum] "Chilled water pump commanded status"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uChiWatPumSpe "Chilled water pump speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput chaPro "Indicate if there is a stage up or stage down command"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uConWatPumSpe if not have_fixSpeConWatPum and not have_airCoo "Condenser water pump speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uConWatPum[nConWatPum] if not have_airCoo "Condenser water pump commanded status"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWSE if have_WSE and not have_airCoo "Water side economizer status: true = ON, false = OFF"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1ChiWatIsoVal[nChi] "Chiller chilled water isolation valve commanded setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yChiWatIsoVal[nChi]( final unit=fill("1", nChi), final min=fill(0, nChi), final max=fill(1, nChi)) if chiIsoValTyp == Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator.Modulating "Chiller chilled water isolation valve position setpoints"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yConWatIsoVal[nChi]( final unit=fill("1", nChi), final min=fill(0, nChi), final max=fill(1, nChi)) if not have_airCoo "Chiller condenser water isolation valve position setpoints"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1ConWatIsoVal[nChi] if not have_airCoo "Condenser water isolation valve commanded setpoint"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yChiWatPum[nChiWatPum] "Chilled water pump commanded status: true-comanded on"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yChiWatPumSpe( final unit="1", final min=0, final max=1) "Chilled water pump speed"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yConWatPumSpe( final unit="1", final min=0, final max=1) if not have_fixSpeConWatPum and not have_airCoo "Condenser water pump speed"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yConWatPum[nConWatPum] if not have_airCoo "Condenser water pump commanded status: true-comanded on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yTowCel if not have_airCoo "True: the tower cells should be enabled"; Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel( final delayTime=180) "Threshold time after chiller being disabled"; Buildings.Controls.OBC.CDL.Logical.MultiOr mulOr( final nin=nChi) "Check if there is any chilled water request"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep1( final nout=nChi) "Replicate boolean input"; Buildings.Controls.OBC.CDL.Logical.MultiOr mulOr1( final nin=nChi) if not have_airCoo "Check if there is any condenser water request"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep2( final nout=nChi) if not have_airCoo "Replicate boolean input"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep5( final nout=nConWatPum) if not have_airCoo "Replicate boolean input"; Buildings.Controls.OBC.CDL.Logical.Not noChi "No enabled chiller"; Buildings.Controls.OBC.CDL.Logical.Not noChiWatReq "No chilled water request"; Buildings.Controls.OBC.CDL.Logical.Or cloChiIsoVal "Close all chilled water isolation valve"; Buildings.Controls.OBC.CDL.Logical.Switch logSwi[nChi] "Close valve"; Buildings.Controls.OBC.CDL.Logical.Or cloConIsoVal if not have_airCoo "Close all condenser water isolation valve"; Buildings.Controls.OBC.CDL.Logical.Not noConWatReq if not have_airCoo "No condenser water request"; Buildings.Controls.OBC.CDL.Reals.Switch swi1[nChi] if not have_airCoo "Close valve"; Buildings.Controls.OBC.CDL.Reals.Switch swi2 "Disable pumps"; Buildings.Controls.OBC.CDL.Reals.Switch swi3 if not have_fixSpeConWatPum and not have_airCoo "Disable pumps"; Buildings.Controls.OBC.CDL.Logical.And and2 "Plant is disabled and it is not in staging process"; Buildings.Controls.OBC.CDL.Logical.And and1 if not have_airCoo "Plant is disabled and it is not in staging process"; Buildings.Controls.OBC.CDL.Logical.Not not4 "Not in staging process"; Buildings.Controls.OBC.CDL.Logical.And disChi1 "Chillers are disabled and it is not in staging process"; Buildings.Controls.OBC.CDL.Logical.And disChi if not have_airCoo "Chillers are disabled and it is not in staging process"; Buildings.Controls.OBC.CDL.Logical.MultiOr chiMod( final nin=nChi) "True: the plant has chiller mode"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con[nChi]( final k=fill(0, nChi)) "Constant zero"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=0) "Constant zero"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(final k=0) if not have_fixSpeConWatPum and not have_airCoo "Constant zero"; Buildings.Controls.OBC.CDL.Logical.Not not1 if have_WSE and not have_airCoo "Not in staging process"; Buildings.Controls.OBC.CDL.Logical.And disPla1 "Plant is disabled and it is not in staging process"; Buildings.Controls.OBC.CDL.Logical.And disPla if not have_airCoo "Plant is disabled and it is not in staging process"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con3( final k=true) if not have_WSE or have_airCoo "Logical true"; Buildings.Controls.OBC.CDL.Logical.Or disTow if not have_airCoo "Disable cooling tower"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con4( final k=false) if not have_WSE and not have_airCoo "Logical false"; Buildings.Controls.OBC.CDL.Logical.And conWatPum[nConWatPum] if not have_airCoo "Condenser water pump commanded status"; Buildings.Controls.OBC.CDL.Logical.Not not2[nConWatPum] if not have_airCoo "Not disable pumps"; Buildings.Controls.OBC.CDL.Logical.And chiWatPum1[nChiWatPum] "Chilled water pump commanded status"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep3( final nout=nChiWatPum) "Replicate boolean input"; Buildings.Controls.OBC.CDL.Logical.Not not3[nChiWatPum] "Not disable pumps"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con6[nChi]( final k=fill(false, nChi)) "Logical false"; Buildings.Controls.OBC.CDL.Reals.Switch swi4[nChi] if chiIsoValTyp == Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator.Modulating "Close valve"; Buildings.Controls.OBC.CDL.Logical.Latch enaIsoVal "Enable isolation valve"; Buildings.Controls.OBC.CDL.Logical.Change chiWatReqCha "Any change on the chilled water request"; Buildings.Controls.OBC.CDL.Logical.Or enaChiIsoVal "Enable chilled water isolation valve"; Buildings.Controls.OBC.CDL.Logical.Change conWatReqCha if not have_airCoo "Any change on the condenser water request"; Buildings.Controls.OBC.CDL.Logical.Latch enaIsoVal1 if not have_airCoo "Enable isolation valve"; Buildings.Controls.OBC.CDL.Logical.Or enaConIsoVal if not have_airCoo "Enable condenser water isolation valve"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con5[nChi]( final k=fill(false, nChi)) "Logical false"; Buildings.Controls.OBC.CDL.Logical.Switch logSwi1[nChi] if not have_airCoo "Condenser water isolation valve commended setpoint"; equation connect(uChiWatReq, mulOr.u); connect(truDel.y, cloChiIsoVal.u1); connect(noChiWatReq.y, cloChiIsoVal.u2); connect(booScaRep1.y, logSwi.u2); connect(truDel.y, cloConIsoVal.u1); connect(uConWatReq, mulOr1.u); connect(noConWatReq.y, cloConIsoVal.u2); connect(booScaRep2.y, swi1.u2); connect(uConWatIsoVal, swi1.u3); connect(uChiWatPumSpe, swi2.u3); connect(uConWatPumSpe, swi3.u3); connect(and2.y, booScaRep1.u); connect(cloChiIsoVal.y, and2.u1); connect(and1.y, booScaRep2.u); connect(cloConIsoVal.y, and1.u1); connect(chaPro, not4.u); connect(not4.y, and1.u2); connect(not4.y, and2.u2); connect(not4.y, disChi.u2); connect(not4.y, disChi1.u2); connect(swi3.y, yConWatPumSpe); connect(swi2.y, yChiWatPumSpe); connect(swi1.y, yConWatIsoVal); connect(uChi, chiMod.u); connect(chiMod.y, noChi.u); connect(con.y, swi1.u1); connect(con1.y, swi2.u1); connect(con2.y, swi3.u1); connect(uWSE, not1.u); connect(disChi1.y, disPla1.u1); connect(disChi.y, disPla.u1); connect(disPla.y, booScaRep5.u); connect(not1.y, disPla1.u2); connect(not1.y, disPla.u2); connect(con3.y, disPla1.u2); connect(con3.y, disPla.u2); connect(chiMod.y, disTow.u1); connect(disTow.y, yTowCel); connect(uWSE, disTow.u2); connect(con4.y, disTow.u2); connect(noChi.y, truDel.u); connect(booScaRep5.y, not2.u); connect(not2.y, conWatPum.u1); connect(uConWatPum, conWatPum.u2); connect(conWatPum.y, yConWatPum); connect(disPla1.y, swi2.u2); connect(disPla.y, swi3.u2); connect(disPla1.y, booScaRep3.u); connect(not3.y, chiWatPum1.u2); connect(booScaRep3.y, not3.u); connect(chiWatPum1.y, yChiWatPum); connect(logSwi.y, y1ChiWatIsoVal); connect(u1ChiWatIsoVal, logSwi.u3); connect(con6.y, logSwi.u1); connect(swi4.y, yChiWatIsoVal); connect(booScaRep1.y, swi4.u2); connect(con.y, swi4.u1); connect(uChiWatIsoVal, swi4.u3); connect(noChi.y, disChi1.u1); connect(noChi.y, disChi.u1); connect(mulOr.y, enaChiIsoVal.u1); connect(enaIsoVal.y, enaChiIsoVal.u2); connect(enaChiIsoVal.y, noChiWatReq.u); connect(chiMod.y, enaIsoVal.u); connect(chiWatReqCha.y, enaIsoVal.clr); connect(mulOr.y, chiWatReqCha.u); connect(enaConIsoVal.y, noConWatReq.u); connect(enaIsoVal1.y, enaConIsoVal.u1); connect(mulOr1.y, enaConIsoVal.u2); connect(conWatReqCha.y, enaIsoVal1.clr); connect(mulOr1.y, conWatReqCha.u); connect(chiMod.y, enaIsoVal1.u); connect(uChiWatPum, chiWatPum1.u1); connect(booScaRep2.y, logSwi1.u2); connect(con5.y, logSwi1.u1); connect(u1ConWatIsoVal, logSwi1.u3); connect(logSwi1.y, y1ConWatIsoVal); end DisableChillers;

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.Enable Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.Enable

Sequence to enable and disable plant

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.Enable

Information

Block that generates chiller plant enabling signals and outputs the initial plant stage, according to ASHRAE Guideline 36-2021, section 5.20.2.1, 5.20.2.2 and 5.20.2.3.

The chiller plant should be enabled and disabled according to the following sequences:

  1. An enabling schedule should be included to allow operators to lock out the chiller plant during off-hours, e.g. to allow off-hour operation of HVAC systems except the chiller plant. The default schedule shall be 24/7 and adjustable.
  2. The plant should be enabled in the lowest stage when the plant has been disabled for at least plaThrTim, e.g., 15 minutes, and:
    • Number of chiller plant requests > ignReq (ignReq should default be 0 and adjustable), and,
    • Outdoor air temperature is greater than chiller lockout temperature, TOut > TChiLocOut, and,
    • The chiller enable schedule is active.
  3. The plant should be disabled when it has been enabled for at least plaThrTim, e.g., 15 minutes, and:
    • Number of chiller plant requests ≤ ignReq for reqThrTim, or,
    • Outdoor air temperature is 1 °F less than chiller lockout temperature, TOut < TChiLocOut - 1 °F, or,
    • The chiller enable schedule is inactive.

The following state machine chart illustrates the transitions between plant enable and plant disable:

Image of chiller plant enable-disable state machine chart

Parameters

TypeNameDefaultDescription
RealTChiLocOut277.5Outdoor air lockout temperature below which the chiller plant should be disabled
RealplaThrTim900Threshold time to check status of chiller plant [s]
RealreqThrTim180Threshold time to check current chiller plant request [s]
IntegerignReq0Ignorable chiller plant requests
Advanced
ReallocDt5/9Offset temperature for lockout chiller [K]

Connectors

TypeNameDescription
input IntegerInputchiPlaReqNumber of chiller plant cooling requests
input RealInputTOutOutdoor air temperature [K]
input BooleanInputuPlaSchEnaPlant schedule enable: true=Enable
output BooleanOutputyPlaChiller plant enabling status

Modelica definition

block Enable "Sequence to enable and disable plant" parameter Real TChiLocOut=277.5 "Outdoor air lockout temperature below which the chiller plant should be disabled"; parameter Real plaThrTim( final unit="s", final quantity="Time")=900 "Threshold time to check status of chiller plant"; parameter Real reqThrTim( final unit="s", final quantity="Time")=180 "Threshold time to check current chiller plant request"; parameter Integer ignReq = 0 "Ignorable chiller plant requests"; parameter Real locDt( final unit="K", final quantity="TemperatureDifference") = 5/9 "Offset temperature for lockout chiller"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput chiPlaReq "Number of chiller plant cooling requests"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", final quantity="ThermodynamicTemperature", displayUnit="degC") "Outdoor air temperature"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uPlaSchEna "Plant schedule enable: true=Enable"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yPla "Chiller plant enabling status"; protected Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Timer disTim( final t=plaThrTim) "Check if chiller plant has been disabled more than threshold time"; Buildings.Controls.OBC.CDL.Integers.GreaterThreshold hasReq( final t=ignReq) "Check if the number of chiller plant request is greater than the number of ignorable request"; Buildings.Controls.OBC.CDL.Logical.MultiAnd enaPla( final nin=4) "Enable chiller plant"; Buildings.Controls.OBC.CDL.Logical.Timer enaTim( final t=plaThrTim) "Check if chiller plant has been enabled more than threshold time"; Buildings.Controls.OBC.CDL.Logical.TrueDelay enaTim1( final delayTime=reqThrTim) "Check if number of chiller plant request has been less than ignorable request by more than threshold time"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Logical.And disPla "Disable chiller plant"; Buildings.Controls.OBC.CDL.Logical.Latch plaSta "Chiller plant enabling status"; Buildings.Controls.OBC.CDL.Reals.Hysteresis hys( final uLow=0, final uHigh=locDt) "Check if outdoor temperature is lower than chiller lockout temperature"; Buildings.Controls.OBC.CDL.Logical.Or disPlaCon "Disable chiller plant conditions"; Buildings.Controls.OBC.CDL.Logical.Not lesReq "Check if it is less than the ignorable request"; Buildings.Controls.OBC.CDL.Logical.Not notLoc "Check if outdoor temperature is higher than the chiller lockout temperature"; Buildings.Controls.OBC.CDL.Logical.Pre pre1 "Pre"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant chiLocOutTem( final k=TChiLocOut) "Outdoor air lockout temperature"; Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Difference between chiller lockout temperature and outdoor temperature"; Buildings.Controls.OBC.CDL.Logical.Or or1 "Disable chiller plant conditions"; equation connect(not1.y, disTim.u); connect(chiPlaReq, hasReq.u); connect(disTim.passed,enaPla. u[1]); connect(hasReq.y,enaPla. u[2]); connect(enaPla.y, plaSta.u); connect(plaSta.y, yPla); connect(disPlaCon.y, disPla.u2); connect(not2.y, disPlaCon.u1); connect(hasReq.y, lesReq.u); connect(lesReq.y, enaTim1.u); connect(plaSta.y, pre1.u); connect(pre1.y, not1.u); connect(pre1.y, enaTim.u); connect(TOut, sub1.u2); connect(chiLocOutTem.y, sub1.u1); connect(sub1.y, hys.u); connect(hys.y, notLoc.u); connect(notLoc.y, enaPla.u[3]); connect(disPla.y, plaSta.clr); connect(enaTim.passed, disPla.u1); connect(hys.y, or1.u2); connect(or1.y, disPlaCon.u2); connect(enaTim1.y, or1.u1); connect(uPlaSchEna, not2.u); connect(uPlaSchEna, enaPla.u[4]); end Enable;

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.EnableDevices Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.EnableDevices

Enable devices when plants is enabled in chiller mode or waterside economizer mode

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Generic.PlantEnable.EnableDevices

Information

It controls the devices when the chiller plant is enabled in chiller mode or waterside economizer mode. It is implemented as provided in sections 5.20.2.4, section a and b.

  1. Open the isolation valves,
    • If the plant is enabled in waterside economizer mode, open the condenser water isolation valve of the waterside economizer. This control is implemented in Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Economizers.Controller.
    • If the plant is enabled in chiller mode, open the chilled water isolation valve and the condenser water isolation valve of the lead chiller.
  2. Stage on lead primary chilled water pump, condenser water pump, and cooling tower respectively.
  3. If the plant is enabled in chiller mode, once the lead pumps are proven on, enable lead chiller.

Parameters

TypeNameDefaultDescription
IntegernChiWatPum2Total number of chilled water pumps
IntegernConWatPum2Total number of condenser water pumps
Booleanhave_airCoofalseTrue: the plant has air cooled chiller

Connectors

TypeNameDescription
input BooleanInputuPlaPlant enable signal
input IntegerInputuIniInitial chiller stage (at plant enable)
input IntegerInputuChiStaCurrent chiller stage
input BooleanInputuChiWatPum[nChiWatPum]Chilled water pump proven on
input BooleanInputuConWatPum[nConWatPum]Condenser water pump proven on
output BooleanOutputyEnaPlaProTrue: it is in the plant enabling process
output BooleanOutputyChiWatIsoValLead chiller chilled water isolation valve commanded open
output BooleanOutputyConWatIsoValLead chiller condenser water isolation valve commanded open
output BooleanOutputyLeaPriChiPumLead primary chilled water pump commanded on
output BooleanOutputyLeaConPumLead condenser water pump commanded on
output BooleanOutputyLeaTowCelLead cooling tower cell commanded on
output BooleanOutputyLeaChiLead chiller commanded on

Modelica definition

block EnableDevices "Enable devices when plants is enabled in chiller mode or waterside economizer mode" parameter Integer nChiWatPum = 2 "Total number of chilled water pumps"; parameter Integer nConWatPum = 2 "Total number of condenser water pumps"; parameter Boolean have_airCoo=false "True: the plant has air cooled chiller"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uPla "Plant enable signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uIni "Initial chiller stage (at plant enable)"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uChiSta "Current chiller stage"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiWatPum[nChiWatPum] "Chilled water pump proven on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uConWatPum[nConWatPum] if not have_airCoo "Condenser water pump proven on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yEnaPlaPro "True: it is in the plant enabling process"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yChiWatIsoVal "Lead chiller chilled water isolation valve commanded open"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yConWatIsoVal if not have_airCoo "Lead chiller condenser water isolation valve commanded open"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaPriChiPum "Lead primary chilled water pump commanded on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaConPum if not have_airCoo "Lead condenser water pump commanded on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaTowCel if not have_airCoo "Lead cooling tower cell commanded on"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaChi "Lead chiller commanded on"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu1 "Check if current stage is initial stage"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Not in initial stage"; Buildings.Controls.OBC.CDL.Logical.Latch enaPro "True: plant enabled, false once chiller stage departs initial stage"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt( final k=1) "Stage 1, meaning it stages in chiller mode"; Buildings.Controls.OBC.CDL.Integers.Equal intChiMod "Output true if it is enabled in chiller mode"; Buildings.Controls.OBC.CDL.Logical.And and1 "Enabled devices associate with chiller mode operation"; Buildings.Controls.OBC.CDL.Logical.MultiOr chiWatPumOn( final nin=nChiWatPum) "Check if there is any chilled water pump proven on"; Buildings.Controls.OBC.CDL.Logical.MultiOr conWatPumOn( final nin=nConWatPum) if not have_airCoo "Check if there is any condenser water pump proven on"; Buildings.Controls.OBC.CDL.Logical.And and2 "Check if the lead pumps are proven on"; Buildings.Controls.OBC.CDL.Logical.And and3 "Enable lead chiller"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con( final k=true) if have_airCoo "Constant true"; equation connect(uIni, intEqu1.u1); connect(uChiSta, intEqu1.u2); connect(intEqu1.y, not1.u); connect(enaPro.y, yEnaPlaPro); connect(conInt.y, intChiMod.u2); connect(uIni, intChiMod.u1); connect(enaPro.y, and1.u2); connect(and1.y, yChiWatIsoVal); connect(and1.y, yConWatIsoVal); connect(uChiWatPum, chiWatPumOn.u); connect(uConWatPum, conWatPumOn.u); connect(chiWatPumOn.y, and2.u1); connect(conWatPumOn.y, and2.u2); connect(and2.y, and3.u2); connect(and1.y, and3.u1); connect(and3.y, yLeaChi); connect(not1.y,enaPro. clr); connect(intChiMod.y, and1.u1); connect(enaPro.y, yLeaPriChiPum); connect(enaPro.y, yLeaConPum); connect(enaPro.y, yLeaTowCel); connect(con.y, and2.u2); connect(uPla, enaPro.u); end EnableDevices;