Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints

Output setpoints for AHU control

Information

This package contains sequences generating setpoints for single zone VAV AHU control.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.ExhaustDamper ExhaustDamper Control of actuated exhaust dampers without fans
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.OutsideAirFlow OutsideAirFlow Output the minimum outdoor airflow rate setpoint for systems with a single zone
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.VAVSupply VAVSupply Supply air set point for single zone VAV system
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.Validation Validation Collection of validation models

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.ExhaustDamper Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.ExhaustDamper

Control of actuated exhaust dampers without fans

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.ExhaustDamper

Information

Control sequence for exhaust dampers without fans. It is implemented according to ASHRAE Guidline 35 (G36), PART5.N.8.(for multi zone VAV AHU), PART5.P.6 and PART3.2B.3 (for single zone VAV AHU).

Single zone VAV AHU: Control of actuated exhaust dampers without fans (PART5.P.6)

  1. Exhaust damper position setpoints (PART3.2B.3)
    • minExhDamPos is the exhaust damper position that maintains a building pressure of 12 Pa (0.05 inchWC) while the system is at minOutPosMin (i.e., the economizer damper is positioned to provide minimum outdoor air while the supply fan is at minimum speed).
    • maxExhDamPos is the exhaust damper position that maintains a building pressure of 12 Pa (0.05 inchWC) while the economizer damper is fully open and the fan speed is at cooling maximum.
  2. The exhaust damper is enabled when the associated supply fan is proven on and any outdoor air damper is open uOutDamPos > 0 and disabled and closed otherwise.
  3. The exhaust damper position is reset linearly from minExhDamPos to maxExhDamPos as the commanded economizer damper position goes from minOutPosMin to outDamPhyPosMax.

The control sequence is as follows:

Image of the exhaust damper control chart for single zone AHU

Parameters

TypeNameDefaultDescription
Nominal parameters
RealminExhDamPos0.1Exhaust damper position maintaining building static pressure at setpoint when the system is at minPosMin [1]
RealmaxExhDamPos0.9Exhaust damper position maintaining building static pressure at setpoint when outdoor air damper is fully open and fan speed is at cooling maximum [1]
RealminOutPosMin0.4Outdoor air damper position when fan operating at minimum speed to supply minimum outdoor air flow [1]
RealoutDamPhyPosMax1Physical or at the comissioning fixed maximum position of the outdoor air damper [1]

Connectors

TypeNameDescription
input BooleanInputuFanSupply fan status
input RealInputuOutDamPosOutdoor air damper position [1]
output RealOutputyExhDamExhaust damper position [1]

Modelica definition

block ExhaustDamper "Control of actuated exhaust dampers without fans" parameter Real minExhDamPos( min=0, max=1, final unit="1") = 0.1 "Exhaust damper position maintaining building static pressure at setpoint when the system is at minPosMin"; parameter Real maxExhDamPos( min=0, max=1, final unit="1") = 0.9 "Exhaust damper position maintaining building static pressure at setpoint when outdoor air damper is fully open and fan speed is at cooling maximum"; parameter Real minOutPosMin( min=0, max=1, final unit="1") = 0.4 "Outdoor air damper position when fan operating at minimum speed to supply minimum outdoor air flow"; parameter Real outDamPhyPosMax( min=0, max=1, final unit="1") = 1 "Physical or at the comissioning fixed maximum position of the outdoor air damper"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uFan "Supply fan status"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uOutDamPos( min=0, max=1, final unit="1") "Outdoor air damper position"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yExhDam( min=0, max=1, final unit="1") "Exhaust damper position"; Buildings.Controls.OBC.CDL.Continuous.Line exhDamPos "Linearly map exhaust damper position to the outdoor air damper position"; Buildings.Controls.OBC.CDL.Logical.Switch swi1 "Check if exhaust damper should be open"; Buildings.Controls.OBC.CDL.Continuous.Hysteresis greThr(final uLow=0.02, final uHigh=0.05) "Check if outdoor air damper is open"; Buildings.Controls.OBC.CDL.Logical.And and2 "Check if exhaust damper should be activated"; protected Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zerDam(final k=0) "Close damper when disabled"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minExhDam(final k= minExhDamPos) "Exhaust damper position maintaining building static pressure at setpoint while the system is at minPosMin"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant maxExhDam(final k= maxExhDamPos) "Exhaust damper position maintaining building static pressure at setpoint when outdoor air damper is fully open and fan speed is at cooling maximum"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minPosAtMinSpd(final k =minOutPosMin) "Outdoor air damper position when fan operating at minimum speed to supply minimum outdoor air flow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPhyPosMaxSig( final k=outDamPhyPosMax) "Physical or at the comissioning fixed maximum position of the outdoor air damper"; equation connect(outDamPhyPosMaxSig.y, exhDamPos.x2); connect(maxExhDam.y, exhDamPos.f2); connect(uOutDamPos, exhDamPos.u); connect(zerDam.y, swi1.u3); connect(and2.y, swi1.u2); connect(minPosAtMinSpd.y, exhDamPos.x1); connect(minExhDam.y, exhDamPos.f1); connect(uOutDamPos, greThr.u); connect(uFan, and2.u2); connect(greThr.y, and2.u1); connect(exhDamPos.y, swi1.u1); connect(swi1.y, yExhDam); end ExhaustDamper;

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.OutsideAirFlow Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.OutsideAirFlow

