Buildings.Controls.OBC.ASHRAE.G36_PR1.TerminalUnits.SetPoints

Generic sequences of generating setpoints for terminal units control

Information

This package contains generic sequences for generating setpoints for various terminal units control, according to ASHRAE Guideline 36, Part 5.B.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36_PR1.TerminalUnits.SetPoints.ZoneTemperatures ZoneTemperatures Block outputs thermal zone cooling and heating setpoint
Buildings.Controls.OBC.ASHRAE.G36_PR1.TerminalUnits.SetPoints.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36_PR1.TerminalUnits.SetPoints.ZoneTemperatures Buildings.Controls.OBC.ASHRAE.G36_PR1.TerminalUnits.SetPoints.ZoneTemperatures

Block outputs thermal zone cooling and heating setpoint

Buildings.Controls.OBC.ASHRAE.G36_PR1.TerminalUnits.SetPoints.ZoneTemperatures

Information

This sequence sets the thermal zone cooling and heating setpoints. The implementation is according to the ASHRAE Guideline 36 (G36), PART 5.B.3. The calculation is done following the steps below.

Each zone shall have separate occupied and unoccupied heating and cooling setpoints.

The active setpoints shall be determined by the Operation Mode of the zone group.

The software shall prevent

Where the zone has a local setpoint adjustment knob/button

Cooling demand limit setpoint adjustment

The active cooling setpoints for all zones shall be increased when a demand limit is imposed on the associated zone group. The operator shall have the ability to exempt individual zones from this adjustment through the normal Building Automation System (BAS) user interface. Changes due to demand limits are not cumulative.

Heating demand limit setpoint adjustment

The active heating setpoints for all zones shall be decreased when a demand limit is imposed on the associated zone group. The operator shall have the ability to exempt individual zones from this adjustment through the normal BAS user interface. Changes due to demand limits are not cumulative.

Window switches

For zones that have operable windows with indicator switches, when the window switch indicates the window is open, the heating setpoint shall be temporarily set to 4.4 °C (40 °F) and the cooling setpoint shall be temporarily set to 49 °C (120 °F). When the window switch indicates the window is open during other than Occupied Mode, a Level 4 alarm shall be generated.

h. Occupancy sensor

Hierarchy of setpoint adjustments: the following adjustment restrictions shall prevail in order from highest to lowest priority.

Parameters

TypeNameDefaultDescription
Sensors
Booleanhave_occSen Check if the zone has occupancy sensor
Booleanhave_winSen Check if the zone has window status sensor
Setpoint adjustable setting
BooleancooAdjfalseFlag, set to true if both cooling and heating setpoint are adjustable separately
BooleanheaAdjfalseFlag, set to true if heating setpoint is adjustable
BooleansinAdjfalseFlag, set to true if both cooling and heating setpoint are adjustable through a single common knob
BooleanignDemLimtrueFlag, set to true to exempt individual zone from demand limit setpoint adjustment
Setpoints limits setting
RealTZonCooOnMax300.15Maximum cooling setpoint during on [K]
RealTZonCooOnMin295.15Minimum cooling setpoint during on [K]
RealTZonHeaOnMax295.15Maximum heating setpoint during on [K]
RealTZonHeaOnMin291.15Minimum heating setpoint during on [K]
RealTZonCooSetWinOpe322.15Cooling setpoint when window is open [K]
RealTZonHeaSetWinOpe277.15Heating setpoint when window is open [K]
Demand control
Setpoint adjustment
RealincTSetDem_10.56Cooling setpoint increase value (degC) when cooling demand limit level 1 is imposed
RealincTSetDem_21.1Cooling setpoint increase value (degC) when cooling demand limit level 2 is imposed
RealincTSetDem_32.2Cooling setpoint increase value (degC) when cooling demand limit level 3 is imposed
RealdecTSetDem_10.56Heating setpoint decrease value (degC) when heating demand limit level 1 is imposed
RealdecTSetDem_21.1Heating setpoint decrease value (degC) when heating demand limit level 2 is imposed
RealdecTSetDem_32.2Heating setpoint decrease value (degC) when heating demand limit level 3 is imposed

Connectors

