Buildings.Templates.AirHandlersFans.Components.Controls

Controllers

Information

All control blocks that form the control sequence of a system are instantiated into one single class, a so-called control section. This package contains such control sections.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone G36VAVMultiZone Guideline 36 controller
Buildings.Templates.AirHandlersFans.Components.Controls.OpenLoop OpenLoop Open loop controller

Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone

Guideline 36 controller

Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone

Information

Description

This is an implementation of the control sequence specified in ASHRAE (2021) for multiple-zone VAV air handlers. It contains the following components.

Details

The AI point for the measured outdoor air flow rate ctl.VOut_flow used for minimum outdoor airflow control is connected to both bus.VOutMin_flow (dedicated minimum OA damper) and bus.VOut_flow (single common OA damper). Those two variables are exclusive from one another. In case of dedicated OA dampers, the total outdoor airflow is not measured, hence no bus.VOut_flow signal is available for that configuration.

References

Extends from Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone (Interface class for multiple-zone VAV controller).

Parameters

TypeNameDefaultDescription
IntegernZon Number of served zones
VAVMultiZoneControllerdatredeclare Buildings.Template...Design and operating parameters
Booleanhave_freProtrueSet to true to include freeze protection
FreezeStattypFreStaBuildings.Controls.OBC.ASHRA...Option for low limit (freeze) protection
Configuration
ControllertypBuildings.Templates.AirHandl...Type of controller
ControlFanReturntypCtlFanRetBuildings.Templates.AirHandl...Return fan control type
Booleanhave_CO2SenfalseSet to true if there are zones with CO2 sensor
StringidZon[nZon] Zone (or terminal unit) names
StringnamGro[:] Name of zone groups
StringnamGroZon[nZon] Name of group which each zone belongs to
Booleanhave_perZonRehBoxfalseSet to true if there are any VAV-reheat boxes on perimeter zones
Economizer
ControlEconomizertypCtlEcoBuildings.Controls.OBC.ASHRA...Economizer control type
Booleanuse_TMixtrueSet to true if mixed air temperature measurement is enabled

Connectors

TypeNameDescription
BusbusAHU control bus
BusbusTer[nZon]Terminal unit control bus

Modelica definition