Output the minimum outdoor airflow rate setpoint for systems with a single zone

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.OutsideAirFlow

Information

This atomic sequence sets the minimum outdoor airflow setpoint for compliance with the ventilation rate procedure of ASHRAE 62.1-2013. The implementation is according to ASHRAE Guidline 36 (G36), PART5.P.4.b, PART5.B.2.b, PART3.1-D.2.a.

Step 1: Minimum breathing zone outdoor airflow required breZon

The number of occupant occCou could be retrieved directly from occupancy sensor nOcc if the sensor exists (have_occSen=true), or using the default occupant density occDen to find it AFlo*occDen. The occupant density can be found from Table 6.2.2.1 in ASHRAE Standard 62.1-2013. For design purpose, use design zone population desZonPop to find out the minimum requirement at the ventilation-design condition.

Step 2: Zone air-distribution effectiveness zonDisEff

Table 6.2.2.2 in ASHRAE 62.1-2013 lists some typical values for setting the effectiveness. Depending on difference between zone space temperature TZon and supply air temperature TDis, Warm-air effectiveness zonDisEffHea or Cool-air effectiveness zonDisEffCoo should be applied.

Step 3: Minimum required zone outdoor airflow zonOutAirRate

For each zone in any mode other than occupied mode and for zones that have window switches and the window is open, zonOutAirRate shall be zero. Otherwise, the required zone outdoor airflow zonOutAirRate shall be calculated as follows:

If the zone is populated, or if there is no occupancy sensor: If the zone has an occupancy sensor and is unpopulated:

For the single zone system, the required minimum outdoor airflow setpoint VOutMinSet_flow equals to the zonOutAirRate.

Parameters

TypeNameDefaultDescription
Booleanhave_occSen Set to true if zones have occupancy sensor
RealoccDen0.05Default number of person in unit area [1/m2]
RealzonDisEffHea0.8Zone air distribution effectiveness during heating [1]
RealzonDisEffCoo1.0Zone air distribution effectiveness during cooling [1]
Nominal condition
RealoutAirPerAre3e-4Outdoor air rate per unit area [m3/(s.m2)]
VolumeFlowRateoutAirPerPer2.5e-3Outdoor air rate per person [m3/s]
AreaAFlo Floor area [m2]
Advanced
RealuLow-0.5If zone space temperature minus supply air temperature is less than uLow, then it should use heating supply air distribution effectiveness [K]
RealuHig0.5If zone space temperature minus supply air temperature is more than uHig, then it should use cooling supply air distribution effectiveness [K]

Connectors