TypeNameDescription
input RealInputTZonCooSetOccOccupied zone cooling setpoint [K]
input RealInputTZonHeaSetOccOccupied zone heating setpoint [K]
input RealInputTZonCooSetUnoUnoccupied zone cooling setpoint [K]
input RealInputTZonHeaSetUnoUnoccupied zone heating setpoint [K]
input RealInputsetAdjSetpoint adjustment value [K]
input RealInputheaSetAdjHeating setpoint adjustment value [K]
input IntegerInputuOpeModAHU operation mode status signal
input IntegerInputuCooDemLimLevCooling demand limit level
input IntegerInputuHeaDemLimLevHeating demand limit level
input BooleanInputuOccSenOccupancy sensor (occupied=true, unoccupied=false)
input BooleanInputuWinStaWindow status (open=true, close=false)
output RealOutputTZonCooSetCooling setpoint temperature [K]
output RealOutputTZonHeaSetHeating setpoint temperature [K]
output IntegerOutputyAlaAlarm level

Modelica definition

block ZoneTemperatures "Block outputs thermal zone cooling and heating setpoint" parameter Boolean have_occSen "Check if the zone has occupancy sensor"; parameter Boolean have_winSen "Check if the zone has window status sensor"; parameter Boolean cooAdj=false "Flag, set to true if both cooling and heating setpoint are adjustable separately"; parameter Boolean heaAdj=false "Flag, set to true if heating setpoint is adjustable"; parameter Boolean sinAdj = false "Flag, set to true if both cooling and heating setpoint are adjustable through a single common knob"; parameter Boolean ignDemLim = true "Flag, set to true to exempt individual zone from demand limit setpoint adjustment"; parameter Real TZonCooOnMax( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature")=300.15 "Maximum cooling setpoint during on"; parameter Real TZonCooOnMin( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature")=295.15 "Minimum cooling setpoint during on"; parameter Real TZonHeaOnMax( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature")=295.15 "Maximum heating setpoint during on"; parameter Real TZonHeaOnMin( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature")=291.15 "Minimum heating setpoint during on"; parameter Real TZonCooSetWinOpe( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature")=322.15 "Cooling setpoint when window is open"; parameter Real TZonHeaSetWinOpe( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature")=277.15 "Heating setpoint when window is open"; parameter Real incTSetDem_1=0.56 "Cooling setpoint increase value (degC) when cooling demand limit level 1 is imposed"; parameter Real incTSetDem_2=1.1 "Cooling setpoint increase value (degC) when cooling demand limit level 2 is imposed"; parameter Real incTSetDem_3=2.2 "Cooling setpoint increase value (degC) when cooling demand limit level 3 is imposed"; parameter Real decTSetDem_1=0.56 "Heating setpoint decrease value (degC) when heating demand limit level 1 is imposed"; parameter Real decTSetDem_2=1.1 "Heating setpoint decrease value (degC) when heating demand limit level 2 is imposed"; parameter Real decTSetDem_3=2.2 "Heating setpoint decrease value (degC) when heating demand limit level 3 is imposed"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonCooSetOcc( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Occupied zone cooling setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonHeaSetOcc( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Occupied zone heating setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonCooSetUno( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Unoccupied zone cooling setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZonHeaSetUno( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Unoccupied zone heating setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput setAdj( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") if (cooAdj or sinAdj) "Setpoint adjustment value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput heaSetAdj( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") if heaAdj "Heating setpoint adjustment value"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uCooDemLimLev "Cooling demand limit level"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uHeaDemLimLev "Heating demand limit level"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uOccSen if have_occSen "Occupancy sensor (occupied=true, unoccupied=false)"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWinSta if have_winSen "Window status (open=true, close=false)"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TZonCooSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TZonHeaSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Heating setpoint temperature"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput yAla "Alarm level"; Buildings.Controls.OBC.CDL.Logical.Or or2 "Check if there is cooling/heating demand limit being imposed"; Buildings.Controls.OBC.CDL.Logical.Edge edg "If demand limit is imposed"; Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler cooSetFre "Freeze current cooling setpoint when demand limit is imposed"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Or or5 "Check if demand limit should be ignored or if there is no demand limit"; Buildings.Controls.OBC.CDL.Logical.Or3 or1 "Check if cooling demand limit level is imposed"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logic not"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar3( final p=incTSetDem_3) "Increase setpoint by 2.2 degC"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1( final p=incTSetDem_2) "Increase setpoint by 1.1 degC"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2( final p=incTSetDem_1) "Increase setpoint by 0.56 degC"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro6 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro1 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro2 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler heaSetFre "Freeze current heating setpoint when demand limit is imposed"; Buildings.Controls.OBC.CDL.Logical.Or3 or4 "Check if heating demand limit level is imposed"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro7 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar6( final p=-decTSetDem_1) "Decrease setpoint by 0.56 degC"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar5( final p=-decTSetDem_2) "Decrease setpoint by 1.1 degC"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar4( final p=-decTSetDem_3) "Decrease setpoint by 2.2 degC"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro5 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro4 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Continuous.Multiply pro3 "Output product of the two inputs"; Buildings.Controls.OBC.CDL.Logical.Timer tim(final t=300) "Check whether the zone has been unpopulated for 5 minutes continuously during occupied mode"; Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset truHol(duration=60) "When the zone is unpopulated by more than 5 minute and then becomes populated, hold the change by 1 minute"; Buildings.Controls.OBC.CDL.Logical.Edge edg1 "Instant when the zone becomes more than 5 minutes"; Buildings.Controls.OBC.CDL.Continuous.AddParameter heaSetDec( final p=-1.1) "Heating setpoint decrease due to the 5 minutes unpopulation under occupied mode"; Buildings.Controls.OBC.CDL.Continuous.AddParameter cooSetInc( final p=1.1) "Heating setpoint increase due to the 5 minutes unpopulation under occupied mode"; Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler cooSetSam "Sample current cooling setpoint when zone becomes unpopulated by 5 minutes"; Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler heaSetSam "Sample current heating setpoint when zone becomes unpopulated by 5 minutes"; Buildings.Controls.OBC.CDL.Continuous.Add add1 "Adjust heating setpoint"; Buildings.Controls.OBC.CDL.Continuous.Add add2 "Adjust cooling setpoint"; Buildings.Controls.OBC.CDL.Continuous.Limiter cooSetLim( final uMax=TZonCooOnMax, final uMin=TZonCooOnMin) "Limit occupied zone cooling setpoint"; Buildings.Controls.OBC.CDL.Continuous.Limiter heaSetLim( final uMax=TZonHeaOnMax, final uMin=TZonHeaOnMin) "Limit occupied zone heating setpoint"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( final p=-0.56) "Cooling setpoint minus 0.56 degC"; protected Buildings.Controls.OBC.CDL.Integers.Equal intEqu "Check if current operation mode is warm-up mode"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu1 "Check if current operation mode is cool-down mode"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu2 "Check if current operation mode is occupied mode"; Buildings.Controls.OBC.CDL.Logical.Or3 or3 "Current operation mode is occupied, warm-up, or cool-down mode"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.warmUp) "Warm-up mode"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.coolDown) "Cool-down mode"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt2( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied) "Occupied mode"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant cooSetAdjCon(k=(cooAdj or sinAdj)) "Cooling setpoint adjustable"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(final k=0) "Zero adjustment"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con3(final k=0) if not (cooAdj or sinAdj) "Zero adjustment"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con4(final k=0) if not heaAdj "Zero adjustment"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant heaSetAdjCon(final k=heaAdj) "Heating setpoint adjustable"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con1(final k=0) "Zero adjustment"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant sinSetAdjCon(final k=sinAdj) "Single common setpoint adjustable"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con2(final k=ignDemLim) "Check whether the zone should exempt from setpoint adjustment due to the demand limit"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant conTru( final k=true) if not have_occSen "Constant true"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant conFal( final k=false) if not have_winSen "Constant false"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant winSenCon(final k=have_winSen) "Check if there is window status sensor"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant have_occSenCon(final k=have_occSen) "Check if there is occupancy sensor"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooSetWinOpe(final k=TZonCooSetWinOpe) "Cooling setpoint when window is open"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant heaSetWinOpe(final k=TZonHeaSetWinOpe) "Heating setpoint when window is open"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant alaZer(k=-0.2) "Alarm level 0"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant alaFou(k=3.8) "Alarm level 4"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt "Convert real input to integer output"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea1 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea6 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea2 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea3 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea4 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea5 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea7 "Convert boolean to real value"; Buildings.Controls.OBC.CDL.Logical.And and11 "Check if window is open during operation modes other than occupied"; Buildings.Controls.OBC.CDL.Logical.Not not5 "Other than occupied mode"; Buildings.Controls.OBC.CDL.Continuous.Less les "Check if occupied cooling setpoint is less than unoccupied one"; Buildings.Controls.OBC.CDL.Continuous.Greater gre "Check if occupied heating setpoint is greater than unoccupied one"; Buildings.Controls.OBC.CDL.Continuous.Greater gre2 "Check whether heating setpoint exceeds cooling setpoint minus 0.56 degC"; Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between occupied and unoccupied cooling setpoint"; Buildings.Controls.OBC.CDL.Continuous.Switch swi1 "Switch between occupied and unoccupied heating setpoint"; Buildings.Controls.OBC.CDL.Continuous.Switch swi2 "Setpoint can only be adjusted in occupied mode"; Buildings.Controls.OBC.CDL.Continuous.Switch swi3 "Setpoint can only be adjusted in occupied mode"; Buildings.Controls.OBC.CDL.Continuous.Switch swi4 "If there is no cooling adjustment, zero adjust"; Buildings.Controls.OBC.CDL.Continuous.Switch swi5 "If there is no heating adjustment, zero adjust"; Buildings.Controls.OBC.CDL.Continuous.Switch swi6 "If there is only one common adjust for both heating and cooling, use the adjust value from cooling one"; Buildings.Controls.OBC.CDL.Continuous.Switch swi7 "Ensure heating setpoint being not higher than cooling setpoint minus 0.56 degC"; Buildings.Controls.OBC.CDL.Continuous.Switch swi8 "Ensure unoccupied heating setppint being lower than occupied one"; Buildings.Controls.OBC.CDL.Continuous.Switch swi9 "Ensure unoccupied cooling setppint being higher than occupied one"; Buildings.Controls.OBC.CDL.Continuous.Switch swi10 "Switch between occupied and unoccupied cooling setpoint"; Buildings.Controls.OBC.CDL.Continuous.Switch swi11 "Switch between occupied and unoccupied cooling setpoint"; Buildings.Controls.OBC.CDL.Continuous.Switch swi12 "Increase cooling setpoint when the zone is unpopulated by more than 5 minutes"; Buildings.Controls.OBC.CDL.Continuous.Switch swi13 "Decrease heating setpoint when the zone is unpopulated by more than 5 minutes"; Buildings.Controls.OBC.CDL.Continuous.Switch swi14 "Switch to TZonCooSetWinOpe when window is open"; Buildings.Controls.OBC.CDL.Continuous.Switch swi15 "Switch to TZonHeaSetWinOpe when window is open"; Buildings.Controls.OBC.CDL.Continuous.Switch swi16 "Generate level 4 alarm when window is open during modes other than occupied"; Buildings.Controls.OBC.CDL.Continuous.Switch swi17 "If it is occupied mode, cooling setpoint should be limited"; Buildings.Controls.OBC.CDL.Continuous.Switch swi18 "If it is occupied mode, heating setpoint should be limited"; Buildings.Controls.OBC.CDL.Continuous.Switch swi19 "If there is occupancy sensor, update heating setpoint according to the occupancy"; Buildings.Controls.OBC.CDL.Continuous.Switch swi20 "If there is occupancy sensor, update cooling setpoint according to the occupancy"; Buildings.Controls.OBC.CDL.Continuous.Switch swi21 "If there is window status sensor, update heating setpoint according to the window status"; Buildings.Controls.OBC.CDL.Continuous.Switch swi22 "If there is window status sensor, update cooling setpoint according to the window status"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu7 "Check if the heating demand limit level is level 2"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt8( k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.DemandLimitLevels.heating3) "Heat demand limit level 3"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu8 "Check if the heating demand limit level is level 3"; Buildings.Controls.OBC.CDL.Logical.Not not4 "Logical not"; Buildings.Controls.OBC.CDL.Logical.And and10 "Check if the zone becomes unpopulated during occupied mode"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt6( k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.DemandLimitLevels.heating1) "Heat demand limit level 1"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu6 "Check if the heating demand limit level is level 1"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt7( k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.DemandLimitLevels.heating2) "Heat demand limit level 2"; Buildings.Controls.OBC.CDL.Integers.GreaterThreshold intGreThr "Check if cooling demand limit level is higher than level zero"; Buildings.Controls.OBC.CDL.Integers.GreaterThreshold intGreThr1 "Check if heating demand limit level is higher than level zero"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt3( k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.DemandLimitLevels.cooling1) "Cool demand limit level 1"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu3 "Check if the cooling demand limit level is level 1"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt4( k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.DemandLimitLevels.cooling2) "Cool demand limit level 2"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu4 "Check if the cooling demand limit level is level 2"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt5( k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.DemandLimitLevels.cooling3) "Cool demand limit level 3"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu5 "Check if the cooling demand limit level is level 3"; Buildings.Controls.OBC.CDL.Continuous.Add add3 "Add real inputs"; Buildings.Controls.OBC.CDL.Continuous.Add add4 "Add real inputs"; Buildings.Controls.OBC.CDL.Continuous.Add add5 "Add real inputs"; Buildings.Controls.OBC.CDL.Continuous.Add add6 "Add real inputs"; Buildings.Controls.OBC.CDL.Continuous.Add add7 "Add real inputs"; Buildings.Controls.OBC.CDL.Continuous.Add add8 "Add real inputs"; equation connect(uOpeMod, intEqu.u1); connect(uOpeMod, intEqu1.u1); connect(uOpeMod, intEqu2.u1); connect(conInt.y, intEqu.u2); connect(conInt1.y, intEqu1.u2); connect(conInt2.y, intEqu2.u2); connect(intEqu.y, or3.u1); connect(intEqu1.y, or3.u2); connect(intEqu2.y, or3.u3); connect(TZonCooSetOcc, swi.u1); connect(TZonCooSetUno, swi.u3); connect(TZonHeaSetOcc, swi1.u1); connect(TZonHeaSetUno, swi1.u3); connect(or3.y, swi.u2); connect(or3.y, swi1.u2); connect(cooSetAdjCon.y, swi4.u2); connect(setAdj, swi4.u1); connect(con3.y, swi4.u1); connect(con.y, swi4.u3); connect(swi4.y, add2.u2); connect(swi.y, add2.u1); connect(add2.y, swi2.u1); connect(swi.y, swi2.u3); connect(intEqu2.y, swi2.u2); connect(heaSetAdjCon.y, swi5.u2); connect(con1.y, swi5.u3); connect(swi5.y, swi6.u3); connect(sinSetAdjCon.y, swi6.u2); connect(swi6.y, add1.u2); connect(add1.y, swi3.u1); connect(heaSetAdj, swi5.u1); connect(con4.y, swi5.u1); connect(swi4.y, swi6.u1); connect(swi1.y, add1.u1); connect(swi1.y, swi3.u3); connect(intEqu2.y, swi3.u2); connect(uCooDemLimLev, intGreThr.u); connect(uHeaDemLimLev, intGreThr1.u); connect(intGreThr1.y, or2.u2); connect(intGreThr.y, or2.u1); connect(or2.y, edg.u); connect(intEqu3.y, booToRea.u); connect(intEqu4.y, booToRea1.u); connect(intEqu5.y, booToRea2.u); connect(uCooDemLimLev, intEqu3.u1); connect(uCooDemLimLev, intEqu4.u1); connect(uCooDemLimLev, intEqu5.u1); connect(conInt3.y, intEqu3.u2); connect(conInt4.y, intEqu4.u2); connect(conInt5.y, intEqu5.u2); connect(intEqu3.y, or1.u1); connect(intEqu4.y, or1.u2); connect(intEqu5.y, or1.u3); connect(or1.y, not1.u); connect(not1.y, booToRea6.u); connect(booToRea.y, pro.u2); connect(cooSetFre.y, addPar2.u); connect(cooSetFre.y, addPar1.u); connect(cooSetFre.y, addPar3.u); connect(booToRea1.y, pro1.u2); connect(booToRea2.y, pro2.u2); connect(addPar2.y, pro.u1); connect(cooSetFre.y, pro6.u2); connect(booToRea6.y, pro6.u1); connect(addPar1.y, pro1.u1); connect(addPar3.y, pro2.u1); connect(or2.y, not3.u); connect(con2.y, or5.u1); connect(not3.y, or5.u2); connect(uHeaDemLimLev, intEqu6.u1); connect(uHeaDemLimLev, intEqu7.u1); connect(uHeaDemLimLev, intEqu8.u1); connect(conInt6.y, intEqu6.u2); connect(conInt7.y, intEqu7.u2); connect(conInt8.y, intEqu8.u2); connect(intEqu6.y, booToRea3.u); connect(intEqu7.y, booToRea4.u); connect(intEqu8.y, booToRea5.u); connect(intEqu6.y, or4.u1); connect(intEqu7.y, or4.u2); connect(intEqu8.y, or4.u3); connect(or4.y, not2.u); connect(not2.y, booToRea7.u); connect(booToRea7.y, pro7.u1); connect(heaSetFre.y, pro7.u2); connect(heaSetFre.y, addPar6.u); connect(heaSetFre.y, addPar5.u); connect(heaSetFre.y, addPar4.u); connect(addPar6.y, pro3.u1); connect(addPar5.y, pro4.u1); connect(addPar4.y, pro5.u1); connect(booToRea3.y, pro3.u2); connect(booToRea4.y, pro4.u2); connect(booToRea5.y, pro5.u2); connect(edg.y, cooSetFre.trigger); connect(edg.y, heaSetFre.trigger); connect(or5.y, swi10.u2); connect(or5.y, swi11.u2); connect(swi2.y, cooSetFre.u); connect(swi2.y, swi10.u1); connect(swi3.y, heaSetFre.u); connect(swi3.y, swi11.u1); connect(uOccSen, not4.u); connect(conTru.y, not4.u); connect(and10.y, tim.u); connect(truHol.y, edg1.u); connect(edg1.y, cooSetSam.trigger); connect(edg1.y, heaSetSam.trigger); connect(cooSetSam.y, cooSetInc.u); connect(heaSetSam.y, heaSetDec.u); connect(cooSetInc.y, swi12.u1); connect(heaSetDec.y, swi13.u1); connect(truHol.y, swi12.u2); connect(truHol.y, swi13.u2); connect(swi11.y, swi13.u3); connect(swi10.y, swi12.u3); connect(intEqu2.y, and10.u1); connect(not4.y, and10.u2); connect(swi11.y, heaSetSam.u); connect(swi10.y, cooSetSam.u); connect(have_occSenCon.y, swi20.u2); connect(have_occSenCon.y, swi19.u2); connect(swi12.y, swi20.u1); connect(swi13.y, swi19.u1); connect(swi10.y, swi20.u3); connect(swi11.y, swi19.u3); connect(intEqu2.y, not5.u); connect(uWinSta, and11.u2); connect(not5.y, and11.u1); connect(and11.y, swi16.u2); connect(alaFou.y, swi16.u1); connect(alaZer.y, swi16.u3); connect(swi16.y, reaToInt.u); connect(uWinSta, swi14.u2); connect(uWinSta, swi15.u2); connect(cooSetWinOpe.y, swi14.u1); connect(heaSetWinOpe.y, swi15.u1); connect(winSenCon.y, swi22.u2); connect(winSenCon.y, swi21.u2); connect(swi19.y, swi15.u3); connect(swi19.y, swi21.u3); connect(swi20.y, swi14.u3); connect(swi20.y, swi22.u3); connect(swi14.y, swi22.u1); connect(swi15.y, swi21.u1); connect(conFal.y, and11.u2); connect(conFal.y, swi14.u2); connect(conFal.y, swi15.u2); connect(swi22.y, cooSetLim.u); connect(swi21.y, heaSetLim.u); connect(cooSetLim.y, swi17.u1); connect(heaSetLim.y, swi18.u1); connect(swi22.y, swi17.u3); connect(swi21.y, swi18.u3); connect(intEqu2.y, swi17.u2); connect(intEqu2.y, swi18.u2); connect(swi17.y, les.u1); connect(les.y, swi9.u2); connect(swi18.y, gre.u1); connect(gre.y, swi8.u2); connect(swi17.y, swi9.u1); connect(swi18.y, swi8.u1); connect(TZonCooSetUno, les.u2); connect(TZonCooSetUno, swi9.u3); connect(TZonHeaSetUno, gre.u2); connect(TZonHeaSetUno, swi8.u3); connect(swi9.y, addPar.u); connect(gre2.y, swi7.u2); connect(swi8.y, gre2.u1); connect(addPar.y, gre2.u2); connect(swi8.y, swi7.u3); connect(addPar.y, swi7.u1); connect(swi7.y, TZonHeaSet); connect(swi9.y, TZonCooSet); connect(reaToInt.y, yAla); connect(pro6.y, add3.u1); connect(pro.y, add3.u2); connect(pro1.y, add4.u1); connect(pro2.y, add4.u2); connect(add3.y, add5.u1); connect(add4.y, add5.u2); connect(add5.y, swi10.u3); connect(pro7.y, add6.u1); connect(pro3.y, add6.u2); connect(pro4.y, add7.u1); connect(pro5.y, add7.u2); connect(add6.y, add8.u1); connect(add7.y, add8.u2); connect(add8.y, swi11.u3); connect(tim.passed, truHol.u); end ZoneTemperatures;