block G36VAVMultiZone "Guideline 36 controller" extends Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone ( final typ=Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone); parameter String idZon[nZon] "Zone (or terminal unit) names"; parameter String namGro[:] "Name of zone groups"; parameter String namGroZon[nZon] "Name of group which each zone belongs to"; final parameter Integer nGro(final min=1)= size(namGro, 1) "Number of zone groups"; final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone ashCliZon= datAll.ashCliZon "ASHRAE climate zone"; final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone tit24CliZon= datAll.tit24CliZon "California Title 24 climate zone"; final parameter Boolean isZonInGro[nGro, nZon]= {{namGro[i]==namGroZon[j] for j in 1:nZon} for i in 1:nGro} "True if zone belongs to group"; final parameter Integer isZonInGroInt[nGro, nZon]= {{if isZonInGro[i, j] then 1 else 0 for j in 1:nZon} for i in 1:nGro} "1 if zone belongs to group, 0 otherwise"; final parameter Integer isZonInGroIntTra[nZon, nGro]= {{isZonInGroInt[i, j] for i in 1:size(isZonInGroInt, 1)} for j in 1:size(isZonInGroInt, 2)} "Transpose of isZonInGroInt: 1 if zone belongs to group, 0 otherwise"; final parameter Integer nZonPerGro[nGro](each final min=1) = { sum(isZonInGroInt[i]) for i in 1:nGro} "Number of zones that each group contains"; parameter Boolean have_perZonRehBox=false "Set to true if there are any VAV-reheat boxes on perimeter zones"; /* * Parameters for Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller */ final parameter Modelica.Units.SI.VolumeFlowRate VOutUnc_flow_nominal= dat.VOutUnc_flow_nominal "Uncorrected design outdoor air flow rate, including diversity where applicable"; final parameter Modelica.Units.SI.VolumeFlowRate VOutTot_flow_nominal= dat.VOutTot_flow_nominal "Design total outdoor air flow rate"; final parameter Modelica.Units.SI.VolumeFlowRate VOutAbsMin_flow_nominal= dat.VOutAbsMin_flow_nominal "Design outdoor air flow rate when all zones with CO2 sensors or occupancy sensors are unpopulated"; final parameter Modelica.Units.SI.VolumeFlowRate VOutMin_flow_nominal= dat.VOutMin_flow_nominal "Design minimum outdoor air flow rate when all zones are occupied at their design population, including diversity"; final parameter Modelica.Units.SI.PressureDifference dpDamOutMinAbs= dat.dpDamOutMinAbs "Differential pressure across the minimum outdoor air damper that provides the absolute minimum outdoor airflow"; final parameter Modelica.Units.SI.PressureDifference dpDamOutMin_nominal= dat.dpDamOutMin_nominal "Differential pressure across the minimum outdoor air damper that provides the design minimum outdoor airflow"; final parameter Modelica.Units.SI.PressureDifference pAirSupSet_rel_max= dat.pAirSupSet_rel_max "Maximum supply duct static pressure setpoint"; final parameter Modelica.Units.SI.PressureDifference pAirRetSet_rel_min= dat.pAirRetSet_rel_min "Return fan minimum discharge static pressure setpoint"; final parameter Modelica.Units.SI.PressureDifference pAirRetSet_rel_max= dat.pAirRetSet_rel_max "Return fan maximum discharge static pressure setpoint"; final parameter Real yFanSup_min= dat.yFanSup_min "Lowest allowed fan speed if fan is on"; final parameter Modelica.Units.SI.Temperature TAirSupSet_min( displayUnit="degC")=dat.TAirSupSet_min "Lowest supply air temperature setpoint"; final parameter Modelica.Units.SI.Temperature TAirSupSet_max( displayUnit="degC")=dat.TAirSupSet_max "Highest supply air temperature setpoint"; final parameter Modelica.Units.SI.Temperature TOutRes_min( displayUnit="degC")=dat.TOutRes_min "Lowest value of the outdoor air temperature reset range"; final parameter Modelica.Units.SI.Temperature TOutRes_max( displayUnit="degC")=dat.TOutRes_max "Highest value of the outdoor air temperature reset range"; final parameter Real yFanRel_min= dat.yFanRel_min "Minimum relief fan speed"; final parameter Real yFanRet_min= dat.yFanRet_min "Minimum return fan speed"; final parameter Modelica.Units.SI.VolumeFlowRate dVFanRet_flow= dat.dVFanRet_flow "Airflow differential between supply and return fans to maintain building pressure at setpoint"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller ctl( final eneStd=stdEne, final venStd=stdVen, final ashCliZon=ashCliZon, final tit24CliZon=tit24CliZon, final have_frePro=have_frePro, final freSta=typFreSta, final minOADes=typSecOut, final buiPreCon=buiPreCon, final ecoHigLimCon=typCtlEco, final have_hotWatCoi=coiHeaPre.typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating or coiHeaReh.typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating, final have_eleHeaCoi=coiHeaPre.typ==Buildings.Templates.Components.Types.Coil.ElectricHeating or coiHeaReh.typ==Buildings.Templates.Components.Types.Coil.ElectricHeating, final have_perZonRehBox=have_perZonRehBox, final VUncDesOutAir_flow=VOutUnc_flow_nominal, final VDesTotOutAir_flow=VOutTot_flow_nominal, final VAbsOutAir_flow=VOutAbsMin_flow_nominal, final VDesOutAir_flow=VOutAbsMin_flow_nominal, final pMaxSet=pAirSupSet_rel_max, final supFanSpe_min=yFanSup_min, final retFanSpe_min=yFanRet_min, final TSupCoo_min=TAirSupSet_min, final TSupCoo_max=TAirSupSet_max, final TOut_min=TOutRes_min, final TOut_max=TOutRes_max, final have_CO2Sen=have_CO2Sen, final dpAbsMinOutDam=dpDamOutMinAbs, final dpDesMinOutDam=dpDamOutMin_nominal, final difFloSet=dVFanRet_flow, final p_rel_RetFan_min=pAirRetSet_rel_min, final p_rel_RetFan_max=pAirRetSet_rel_max) "AHU controller"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.ASHRAE62_1.SumZone aggZonVen_A621( final nZon=nZon, final nGro=nGro, final zonGroMat=isZonInGroInt, final zonGroMatTra=isZonInGroIntTra) if stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1 "Aggregate zone level ventilation signals - ASHRAE 62.1"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.Title24.SumZone aggZonVen_T24( final nZon=nZon, final nGro=nGro, final zonGroMat=isZonInGroInt, final have_CO2Sen=have_CO2Sen) if stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 "Aggregate zone level ventilation signals - California Title 24"; Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneStatusDuplicator repSigZon( final nZon=nZon, final nZonGro=nGro) "Replicate zone signals"; Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.GroupStatus staGro[nGro]( final nBuiZon=fill(nZon, nGro), final nGroZon=nZonPerGro, final zonGroMsk=isZonInGro) "Evaluate zone group status"; Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.OperationMode opeModSel[nGro]( final nZon=nZonPerGro) "Operation mode selection for each zone group"; Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator TAirSupSet( final nout=nZon) "Pass signal to terminal unit bus"; Buildings.Controls.OBC.CDL.Integers.MultiSum reqZonTemRes( final nin=nZon, final k=fill(1, nZon)) "Sum up signals"; Buildings.Controls.OBC.CDL.Integers.MultiSum reqZonPreRes( final nin=nZon, final k=fill(1, nZon)) "Sum up signals"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant u1FreSta(k=false) "RFE: Freezestat and freezestat reset are currently not modeled"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant u1SofSwiRes(k=false) "RFE: Freezestat and freezestat reset are currently not modeled"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator y1FanSup_actual( final nout=nZon) "Pass signal to terminal unit bus"; Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator TAirSup( final nout=nZon) "Pass signal to terminal unit bus"; Buildings.Controls.OBC.CDL.Routing.IntegerVectorReplicator intVecRep( final nin=nGro, final nout=nZon) "Repeat group signal nZon times"; Buildings.Controls.OBC.CDL.Integers.MultiSum asgOpeMod[nZon]( each final nin=nGro, final k=isZonInGroIntTra) "Assign group operating mode to each zone belonging to group"; Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneGroupSystem ahuMod( final nGro=nGro) "Compute the AHU operating mode"; equation /* Control point connection - start */ // Inputs from AHU bus connect(bus.pAirSup_rel, ctl.dpDuc); connect(bus.TOut, ctl.TOut); connect(bus.TAirSup, ctl.TAirSup); connect(bus.VOut_flow, ctl.VAirOut_flow); connect(bus.VOutMin_flow, ctl.VAirOut_flow); connect(bus.dpAirOutMin, ctl.dpMinOutDam); connect(bus.hAirOut, ctl.hAirOut); connect(bus.TAirRet, ctl.TAirRet); connect(bus.hAirRet, ctl.hAirRet); connect(bus.pBui_rel, ctl.dpBui); connect(bus.TAirMix, ctl.TAirMix); connect(bus.fanSup.y1_actual, ctl.u1SupFan); connect(bus.fanRel.y1_actual, ctl.u1RelFan); connect(bus.fanSup.V_flow, ctl.VAirSup_flow); connect(bus.fanRet.V_flow, ctl.VAirRet_flow); connect(bus.coiCoo.y_actual, ctl.uCooCoi_actual); connect(bus.coiHea.y_actual, ctl.uHeaCoi_actual); connect(bus.fanSup.y1_actual, y1FanSup_actual.u); connect(bus.TAirSup, TAirSup.u); // Inputs from terminal bus connect(busTer.yReqZonPreRes, reqZonPreRes.u); connect(busTer.yReqZonTemRes, reqZonTemRes.u); connect(busTer.VAdjPopBreZon_flow, aggZonVen_A621.VAdjPopBreZon_flow); connect(busTer.VAdjAreBreZon_flow, aggZonVen_A621.VAdjAreBreZon_flow); connect(busTer.VAirDis_flow, aggZonVen_A621.VZonPri_flow); connect(busTer.VMinOA_flow, aggZonVen_A621.VMinOA_flow); connect(busTer.VZonAbsMin_flow, aggZonVen_T24.VZonAbsMin_flow); connect(busTer.VZonDesMin_flow, aggZonVen_T24.VZonDesMin_flow); connect(busTer.yCO2, aggZonVen_T24.uCO2); connect(busTer.y1OveOccZon, repSigZon.zonOcc); connect(busTer.y1OccSch, repSigZon.u1Occ); connect(busTer.tNexOcc, repSigZon.tNexOcc); connect(busTer.yCooTim, repSigZon.uCooTim); connect(busTer.yWarTim, repSigZon.uWarTim); connect(busTer.yOccHeaHig, repSigZon.u1OccHeaHig); connect(busTer.yHigOccCoo, repSigZon.u1HigOccCoo); connect(busTer.yUnoHeaHig, repSigZon.u1UnoHeaHig); connect(busTer.TZonHeaUnoSet, repSigZon.THeaSetOff); connect(busTer.yEndSetBac, repSigZon.u1EndSetBac); connect(busTer.yHigUnoCoo, repSigZon.u1HigUnoCoo); connect(busTer.TZonCooUnoSet, repSigZon.TCooSetOff); connect(busTer.yEndSetUp, repSigZon.u1EndSetUp); connect(busTer.TZon, repSigZon.TZon); connect(busTer.y1Win, repSigZon.u1Win); // Outputs to AHU bus connect(ctl.yMinOutDam, bus.damOutMin.y); connect(ctl.y1MinOutDam, bus.damOutMin.y1); connect(ctl.yRetDam, bus.damRet.y); connect(ctl.yRelDam, bus.damRel.y); connect(ctl.yOutDam, bus.damOut.y); connect(ctl.y1EneCHWPum, bus.y1PumChiWat); connect(ctl.y1SupFan, bus.fanSup.y1); connect(ctl.ySupFan, bus.fanSup.y); connect(ctl.y1RetFan, bus.fanRet.y1); connect(ctl.yRetFan, bus.fanRet.y); connect(ctl.y1RelFan, bus.fanRel.y1); connect(ctl.yRelFan, bus.fanRel.y); connect(ctl.yCooCoi, bus.coiCoo.y); connect(ctl.yHeaCoi, bus.coiHea.y); connect(ctl.yAla, bus.ala); connect(ctl.yChiWatResReq, bus.reqChiWatRes); connect(ctl.yChiPlaReq, bus.reqChiWatPla); connect(ctl.yHotWatResReq, bus.reqHeaWatRes); connect(ctl.yHotWatPlaReq, bus.reqHeaWatPla); // Outputs to terminal unit bus connect(TAirSupSet.y, busTer.TAirSupSet); connect(TAirSup.y, busTer.TAirSup); connect(y1FanSup_actual.y, busTer.y1FanSup_actual); /* Control point connection - stop */ connect(staGro.uGroOcc, opeModSel.u1Occ); connect(staGro.nexOcc, opeModSel.tNexOcc); connect(staGro.yCooTim, opeModSel.maxCooDowTim); connect(staGro.yWarTim, opeModSel.maxWarUpTim); connect(staGro.yOccHeaHig, opeModSel.u1OccHeaHig); connect(staGro.yHigOccCoo, opeModSel.u1HigOccCoo); connect(staGro.yEndSetBac, opeModSel.u1EndSetBac); connect(staGro.TZonMin, opeModSel.TZonMin); connect(staGro.yHotZon, opeModSel.totHotZon); connect(staGro.ySetUp, opeModSel.u1SetUp); connect(staGro.yEndSetUp, opeModSel.u1EndSetUp); connect(staGro.yOpeWin, opeModSel.uOpeWin); connect(reqZonTemRes.y,ctl. uZonTemResReq); connect(reqZonPreRes.y,ctl. uZonPreResReq); connect(repSigZon.y1ZonOcc, staGro.zonOcc); connect(repSigZon.y1Occ, staGro.u1Occ); connect(repSigZon.ytNexOcc, staGro.tNexOcc); connect(repSigZon.yCooTim, staGro.uCooTim); connect(repSigZon.yWarTim, staGro.uWarTim); connect(repSigZon.y1OccHeaHig, staGro.u1OccHeaHig); connect(repSigZon.y1HigOccCoo, staGro.u1HigOccCoo); connect(repSigZon.y1UnoHeaHig, staGro.u1UnoHeaHig); connect(repSigZon.yTHeaSetOff, staGro.THeaSetOff); connect(repSigZon.y1EndSetBac, staGro.u1EndSetBac); connect(repSigZon.y1HigUnoCoo, staGro.u1HigUnoCoo); connect(repSigZon.yTCooSetOff, staGro.TCooSetOff); connect(repSigZon.y1EndSetUp, staGro.u1EndSetUp); connect(repSigZon.yTZon, staGro.TZon); connect(repSigZon.y1Win, staGro.u1Win); connect(staGro.yColZon, opeModSel.totColZon); connect(staGro.ySetBac, opeModSel.u1SetBac); connect(aggZonVen_A621.VSumAdjPopBreZon_flow, ctl.VSumAdjPopBreZon_flow); connect(aggZonVen_A621.VSumAdjAreBreZon_flow, ctl.VSumAdjAreBreZon_flow); connect(aggZonVen_A621.VSumZonPri_flow, ctl.VSumZonPri_flow); connect(aggZonVen_A621.uOutAirFra_max, ctl.uOutAirFra_max); connect(aggZonVen_T24.VSumZonAbsMin_flow, ctl.VSumZonAbsMin_flow); connect(aggZonVen_T24.VSumZonDesMin_flow, ctl.VSumZonDesMin_flow); connect(aggZonVen_T24.yMaxCO2, ctl.uCO2Loo_max); connect(ctl.TAirSupSet, TAirSupSet.u); connect(opeModSel.yOpeMod, aggZonVen_A621.uOpeMod); connect(opeModSel.yOpeMod, aggZonVen_T24.uOpeMod); connect(opeModSel.yOpeMod, intVecRep.u); connect(asgOpeMod.y, busTer.yOpeMod); connect(intVecRep.y, asgOpeMod.u); connect(opeModSel.yOpeMod, ahuMod.uOpeMod); connect(ahuMod.yAhuOpeMod, ctl.uAhuOpeMod); connect(u1FreSta.y, ctl.u1FreSta); connect(u1SofSwiRes.y, ctl.u1SofSwiRes); end G36VAVMultiZone;