TypeNameDescription
input RealInputnOccNumber of occupants [1]
input RealInputTZonMeasured zone air temperature [K]
input RealInputTDisMeasured discharge air temperature [K]
input IntegerInputuOpeModAHU operation mode status signal
input BooleanInputuSupFanSupply fan status, true if on, false if off
input BooleanInputuWinWindow status, true if open, false if closed
output RealOutputVOutMinSet_flowEffective minimum outdoor airflow setpoint [m3/s]

Modelica definition

block OutsideAirFlow "Output the minimum outdoor airflow rate setpoint for systems with a single zone" parameter Real outAirPerAre(final unit="m3/(s.m2)") = 3e-4 "Outdoor air rate per unit area"; parameter Modelica.SIunits.VolumeFlowRate outAirPerPer=2.5e-3 "Outdoor air rate per person"; parameter Modelica.SIunits.Area AFlo "Floor area"; parameter Boolean have_occSen "Set to true if zones have occupancy sensor"; parameter Real occDen(final unit="1/m2") = 0.05 "Default number of person in unit area"; parameter Real zonDisEffHea(final unit="1") = 0.8 "Zone air distribution effectiveness during heating"; parameter Real zonDisEffCoo(final unit="1") = 1.0 "Zone air distribution effectiveness during cooling"; parameter Real uLow( final unit="K", quantity="ThermodynamicTemperature") = -0.5 "If zone space temperature minus supply air temperature is less than uLow, then it should use heating supply air distribution effectiveness"; parameter Real uHig( final unit="K", quantity="ThermodynamicTemperature") = 0.5 "If zone space temperature minus supply air temperature is more than uHig, then it should use cooling supply air distribution effectiveness"; Buildings.Controls.OBC.CDL.Interfaces.RealInput nOcc(final unit="1") "Number of occupants"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZon(final unit="K", quantity ="ThermodynamicTemperature") "Measured zone air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TDis(final unit="K", quantity ="ThermodynamicTemperature") "Measured discharge air temperature"; Buildings.Controls.OBC.CDL.Interfaces.IntegerInput uOpeMod "AHU operation mode status signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSupFan "Supply fan status, true if on, false if off"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWin "Window status, true if open, false if closed"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput VOutMinSet_flow( min=0, final unit="m3/s", quantity="VolumeFlowRate") "Effective minimum outdoor airflow setpoint"; protected Buildings.Controls.OBC.CDL.Continuous.Add breZon "Breathing zone airflow"; Buildings.Controls.OBC.CDL.Continuous.Add add2(final k1=+1, final k2=-1) "Zone space temperature minus supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Gain gai(final k=outAirPerPer) "Outdoor airflow rate per person"; Buildings.Controls.OBC.CDL.Logical.Switch swi "Switch for enabling occupancy sensor input"; Buildings.Controls.OBC.CDL.Logical.Switch swi1 "Switch between cooling or heating distribution effectiveness"; Buildings.Controls.OBC.CDL.Continuous.Division zonOutAirRate "Required zone outdoor airflow rate"; Buildings.Controls.OBC.CDL.Logical.Switch swi2 "If window is open or it is not in occupied mode, the required outdoor airflow rate should be zero"; Buildings.Controls.OBC.CDL.Logical.Switch swi3 "If supply fan is off, then outdoor airflow rate should be zero."; Buildings.Controls.OBC.CDL.Continuous.Hysteresis hys( uLow=uLow, uHigh=uHig, pre_y_start=true) "Check if cooling or heating air distribution effectiveness should be applied, with 1 degC deadband"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant occSen(final k= have_occSen) "Boolean constant to indicate if there is occupancy sensor"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zerOutAir(final k=0) "Zero required outdoor airflow rate when window open or zone is not in occupied mode"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant disEffHea(final k= zonDisEffHea) "Zone distribution effectiveness during heating"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant disEffCoo(final k= zonDisEffCoo) "Zone distribution effectiveness for cooling"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant breZonAre(final k= outAirPerAre*AFlo) "Area component of the breathing zone outdoor airflow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant breZonPop(final k= outAirPerPer*AFlo*occDen) "Population component of the breathing zone outdoor airflow"; Buildings.Controls.OBC.CDL.Integers.Equal intEqu1 "Check if operation mode is occupied"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant occMod(final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied) "Occupied mode index"; Buildings.Controls.OBC.CDL.Logical.And and1 "Logical and"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; equation connect(breZonAre.y, breZon.u1); connect(gai.y, swi.u1); connect(breZonPop.y, swi.u3); connect(swi.y, breZon.u2); connect(disEffCoo.y, swi1.u1); connect(disEffHea.y, swi1.u3); connect(breZon.y, zonOutAirRate.u1); connect(swi1.y, zonOutAirRate.u2); connect(uWin, swi2.u2); connect(zerOutAir.y, swi2.u1); connect(zonOutAirRate.y, swi2.u3); connect(swi.u2, occSen.y); connect(nOcc, gai.u); connect(swi3.y, VOutMinSet_flow); connect(TZon, add2.u1); connect(TDis, add2.u2); connect(add2.y, hys.u); connect(hys.y, swi1.u2); connect(swi2.y, swi3.u3); connect(zerOutAir.y, swi3.u1); connect(and1.y, not1.u); connect(not1.y, swi3.u2); connect(uSupFan, and1.u1); connect(intEqu1.y, and1.u2); connect(uOpeMod, intEqu1.u1); connect(occMod.y, intEqu1.u2); end OutsideAirFlow;

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.VAVSupply Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.VAVSupply

