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 |
DisableChillers
|
Disable devices when the plant is disabled from chiller mode |
Enable
|
Sequence to enable and disable plant |
EnableDevices
|
Enable devices when plants is enabled in chiller mode or waterside economizer mode |
Validation
|
Collection of validation models |
Disable devices when the plant is disabled from chiller mode
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:
-
Shut off all enabled chillers, if any.
-
For each enabled chiller, close the chilled water isolation valve after
3 minutes or the chiller is not requesting chilled water flow.
-
For each enabled chiller, close the condenser water isolation valve after
3 minutes or the chiller is not requesting condenser water flow.
-
Disable the operating primary chilled water pumps, condenser water pumps, and
cooling towers.
Parameters
| Type | Name | Default | Description |
| Boolean | have_airCoo | false | True: the plant has air cooled chiller |
| 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 |
| Integer | nChi | 2 | Total number of chillers |
| Integer | nChiWatPum | 2 | Total number of chilled water pumps |
| Integer | nConWatPum | 2 | Total number of condenser water pumps |
| Integer | nTowCel | 2 | Total number of cooling tower cells |
| Boolean | have_fixSpeConWatPum | false | True: the plant has fixed speed condenser water pumps. When the plant has waterside economizer, it must be false |
| Actuator | chiIsoValTyp | Buildings.Controls.OBC.ASHRA... | Chilled water isolation valve type |
Connectors
| Type | Name | Description |
| input BooleanInput | uChi[nChi] | Chiller commanded on |
| input BooleanInput | uChiWatReq[nChi] | Chilled water request status for each chiller |
| input BooleanInput | u1ChiWatIsoVal[nChi] | Chilled water isolation valve position |
| input RealInput | uChiWatIsoVal[nChi] | Chiller chilled water isolation valve position [1] |
| input BooleanInput | uConWatReq[nChi] | Condenser water request status for each chiller |
| input RealInput | uConWatIsoVal[nChi] | Chiller condenser water isolation valve position [1] |
| input BooleanInput | u1ConWatIsoVal[nChi] | Condenser water isolation valve commanded setpoint |
| input BooleanInput | uChiWatPum[nChiWatPum] | Chilled water pump commanded status |
| input RealInput | uChiWatPumSpe | Chilled water pump speed |
| input BooleanInput | chaPro | Indicate if there is a stage up or stage down command |
| input RealInput | uConWatPumSpe | Condenser water pump speed |
| input BooleanInput | uConWatPum[nConWatPum] | Condenser water pump commanded status |
| input BooleanInput | uWSE | Water side economizer status: true = ON, false = OFF |
| output BooleanOutput | y1ChiWatIsoVal[nChi] | Chiller chilled water isolation valve commanded setpoint |
| output RealOutput | yChiWatIsoVal[nChi] | Chiller chilled water isolation valve position setpoints [1] |
| output RealOutput | yConWatIsoVal[nChi] | Chiller condenser water isolation valve position setpoints [1] |
| output BooleanOutput | y1ConWatIsoVal[nChi] | Condenser water isolation valve commanded setpoint |
| output BooleanOutput | yChiWatPum[nChiWatPum] | Chilled water pump commanded status: true-comanded on |
| output RealOutput | yChiWatPumSpe | Chilled water pump speed [1] |
| output RealOutput | yConWatPumSpe | Condenser water pump speed [1] |
| output BooleanOutput | yConWatPum[nConWatPum] | Condenser water pump commanded status: true-comanded on |
| output BooleanOutput | yTowCel | True: the tower cells should be enabled |
Modelica definition
block DisableChillers
parameter Boolean have_airCoo=false
;
parameter Boolean have_WSE=true
;
parameter Integer nChi=2
;
parameter Integer nChiWatPum = 2
;
parameter Integer nConWatPum = 2
;
parameter Integer nTowCel = 2
;
parameter Boolean have_fixSpeConWatPum = false
;
parameter Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator chiIsoValTyp=
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator.Modulating
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChi[nChi]
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiWatReq[nChi]
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1ChiWatIsoVal[nChi]
;
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
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uConWatReq[nChi]
if not have_airCoo
;
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
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput u1ConWatIsoVal[nChi]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiWatPum[nChiWatPum]
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput uChiWatPumSpe
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput chaPro
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput uConWatPumSpe
if not have_fixSpeConWatPum
and not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uConWatPum[nConWatPum]
if not have_airCoo ;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWSE
if have_WSE
and not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1ChiWatIsoVal[nChi]
;
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
;
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
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y1ConWatIsoVal[nChi]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yChiWatPum[nChiWatPum]
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yChiWatPumSpe(
final unit="1",
final min=0,
final max=1) ;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yConWatPumSpe(
final unit="1",
final min=0,
final max=1)
if not have_fixSpeConWatPum
and not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yConWatPum[nConWatPum]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yTowCel
if not
have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel(
final delayTime=180)
;
Buildings.Controls.OBC.CDL.Logical.MultiOr mulOr(
final nin=nChi)
;
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep1(
final nout=nChi)
;
Buildings.Controls.OBC.CDL.Logical.MultiOr mulOr1(
final nin=nChi)
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep2(
final nout=nChi)
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep5(
final nout=nConWatPum)
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Not noChi
;
Buildings.Controls.OBC.CDL.Logical.Not noChiWatReq
;
Buildings.Controls.OBC.CDL.Logical.Or cloChiIsoVal
;
Buildings.Controls.OBC.CDL.Logical.Switch logSwi[nChi] ;
Buildings.Controls.OBC.CDL.Logical.Or cloConIsoVal
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Not noConWatReq
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Reals.Switch swi1[nChi]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Reals.Switch swi2 ;
Buildings.Controls.OBC.CDL.Reals.Switch swi3
if not have_fixSpeConWatPum
and not have_airCoo ;
Buildings.Controls.OBC.CDL.Logical.And and2
;
Buildings.Controls.OBC.CDL.Logical.And and1
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Not not4 ;
Buildings.Controls.OBC.CDL.Logical.And disChi1
;
Buildings.Controls.OBC.CDL.Logical.And disChi
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.MultiOr chiMod(
final nin=nChi)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant con[nChi](
final k=
fill(0, nChi)) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(
final k=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(
final k=0)
if not have_fixSpeConWatPum
and not have_airCoo ;
Buildings.Controls.OBC.CDL.Logical.Not not1
if have_WSE
and not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.And disPla1
;
Buildings.Controls.OBC.CDL.Logical.And disPla
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con3(
final k=true)
if not have_WSE
or have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Or disTow
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con4(
final k=false)
if not have_WSE
and not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.And conWatPum[nConWatPum]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Not not2[nConWatPum]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.And chiWatPum1[nChiWatPum]
;
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booScaRep3(
final nout=nChiWatPum)
;
Buildings.Controls.OBC.CDL.Logical.Not not3[nChiWatPum]
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con6[nChi](
final k=
fill(false, nChi))
;
Buildings.Controls.OBC.CDL.Reals.Switch swi4[nChi]
if chiIsoValTyp ==
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.Actuator.Modulating
;
Buildings.Controls.OBC.CDL.Logical.Latch enaIsoVal
;
Buildings.Controls.OBC.CDL.Logical.Change chiWatReqCha
;
Buildings.Controls.OBC.CDL.Logical.Or enaChiIsoVal
;
Buildings.Controls.OBC.CDL.Logical.Change conWatReqCha
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Latch enaIsoVal1
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Or enaConIsoVal
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con5[nChi](
final k=
fill(false, nChi))
;
Buildings.Controls.OBC.CDL.Logical.Switch logSwi1[nChi]
if not have_airCoo
;
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;
Sequence to enable and disable plant
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:
-
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.
-
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.
-
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:
Parameters
| Type | Name | Default | Description |
| Real | TChiLocOut | 277.5 | Outdoor air lockout temperature below which the chiller plant should be disabled |
| Real | plaThrTim | 900 | Threshold time to check status of chiller plant [s] |
| Real | reqThrTim | 180 | Threshold time to check current chiller plant request [s] |
| Integer | ignReq | 0 | Ignorable chiller plant requests |
| Advanced |
| Real | locDt | 5/9 | Offset temperature for lockout chiller [K] |
Connectors
| Type | Name | Description |
| input IntegerInput | chiPlaReq | Number of chiller plant cooling requests |
| input RealInput | TOut | Outdoor air temperature [K] |
| input BooleanInput | uPlaSchEna | Plant schedule enable: true=Enable |
| output BooleanOutput | yPla | Chiller plant enabling status |
Modelica definition
block Enable
parameter Real TChiLocOut=277.5
;
parameter Real plaThrTim(
final unit="s",
final quantity="Time")=900
;
parameter Real reqThrTim(
final unit="s",
final quantity="Time")=180
;
parameter Integer ignReq = 0
;
parameter Real locDt(
final unit="K",
final quantity="TemperatureDifference") = 5/9
;
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput chiPlaReq
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut(
final unit="K",
final quantity="ThermodynamicTemperature",
displayUnit="degC")
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uPlaSchEna
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yPla
;
protected
Buildings.Controls.OBC.CDL.Logical.Not not1 ;
Buildings.Controls.OBC.CDL.Logical.Timer disTim(
final t=plaThrTim)
;
Buildings.Controls.OBC.CDL.Integers.GreaterThreshold hasReq(
final t=ignReq)
;
Buildings.Controls.OBC.CDL.Logical.MultiAnd enaPla(
final nin=4) ;
Buildings.Controls.OBC.CDL.Logical.Timer enaTim(
final t=plaThrTim)
;
Buildings.Controls.OBC.CDL.Logical.TrueDelay enaTim1(
final delayTime=reqThrTim)
;
Buildings.Controls.OBC.CDL.Logical.Not not2 ;
Buildings.Controls.OBC.CDL.Logical.And disPla
;
Buildings.Controls.OBC.CDL.Logical.Latch plaSta
;
Buildings.Controls.OBC.CDL.Reals.Hysteresis hys(
final uLow=0,
final uHigh=locDt)
;
Buildings.Controls.OBC.CDL.Logical.Or disPlaCon
;
Buildings.Controls.OBC.CDL.Logical.Not lesReq
;
Buildings.Controls.OBC.CDL.Logical.Not notLoc
;
Buildings.Controls.OBC.CDL.Logical.Pre pre1 ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant chiLocOutTem(
final k=TChiLocOut)
;
Buildings.Controls.OBC.CDL.Reals.Subtract sub1
;
Buildings.Controls.OBC.CDL.Logical.Or or1
;
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;
Enable devices when plants is enabled in chiller mode or waterside economizer mode
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.
-
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.
-
Stage on lead primary chilled water pump, condenser water pump, and cooling
tower respectively.
-
If the plant is enabled in chiller mode,
once the lead pumps are proven on, enable lead chiller.
Parameters
| Type | Name | Default | Description |
| Integer | nChiWatPum | 2 | Total number of chilled water pumps |
| Integer | nConWatPum | 2 | Total number of condenser water pumps |
| Boolean | have_airCoo | false | True: the plant has air cooled chiller |
Connectors
| Type | Name | Description |
| input BooleanInput | uPla | Plant enable signal |
| input IntegerInput | uIni | Initial chiller stage (at plant enable) |
| input IntegerInput | uChiSta | Current chiller stage |
| input BooleanInput | uChiWatPum[nChiWatPum] | Chilled water pump proven on |
| input BooleanInput | uConWatPum[nConWatPum] | Condenser water pump proven on |
| output BooleanOutput | yEnaPlaPro | True: it is in the plant enabling process |
| output BooleanOutput | yChiWatIsoVal | Lead chiller chilled water isolation valve commanded open |
| output BooleanOutput | yConWatIsoVal | Lead chiller condenser water isolation valve commanded open |
| output BooleanOutput | yLeaPriChiPum | Lead primary chilled water pump commanded on |
| output BooleanOutput | yLeaConPum | Lead condenser water pump commanded on |
| output BooleanOutput | yLeaTowCel | Lead cooling tower cell commanded on |
| output BooleanOutput | yLeaChi | Lead chiller commanded on |
Modelica definition
block EnableDevices
parameter Integer nChiWatPum = 2
;
parameter Integer nConWatPum = 2
;
parameter Boolean have_airCoo=false
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uPla
;
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uIni
;
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uChiSta
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChiWatPum[nChiWatPum]
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uConWatPum[nConWatPum]
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yEnaPlaPro
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yChiWatIsoVal
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yConWatIsoVal
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaPriChiPum
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaConPum
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaTowCel
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yLeaChi
;
Buildings.Controls.OBC.CDL.Integers.Equal intEqu1
;
Buildings.Controls.OBC.CDL.Logical.Not not1
;
Buildings.Controls.OBC.CDL.Logical.Latch enaPro
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt(
final k=1)
;
Buildings.Controls.OBC.CDL.Integers.Equal intChiMod
;
Buildings.Controls.OBC.CDL.Logical.And and1
;
Buildings.Controls.OBC.CDL.Logical.MultiOr chiWatPumOn(
final nin=nChiWatPum)
;
Buildings.Controls.OBC.CDL.Logical.MultiOr conWatPumOn(
final nin=nConWatPum)
if not have_airCoo
;
Buildings.Controls.OBC.CDL.Logical.And and2
;
Buildings.Controls.OBC.CDL.Logical.And and3
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con(
final k=true)
if have_airCoo
;
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;