Buildings.Templates.AirHandlersFans.Components.Controls.OpenLoop Buildings.Templates.AirHandlersFans.Components.Controls.OpenLoop

Open loop controller

Buildings.Templates.AirHandlersFans.Components.Controls.OpenLoop

Information

This is an open loop controller providing control inputs for the templates within Buildings.Templates.AirHandlersFans. It is mainly used for testing purposes.

Extends from Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone (Interface class for multiple-zone VAV controller).

Parameters

TypeNameDefaultDescription
IntegernZon Number of served zones
VAVMultiZoneControllerdatredeclare Buildings.Template...Design and operating parameters
Booleanhave_freProtrueSet to true to include freeze protection
FreezeStattypFreStaBuildings.Controls.OBC.ASHRA...Option for low limit (freeze) protection
Configuration
ControllertypBuildings.Templates.AirHandl...Type of controller
ControlFanReturntypCtlFanRetBuildings.Templates.AirHandl...Return fan control type
Booleanhave_CO2SenfalseSet to true if there are zones with CO2 sensor
Economizer
ControlEconomizertypCtlEcoBuildings.Controls.OBC.ASHRA...Economizer control type
Booleanuse_TMixtrueSet to true if mixed air temperature measurement is enabled

Connectors

TypeNameDescription
BusbusAHU control bus
BusbusTer[nZon]Terminal unit control bus