Supply air set point for single zone VAV system

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.SetPoints.VAVSupply

Information

Block that outputs the set points for the supply air temperature for cooling, heating and economizer control, and the fan speed for a single zone VAV system.

For the temperature set points, the parameters are the maximum supply air temperature TMax, and the minimum supply air temperature for cooling TMin. The deadband temperature is equal to the average set point for the zone temperature for heating and cooling, as obtained from the input TSetZon, constraint to be within 21°C (≈70 F) and 24°C (≈75 F). The setpoints are computed as shown in the figure below. Note that the setpoint for the supply air temperature for heating and for economizer control is the same, and this setpoint is lower than TMin when the heating loop signal is zero and the economizer is in cooling mode, as shown in the figure.

For the fan speed set point, the parameters are the maximu fan speed at heating yHeaMax, the minimum fan speed yMin and the maximum fan speed for cooling yCooMax. For a cooling control signal of yCoo > 0.25, the speed is faster increased the larger the difference is between the zone temperature minus outdoor temperature TZon-TOut. The figure below shows the sequence.

Image of set point reset

The output TCoo is to be used to control the cooling coil, and the output THeaEco is to be used to control the heating coil and the economizer dampers.

Note that the inputs uHea and uCoo must be computed based on the same temperature sensors and control loops

Parameters

TypeNameDefaultDescription
Temperatures
TemperatureTMax Maximum supply air temperature for heating [K]
TemperatureTMin Minimum supply air temperature for cooling [K]
Speed
RealyHeaMax Maximum fan speed for heating [1]
RealyMin Minimum fan speed [1]
RealyCooMax1Maximum fan speed for cooling [1]

Connectors

TypeNameDescription
input RealInputuHeaHeating control signal [1]
input RealInputuCooCooling control signal [1]
input RealInputTSetZonAverage of heating and cooling setpoints for zone temperature [K]
input RealInputTZonZone temperature [K]
input RealInputTOutOutdoor air temperature [K]
output RealOutputTHeaEcoTemperature setpoint for heating coil and for economizer [K]
output RealOutputTCooCooling supply air temperature setpoint [K]
output RealOutputyFan speed [1]

Modelica definition

