Package with sequences that output control setpoints
Information
This package contains generic setpoint sequences for
either AHU or terminal units control.
Package Content
Name |
Description |
OperationMode
|
Block that outputs the operation mode |
TrimAndRespond
|
Block to inplement trim and respond logic |
Validation
|
Collection of validation models |
Block that outputs the operation mode
Information
This block outputs VAV system operation mode. It is implemented according to
ASHRAE guideline G36, PART5.C.6 (zone group operating modes).
The block has the modes listed below.
Occupied Mode
A Zone Group is in the occupied mode when
occupancy input uOcc
is true. This input shall be retrieved from
other sequences that specifies occupancy variation and time remaining to the
next occupied period tNexOcc
.
Warmup Mode
Warmup mode shall start based on the zone with the longest calculated warm up
time warUpTim
requirement, but no earlier than 3 hours before
the start of the scheduled occupied period, and shall end at the scheduled
occupied start time. Zones where the window switch indicates that a window
is open shall be ignored. Note that for each zone, the optimal warm-up time
warUpTim
shall be obtained from an Optimal Start
sequences, computed in a separate block.
The figure below shows the sequence.
Cool-Down Mode
Cool-down mode shall start based on the zone with the longest calculated
cool-down time cooDowTim
requirement, but no earlier than 3 hours
before the start of the scheduled occupied period, and shall end at the
scheduled occupied start time. Zones where the window switch indicates that a
window is open shall be ignored. Note that the each zone cooDowTim
shall be obtained from an Optimal Start sequences, computed in a
separate block.
Setback Mode
During unoccupied mode, if any 5 zones (or all zones, if fewer than 5)
in the zone group fall below their unoccupied heating setpoints
TZonHeaSetUno
, the zone group shall enter setback mode until
all spaces in the zone group are 1.1 °C (2 °F) above their
unoccupied setpoints.
Freeze Protection Setback Mode
During unoccupied Mode, if any single zone falls below 4.4 °C
(40 °F), the zone group shall enter setback mode until all zones
are above 7.2 °C (45 °F), and a Level 3 alarm
yFreProSta
shall be set.
Setup Mode
During unoccupied mode, if any 5 zones (or all zones, if fewer than 5)
in the zone group rise above their unoccupied cooling setpoints TZonCooSetUno
,
the zone group shall enter setup mode until all spaces in the zone group
are 1.1 °C (2 °F) below their unoccupied setpoints. Zones
where the window switch indicates that a window is open shall be ignored.
Unoccupied Mode
Unoccupied mode shall be active if the zone group is not in any other mode.
Parameters
Type | Name | Default | Description |
Integer | numZon | numZon( ... | Number of zones |
Time | preWarCooTim | 10800 | Maximum cool-down or warm-up time [s] |
TemperatureDifference | bouLim | 1.1 | Value limit to indicate the end of setback or setup mode [K] |
Temperature | TZonFreProOn | 277.55 | Threshold zone temperature value to activate freeze protection mode [K] |
Temperature | TZonFreProOff | 280.35 | Threshold zone temperature value to finish the freeze protection mode [K] |
Connectors
Type | Name | Description |
input RealInput | TZonHeaSetOcc | Occupied heating setpoint temperature [K] |
input RealInput | TZonCooSetOcc | Occupied cooling setpoint temperature [K] |
input RealInput | TZon[numZon] | Temperature of each zone [K] |
input RealInput | TZonCooSetUno | Unoccupied cooling setpoint [K] |
input RealInput | TZonHeaSetUno | Unoccupied heating setpoint temperature [K] |
input RealInput | warUpTim[numZon] | Warm-up time retrieved from optimal warm-up block [s] |
input RealInput | cooDowTim[numZon] | Cool-down time retrieved from optimal cool-down block [s] |
input RealInput | tNexOcc | Time to next occupied period [s] |
input BooleanInput | uOcc | Zone occupancy status: true=occupied, false=unoccupied |
input BooleanInput | uWinSta[numZon] | Window status: true=open, false=close |
output IntegerOutput | yOpeMod | Operation mode |
Modelica definition
block OperationMode
parameter Integer numZon(min=1) ;
parameter Modelica.SIunits.Time preWarCooTim = 10800
;
parameter Modelica.SIunits.TemperatureDifference bouLim(min=0.5) = 1.1
;
parameter Modelica.SIunits.Temperature TZonFreProOn = 277.55
;
parameter Modelica.SIunits.Temperature TZonFreProOff = 280.35
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonHeaSetOcc(
final unit="K",
quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonCooSetOcc(
final unit="K",
quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TZon[numZon](
each final unit="K",
each quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonCooSetUno(
final unit="K",
quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonHeaSetUno(
final unit="K",
quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput warUpTim[numZon](
each final unit="s",
each quantity="Time")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput cooDowTim[numZon](
each final unit="s",
each quantity="Time")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput tNexOcc(
final unit="s", quantity="Time")
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uOcc
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWinSta[numZon]
;
Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yOpeMod ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant occModInd(
k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant unoPerInd(
final k=0)
;
Buildings.Controls.OBC.CDL.Continuous.MultiMax maxCooTim(
final nin=numZon)
;
Buildings.Controls.OBC.CDL.Continuous.MultiMax maxWarTim(
final nin=numZon)
;
Buildings.Controls.OBC.CDL.Logical.Switch corCooDowTim ;
Buildings.Controls.OBC.CDL.Logical.Switch corWarUpTim ;
Buildings.Controls.OBC.CDL.Continuous.MultiSum sum1(
final nin=numZon)
;
Buildings.Controls.OBC.CDL.Continuous.GreaterEqualThreshold greEquThr(
final threshold=4.5)
;
Buildings.Controls.OBC.CDL.Continuous.GreaterEqualThreshold greEquThr1(
final threshold=numZon-0.5)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys(
uLow=-0.5*bouLim,
uHigh=0.5*bouLim,
pre_y_start=false)
;
Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg
;
Buildings.Controls.OBC.CDL.Logical.Latch lat
;
Buildings.Controls.OBC.CDL.Logical.Latch lat1
;
Buildings.Controls.OBC.CDL.Continuous.MultiSum sum2(
final nin=numZon)
;
Buildings.Controls.OBC.CDL.Continuous.GreaterEqualThreshold greEquThr2(threshold=4.5)
;
Buildings.Controls.OBC.CDL.Continuous.GreaterEqualThreshold greEquThr3(
final threshold=numZon-0.5)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys1(
pre_y_start=false,
uLow=-0.5*bouLim,
uHigh=0.5*bouLim)
;
Buildings.Controls.OBC.CDL.Logical.Latch lat2
;
Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg1
;
Buildings.Controls.OBC.CDL.Integers.MultiSum sumInt(
final nin=7) ;
Buildings.Controls.OBC.CDL.Continuous.Product pro[numZon]
;
Buildings.Controls.OBC.CDL.Continuous.Product pro1[numZon]
;
Buildings.Controls.OBC.CDL.Continuous.Add add2(
final k1=+1,
final k2=-1)
;
Buildings.Controls.OBC.CDL.Continuous.Add add1(
final k1=+1,
final k2=-1)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys2(
pre_y_start=true,
uHigh=0,
uLow=-60)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys3(
pre_y_start=true,
uHigh=0,
uLow=-60)
;
Buildings.Controls.OBC.CDL.Continuous.Add add5(
final k1=-1,
final k2=+1)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys4(
pre_y_start=false,
uHigh=0,
uLow=-60)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys5(
pre_y_start=false,
uHigh=0,
uLow=-60)
;
Buildings.Controls.OBC.CDL.Continuous.Add add6(
final k1=-1,
final k2=+1)
;
Buildings.Controls.OBC.CDL.Continuous.Add add7(
final k1=+1,
final k2=-1)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys6(
pre_y_start=false,
uLow=-0.1,
uHigh=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Add add8(
final k1=-1,
final k2=+1)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys7(
pre_y_start=false,
uLow=-0.1,
uHigh=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Add add9[numZon](
each k1=-1,
each k2=+1) ;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys8[numZon](
each pre_y_start=false,
each uLow=-0.1,
each uHigh=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys9(
pre_y_start=false,
uLow=-0.1,
uHigh=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(
p=TZonFreProOn,
final k=-1)
;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys10(
pre_y_start=false,
uLow=-0.1,
uHigh=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(
final k=1,
p=(-1)*TZonFreProOff)
;
Buildings.Controls.OBC.CDL.Continuous.Add add10[numZon](
each k1=+1,
each k2=-1) ;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys11[numZon](
each pre_y_start=false,
each uLow=-0.1,
each uHigh=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(
p=preWarCooTim,
final k=-1)
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar3(
p=preWarCooTim,
final k=-1)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant maxWarCooTime(
k=preWarCooTim)
;
Buildings.Controls.OBC.CDL.Logical.Latch lat3
;
Buildings.Controls.OBC.CDL.Logical.Latch lat4
;
protected
Buildings.Controls.OBC.CDL.Conversions.RealToInteger occMod
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger setBacMod
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger freProSetBacMod
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger setUpMod
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt1(
integerTrue=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.warmUp)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt(
integerTrue=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.coolDown)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt3(
integerTrue=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.unoccupied)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea6(
realTrue=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.setUp)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea5[numZon]
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea4(
realTrue=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.freezeProtection)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea3(
realTrue=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.setBack)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea2[numZon]
;
Buildings.Controls.OBC.CDL.Utilities.Assert assMes(
message="Level 3 alarm: freeze protection setback")
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea9[numZon]
;
Buildings.Controls.OBC.CDL.Logical.Not not1[numZon] ;
Buildings.Controls.OBC.CDL.Logical.Not not2 ;
Buildings.Controls.OBC.CDL.Logical.And and1 ;
Buildings.Controls.OBC.CDL.Logical.And and2 ;
Buildings.Controls.OBC.CDL.Logical.Or or1
;
Buildings.Controls.OBC.CDL.Logical.Or3 or3
;
Buildings.Controls.OBC.CDL.Logical.Or or4
;
Buildings.Controls.OBC.CDL.Logical.Or3 or5
;
Buildings.Controls.OBC.CDL.Logical.Or or6
;
Buildings.Controls.OBC.CDL.Logical.Switch swi
;
Buildings.Controls.OBC.CDL.Logical.Switch swi1[numZon]
;
Buildings.Controls.OBC.CDL.Logical.Switch swi2[numZon]
;
Buildings.Controls.OBC.CDL.Logical.Switch swi3
;
Buildings.Controls.OBC.CDL.Logical.Switch swi4
;
Buildings.Controls.OBC.CDL.Logical.Switch swi5
;
Buildings.Controls.OBC.CDL.Routing.RealReplicator reaRep(nout=numZon)
;
Buildings.Controls.OBC.CDL.Routing.RealReplicator reaRep1(nout=numZon)
;
Buildings.Controls.OBC.CDL.Continuous.MultiMin minZonTem(nin=numZon)
;
Buildings.Controls.OBC.CDL.Continuous.MultiMax maxZonTem(nin=numZon)
;
Buildings.Controls.OBC.CDL.Logical.Not not3 ;
Buildings.Controls.OBC.CDL.Logical.Not not4 ;
Buildings.Controls.OBC.CDL.Logical.Not not5 ;
equation
connect(swi.y, occMod.u);
connect(occModInd.y, swi.u1);
connect(unoPerInd.y, swi.u3);
connect(maxCooTim.y, corCooDowTim.u1);
connect(booToRea2.y, sum1.u);
connect(booToRea5.y, sum2.u);
connect(uWinSta, swi1.u2);
connect(TZon, swi1.u3);
connect(uWinSta, swi2.u2);
connect(TZon, swi2.u3);
connect(cooDowTim, pro.u1);
connect(warUpTim, pro1.u1);
connect(booToRea9.y, pro.u2);
connect(booToRea9.y, pro1.u2);
connect(swi1.y, add9.u1);
connect(add9.y, hys8.u);
connect(hys8.y, booToRea2.u);
connect(swi2.y, add10.u1);
connect(add10.y, hys11.u);
connect(hys11.y, booToRea5.u);
connect(uWinSta, not1.u);
connect(not1.y, booToRea9.u);
connect(sum1.y, greEquThr.u);
connect(sum1.y, greEquThr1.u);
connect(greEquThr.y, or1.u1);
connect(greEquThr1.y, or1.u2);
connect(or1.y, lat.u);
connect(falEdg.y, lat.clr);
connect(lat.y, booToRea3.u);
connect(unoPerInd.y, swi3.u1);
connect(or3.y, swi3.u2);
connect(lat1.y, booToRea4.u);
connect(or3.y, swi4.u2);
connect(unoPerInd.y, swi4.u1);
connect(sum2.y, greEquThr2.u);
connect(sum2.y, greEquThr3.u);
connect(greEquThr2.y, or4.u1);
connect(greEquThr3.y, or4.u2);
connect(hys1.y, falEdg1.u);
connect(or4.y, lat2.u);
connect(falEdg1.y, lat2.clr);
connect(lat2.y, booToRea6.u);
connect(or3.y, swi5.u2);
connect(unoPerInd.y, swi5.u1);
connect(swi3.y, setBacMod.u);
connect(swi4.y, freProSetBacMod.u);
connect(swi5.y, setUpMod.u);
connect(lat.y, or5.u1);
connect(lat1.y, or5.u2);
connect(lat2.y, or5.u3);
connect(or5.y, or6.u1);
connect(or3.y, or6.u2);
connect(or6.y, not2.u);
connect(not2.y,booToInt3. u);
connect(sumInt.y, yOpeMod);
connect(and2.y, booToInt.u);
connect(and1.y, booToInt1.u);
connect(and2.y, or3.u2);
connect(and1.y, or3.u1);
connect(uOcc, swi.u2);
connect(uOcc, or3.u3);
connect(add2.y, hys.u);
connect(TZonHeaSetUno, add2.u1);
connect(TZonCooSetUno, add1.u2);
connect(add1.y, hys1.u);
connect(hys.y, falEdg.u);
connect(hys2.y, corCooDowTim.u2);
connect(hys3.y, corWarUpTim.u2);
connect(add5.y, hys4.u);
connect(hys4.y, and2.u1);
connect(tNexOcc, add5.u1);
connect(corCooDowTim.y, add5.u2);
connect(tNexOcc, add6.u1);
connect(corWarUpTim.y, add6.u2);
connect(add6.y, hys5.u);
connect(hys5.y, and1.u1);
connect(add7.y, hys6.u);
connect(TZonHeaSetOcc, add7.u1);
connect(add8.y, hys7.u);
connect(TZonCooSetOcc, add8.u1);
connect(addPar.y, hys9.u);
connect(hys9.y, lat1.u);
connect(addPar1.y, hys10.u);
connect(hys10.y, lat1.clr);
connect(maxWarTim.y, addPar3.u);
connect(addPar2.y, hys2.u);
connect(addPar3.y, hys3.u);
connect(maxCooTim.y, addPar2.u);
connect(maxWarCooTime.y, corCooDowTim.u3);
connect(maxWarTim.y, corWarUpTim.u1);
connect(maxWarCooTime.y, corWarUpTim.u3);
connect(TZonHeaSetUno, reaRep.u);
connect(reaRep.y, swi1.u1);
connect(reaRep.y, add9.u2);
connect(TZonCooSetUno, reaRep1.u);
connect(reaRep1.y, add10.u2);
connect(reaRep1.y, swi2.u1);
connect(booToRea3.y, swi3.u3);
connect(booToRea4.y, swi4.u3);
connect(booToRea6.y, swi5.u3);
connect(occMod.y, sumInt.u[1]);
connect(booToInt.y, sumInt.u[2]);
connect(booToInt1.y, sumInt.u[3]);
connect(setBacMod.y, sumInt.u[4]);
connect(freProSetBacMod.y, sumInt.u[5]);
connect(setUpMod.y, sumInt.u[6]);
connect(booToInt3.y, sumInt.u[7]);
connect(maxZonTem.y, add8.u2);
connect(maxZonTem.y, addPar.u);
connect(maxZonTem.y, add1.u1);
connect(TZon, maxZonTem.u);
connect(TZon,minZonTem.u);
connect(minZonTem.y, add7.u2);
connect(minZonTem.y, add2.u2);
connect(minZonTem.y, addPar1.u);
connect(pro.y, maxCooTim.u);
connect(pro1.y, maxWarTim.u);
connect(hys6.y, lat3.u);
connect(lat3.y, and1.u2);
connect(hys7.y, lat4.u);
connect(lat4.y, and2.u2);
connect(hys4.y, not3.u);
connect(hys5.y, not4.u);
connect(not4.y, lat3.clr);
connect(not3.y, lat4.clr);
connect(lat1.y, not5.u);
connect(not5.y, assMes.u);
end OperationMode;
Block to inplement trim and respond logic
Information
This block implements the trim and respond logic according to ASHRAE guideline G36,
PART5.A.15 (trim and respond setpoint reset logic).
The trim and respond logic shall reset setpoint within the range minSet
to
maxSet
.
When the associated device is off (uDevSta=false
), the setpoint
shall be iniSet
.
The reset logic shall be active while the associated device is proven
on (uDevSta=true
), starting delTim
after initial
device start command.
When active, every time step samplePeriod
, trim the setpoint by
triAmo
.
If there are more than numIgnReq
requests, respond by changing
the setpoint by resAmo*(numOfReq-numIgnReq)
, i.e., the number of
requests minus the number of ignored requests, but no more than maxRes
.
In other words, every time step
samplePeriod
:
- Change setpoint by
triAmo
;
- If
numOfReq > numIgnReq
, also change setpoint by resAmo*(numOfReq
-numIgnReq)
but no more than maxRes
.
Parameters
Type | Name | Default | Description |
Real | iniSet | | Initial setpoint |
Real | minSet | | Minimum setpoint |
Real | maxSet | | Maximum setpoint |
Time | delTim | delTim( ... | Delay time [s] |
Time | samplePeriod | samplePeriod( ... | Sample period of component [s] |
Integer | numIgnReq | | Number of ignored requests |
Real | triAmo | | Trim amount |
Real | resAmo | | Respond amount (must have opposite sign of triAmo) |
Real | maxRes | | Maximum response per time interval (must have same sign as resAmo) |
Connectors
Type | Name | Description |
input IntegerInput | numOfReq | Number of requests from zones/systems |
input BooleanInput | uDevSta | On/Off status of the associated device |
output RealOutput | y | Setpoint that have been reset |
Modelica definition
block TrimAndRespond
parameter Real iniSet ;
parameter Real minSet ;
parameter Real maxSet ;
parameter Modelica.SIunits.Time delTim(min=100*1E-15) ;
parameter Modelica.SIunits.Time samplePeriod(min=1E-3)
;
parameter Integer numIgnReq ;
parameter Real triAmo ;
parameter Real resAmo ;
parameter Real maxRes ;
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput numOfReq
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uDevSta
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput y
;
Buildings.Controls.OBC.CDL.Logical.TrueDelay tim(
final delayTime=delTim + samplePeriod)
;
Buildings.Controls.OBC.CDL.Continuous.GreaterEqualThreshold greThr
;
Buildings.Controls.OBC.CDL.Logical.Switch netRes ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant resAmoCon(k=resAmo)
;
Buildings.Controls.OBC.CDL.Continuous.Product pro
;
Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel(
final samplePeriod=samplePeriod,
final y_start=iniSet)
;
Buildings.Controls.OBC.CDL.Logical.Switch swi
;
Buildings.Controls.OBC.CDL.Logical.Switch swi1
;
Buildings.Controls.OBC.CDL.Logical.Switch swi2
;
Buildings.Controls.OBC.CDL.Discrete.Sampler sampler(samplePeriod=samplePeriod)
;
protected
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant iniSetCon(k=iniSet)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant numIgnReqCon(k=numIgnReq)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant triAmoCon(k=triAmo)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant maxResCon(k=maxRes)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant maxSetCon(k=maxSet)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zerTri(k=0)
;
Buildings.Controls.OBC.CDL.Conversions.IntegerToReal intToRea
;
Buildings.Controls.OBC.CDL.Continuous.Add difReqIgnReq(k1=-1)
;
Buildings.Controls.OBC.CDL.Continuous.Add add1
;
Buildings.Controls.OBC.CDL.Continuous.Add add2 ;
Buildings.Controls.OBC.CDL.Continuous.Min minInp
;
Buildings.Controls.OBC.CDL.Continuous.Min min1
;
Buildings.Controls.OBC.CDL.Logical.And and2
;
Buildings.Controls.OBC.CDL.Logical.Not not1 ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minSetCon(k=minSet)
;
Buildings.Controls.OBC.CDL.Continuous.Max maxInp
;
equation
connect(numIgnReqCon.y, difReqIgnReq.u1);
connect(difReqIgnReq.y, greThr.u);
connect(pro.y, minInp.u1);
connect(maxResCon.y, minInp.u2);
connect(minInp.y, add2.u2);
connect(triAmoCon.y, add2.u1);
connect(add2.y, netRes.u1);
connect(iniSetCon.y, swi.u3);
connect(swi.y, y);
connect(maxSetCon.y, min1.u2);
connect(add1.y, min1.u1);
connect(uniDel.y, add1.u1);
connect(netRes.y, add1.u2);
connect(sampler.y, difReqIgnReq.u2);
connect(triAmoCon.y, swi1.u1);
connect(zerTri.y, swi1.u3);
connect(swi1.y, netRes.u3);
connect(greThr.y, and2.u2);
connect(and2.y, netRes.u2);
connect(iniSetCon.y, swi2.u1);
connect(swi2.y, swi.u1);
connect(swi2.y, uniDel.u);
connect(uDevSta, not1.u);
connect(not1.y, swi2.u2);
connect(min1.y, maxInp.u1);
connect(minSetCon.y, maxInp.u2);
connect(numOfReq, intToRea.u);
connect(intToRea.y, sampler.u);
connect(resAmoCon.y, pro.u2);
connect(difReqIgnReq.y, pro.u1);
connect(uDevSta, tim.u);
connect(tim.y, swi.u2);
connect(tim.y, swi1.u2);
connect(and2.u1, tim.y);
connect(maxInp.y, swi2.u3);
end TrimAndRespond;