Modelica definition

block OpenLoop "Open loop controller" extends Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone ( final typ=Buildings.Templates.AirHandlersFans.Types.Controller.OpenLoop); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yDamOut(k=1) if secOutRel.typDamOut == Buildings.Templates.Components.Types.Damper.Modulating; Buildings.Controls.OBC.CDL.Logical.Sources.Constant yDamOut1(k=true) if secOutRel.typDamOut == Buildings.Templates.Components.Types.Damper.TwoPosition; Buildings.Controls.OBC.CDL.Reals.Sources.Constant yDamOutMin(k=1) if secOutRel.typDamOutMin == Buildings.Templates.Components.Types.Damper.Modulating; Buildings.Controls.OBC.CDL.Logical.Sources.Constant yDamOutMin1(k=true) if secOutRel.typDamOutMin == Buildings.Templates.Components.Types.Damper.TwoPosition; Buildings.Controls.OBC.CDL.Reals.Sources.Constant yDamRet(k=1); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yDamRel(k=1) if secOutRel.typDamRel == Buildings.Templates.Components.Types.Damper.Modulating; Buildings.Controls.OBC.CDL.Logical.Sources.Constant yDamRel1(k=true) if secOutRel.typDamRel == Buildings.Templates.Components.Types.Damper.TwoPosition; Buildings.Controls.OBC.CDL.Reals.Sources.Constant yCoiCoo(k=1) if coiCoo.typ == Buildings.Templates.Components.Types.Coil.WaterBasedCooling or coiCoo.typ == Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed; Buildings.Controls.OBC.CDL.Integers.Sources.Constant yCoiCooSta(k=1) if coiCoo.typ == Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage; Buildings.Controls.OBC.CDL.Reals.Sources.Constant yFanSup(k=1); Buildings.Controls.OBC.CDL.Logical.Sources.Constant y1FanSup(k=true); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yCoiHea(k=1); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yFanRet(k=1); Buildings.Controls.OBC.CDL.Logical.Sources.Constant y1FanRet(k=true); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yFanRel(k=1); Buildings.Controls.OBC.CDL.Logical.Sources.Constant y1FanRel(k=true); equation /* Control point connection - start */ connect(yCoiCoo.y, bus.coiCoo.y); connect(yCoiHea.y, bus.coiHea.y); connect(yCoiCooSta.y, bus.coiCoo.y); connect(y1FanSup.y, bus.fanSup.y1); connect(yFanSup.y, bus.fanSup.y); connect(y1FanRel.y, bus.fanRel.y1); connect(yFanRel.y, bus.fanRel.y); connect(y1FanRet.y, bus.fanRet.y1); connect(yFanRet.y, bus.fanRet.y); connect(yDamOut.y, bus.damOut.y); connect(yDamOut1.y, bus.damOut.y1); connect(yDamOutMin.y, bus.damOutMin.y); connect(yDamOutMin1.y, bus.damOutMin.y1); connect(yDamRel.y, bus.damRel.y); connect(yDamRel1.y, bus.damRel.y1); connect(yDamRet.y, bus.damRet.y); /* Control point connection - stop */ end OpenLoop;