block VAVSupply "Supply air set point for single zone VAV system" parameter Modelica.SIunits.Temperature TMax "Maximum supply air temperature for heating"; parameter Modelica.SIunits.Temperature TMin "Minimum supply air temperature for cooling"; parameter Real yHeaMax( min=0, max=1, unit="1") "Maximum fan speed for heating"; parameter Real yMin( min=0, max=1, unit="1") "Minimum fan speed"; parameter Real yCooMax( min=0, max=1, unit="1") = 1 "Maximum fan speed for cooling"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uHea( min=0, max=1, unit="1") "Heating control signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uCoo( min=0, max=1, unit="1") "Cooling control signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetZon(unit="K", displayUnit ="degC") "Average of heating and cooling setpoints for zone temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TZon(unit="K", displayUnit="degC") "Zone temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut(unit="K", displayUnit="degC") "Outdoor air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput THeaEco(unit="K", displayUnit="degC") "Temperature setpoint for heating coil and for economizer"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TCoo(unit="K", displayUnit="degC") "Cooling supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( min=0, max=1, unit="1") "Fan speed"; protected Buildings.Controls.OBC.CDL.Continuous.Line TSetCooHig "Table to compute the setpoint for cooling for uCoo = 0...1"; Buildings.Controls.OBC.CDL.Continuous.Line offSetTSetHea "Table to compute the setpoint offset for heating for uCoo = 0...1"; Buildings.Controls.OBC.CDL.Continuous.Add addTHe "Adder for heating setpoint calculation"; Buildings.Controls.OBC.CDL.Continuous.Line offSetTSetCoo "Table to compute the setpoint offset for cooling for uHea = 0...1"; Buildings.Controls.OBC.CDL.Continuous.Add addTCoo "Adder for cooling setpoint calculation"; Buildings.Controls.OBC.CDL.Continuous.Add dT(final k2=-1) "Difference zone minus outdoor temperature"; Buildings.Controls.OBC.CDL.Continuous.AddParameter yMed(p=yCooMax - (yMin - yCooMax)/(0.56 - 5.6)*5.6, k=(yMin - yCooMax)/(0.56 - 5.6)) "Fan speed at medium cooling load"; Buildings.Controls.SetPoints.Table yHea(final table=[0.5, yMin; 1, yHeaMax]) "Fan speed for heating"; Buildings.Controls.OBC.CDL.Continuous.Hysteresis yMinChe1(final uLow=0.2, final uHigh=0.3) "Check for cooling signal for fan speed"; Buildings.Controls.OBC.CDL.Logical.Switch switch1; Buildings.Controls.OBC.CDL.Continuous.Hysteresis yMinChe2(final uLow=0.45, final uHigh=0.55) "Check for cooling signal for fan speed"; Buildings.Controls.OBC.CDL.Logical.Switch switch2; Buildings.Controls.OBC.CDL.Continuous.Hysteresis yMinChe3(final uLow=0.7, final uHigh=0.8) "Check for cooling signal for fan speed"; Buildings.Controls.OBC.CDL.Logical.Switch switch3; Buildings.Controls.OBC.CDL.Continuous.Add add(final k1=-1); Buildings.Controls.OBC.CDL.Continuous.Add add1; Buildings.Controls.OBC.CDL.Continuous.Gain gain(final k=4); Buildings.Controls.OBC.CDL.Continuous.AddParameter yMed1(final p=2*yMin, final k=-yMin) "Fan speed at medium cooling load"; Buildings.Controls.OBC.CDL.Continuous.Gain gain1(final k=4); Buildings.Controls.OBC.CDL.Continuous.Product product; Buildings.Controls.OBC.CDL.Continuous.AddParameter yMed2(final p=-3*yCooMax, final k=4*yCooMax) "Fan speed at medium cooling load"; Buildings.Controls.OBC.CDL.Continuous.Product product1; Buildings.Controls.OBC.CDL.Continuous.Add add2(final k1=4, final k2=-1); Buildings.Controls.OBC.CDL.Continuous.Add add3; Buildings.Controls.OBC.CDL.Continuous.Limiter yMedLim(final uMax=yCooMax, final uMin=yMin) "Limiter for yMed"; Buildings.Controls.OBC.CDL.Continuous.Limiter TDea(uMax=24 + 273.15, uMin=21 + 273.15) "Limiter that outputs the dead band value for the supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Line TSetHeaHig "Block to compute the setpoint for heating for uHea = 0...1"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con0(final k=0) "Contant that outputs zero"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con25(final k=0.25) "Contant that outputs 0.25"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con05(final k=0.5) "Contant that outputs 0.5"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con75(final k=0.75) "Contant that outputs 0.75"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant conTMax(final k=TMax) "Constant that outputs TMax"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant conTMin(final k=TMin) "Constant that outputs TMin"; Buildings.Controls.OBC.CDL.Continuous.Add TDeaTMin(final k2=-1) "Outputs TDea-TMin"; Buildings.Controls.OBC.CDL.Continuous.AddParameter addTDea(final p=-1.1, final k=-1) "Adds constant offset"; Buildings.Controls.OBC.CDL.Continuous.Add TMaxTDea(final k2=-1) "Outputs TMax-TDea"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Logical not"; equation connect(offSetTSetHea.u, uCoo); connect(offSetTSetHea.y, addTHe.u2); connect(addTHe.y, THeaEco); connect(TSetCooHig.y, addTCoo.u1); connect(offSetTSetCoo.y, addTCoo.u2); connect(TSetCooHig.u, uCoo); connect(offSetTSetCoo.u, uHea); connect(addTCoo.y, TCoo); connect(dT.u1, TZon); connect(dT.u2, TOut); connect(dT.y, yMed.u); connect(yMinChe1.u, uCoo); connect(switch2.y, switch1.u3); connect(yMinChe2.u, uCoo); connect(yMinChe3.u, uCoo); connect(yMedLim.y, add.u1); connect(gain.u, uCoo); connect(gain.y, yMed1.u); connect(add.y, add1.u1); connect(yMed1.y, add1.u2); connect(add1.y, switch2.u1); connect(gain1.u, uCoo); connect(product.u1, yMedLim.y); connect(product.y, add.u2); connect(product.u2, gain.y); connect(yMedLim.y, add2.u1); connect(product1.y, add2.u2); connect(add2.y, add3.u1); connect(yMed2.y, add3.u2); connect(product1.u2, gain1.y); connect(product1.u1, yMedLim.y); connect(yMed2.u, uCoo); connect(add3.y, switch3.u3); connect(yHea.y, switch1.u1); connect(switch1.y, y); connect(yMedLim.y, switch3.u1); connect(yMedLim.u, yMed.y); connect(TDea.u, TSetZon); connect(con0.y, TSetHeaHig.x1); connect(TDea.y, TSetHeaHig.f1); connect(con05.y, TSetHeaHig.x2); connect(conTMax.y, TSetHeaHig.f2); connect(uHea, TSetHeaHig.u); connect(TSetHeaHig.y, addTHe.u1); connect(con0.y, offSetTSetHea.x1); connect(con25.y, offSetTSetHea.x2); connect(con0.y, offSetTSetHea.f1); connect(yHea.u, uHea); connect(TDea.y, TDeaTMin.u1); connect(conTMin.y, TDeaTMin.u2); connect(TDeaTMin.y, addTDea.u); connect(addTDea.y, offSetTSetHea.f2); connect(TSetCooHig.x1, con05.y); connect(TSetCooHig.f1, TDea.y); connect(TSetCooHig.x2, con75.y); connect(TSetCooHig.f2, conTMin.y); connect(offSetTSetCoo.f1, con0.y); connect(offSetTSetCoo.x1, con0.y); connect(offSetTSetCoo.x2, con05.y); connect(TMaxTDea.u1, conTMax.y); connect(TDea.y, TMaxTDea.u2); connect(TMaxTDea.y, offSetTSetCoo.f2); connect(yMinChe1.y, not1.u); connect(not1.y, switch1.u2); connect(yMinChe2.y, not2.u); connect(not2.y, switch2.u2); connect(yMinChe3.y, not3.u); connect(not3.y, switch3.u2); connect(switch3.y, switch2.u3); end VAVSupply;