Note that most validation models contain simple input data
which may not be realistic, but for which the correct
output can be obtained through an analytic solution.
The examples plot various outputs, which have been verified against these
solutions. These model outputs are stored as reference data and
used for continuous validation whenever models in the library change.
This model shows how to compose the subsequences to find the minimum outdoor
airflow setpoint of an AHU unit that serves three zones.
model OutdoorAirFlow
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.Zone
zon1(
AFlo=40,
have_winSen=false,
desZonPop=4,
minZonPriFlo=0.08) ;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.Zone
zon2(
AFlo=35,
desZonPop=4,
minZonPriFlo=0.08) ;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.Zone
zon3(
AFlo=30,
desZonPop=3,
minZonPriFlo=0.06) ;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.AHU
ahu1(VPriSysMax_flow=0.6, peaSysPop=12)
;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.SumZone
zonToAhu(
final numZon=3) ;
protected
Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFan(k=true)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp numOfOcc2(
duration=3600,
height=3)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp numOfOcc3(
duration=3600,
height=3,
startTime=900) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant winSta(k=false)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse winSta1(period=3600)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp numOfOcc4(
duration=3600,
startTime=900,
height=2) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TZon(
height=6,
offset=280.15,
duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TDis(
height=4,
duration=3600,
offset=281.15) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zonPriFloRat(k=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zonPriFloRat1(k=0.12)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zonPriFloRat2(k=0.09)
;
equation
connect(zon1.yDesZonPeaOcc,zonToAhu. uDesZonPeaOcc[1]);
connect(zon2.yDesZonPeaOcc,zonToAhu. uDesZonPeaOcc[2]);
connect(zon3.yDesZonPeaOcc,zonToAhu. uDesZonPeaOcc[3]);
connect(zon1.VDesPopBreZon_flow,zonToAhu. VDesPopBreZon_flow[1]);
connect(zon2.VDesPopBreZon_flow,zonToAhu. VDesPopBreZon_flow[2]);
connect(zon3.VDesPopBreZon_flow,zonToAhu. VDesPopBreZon_flow[3]);
connect(zon1.VDesAreBreZon_flow,zonToAhu. VDesAreBreZon_flow[1]);
connect(zon2.VDesAreBreZon_flow,zonToAhu. VDesAreBreZon_flow[2]);
connect(zon3.VDesAreBreZon_flow,zonToAhu. VDesAreBreZon_flow[3]);
connect(zon1.yDesPriOutAirFra,zonToAhu. uDesPriOutAirFra[1]);
connect(zon2.yDesPriOutAirFra,zonToAhu. uDesPriOutAirFra[2]);
connect(zon3.yDesPriOutAirFra,zonToAhu. uDesPriOutAirFra[3]);
connect(zon1.VUncOutAir_flow,zonToAhu. VUncOutAir_flow[1]);
connect(zon2.VUncOutAir_flow,zonToAhu. VUncOutAir_flow[2]);
connect(zon3.VUncOutAir_flow,zonToAhu. VUncOutAir_flow[3]);
connect(zon1.yPriOutAirFra,zonToAhu. uPriOutAirFra[1]);
connect(zon2.yPriOutAirFra,zonToAhu. uPriOutAirFra[2]);
connect(zon3.yPriOutAirFra,zonToAhu. uPriOutAirFra[3]);
connect(zon1.VPriAir_flow,zonToAhu. VPriAir_flow[1]);
connect(zon2.VPriAir_flow,zonToAhu. VPriAir_flow[2]);
connect(zon3.VPriAir_flow,zonToAhu. VPriAir_flow[3]);
connect(zonToAhu.ySumDesZonPop,ahu1. sumDesZonPop);
connect(zonToAhu.VSumDesPopBreZon_flow,ahu1. VSumDesPopBreZon_flow);
connect(zonToAhu.VSumDesAreBreZon_flow,ahu1. VSumDesAreBreZon_flow);
connect(zonToAhu.yDesSysVenEff,ahu1. uDesSysVenEff);
connect(zonToAhu.VSumUncOutAir_flow,ahu1. VSumUncOutAir_flow);
connect(zonToAhu.uOutAirFra_max,ahu1. uOutAirFra_max);
connect(zonToAhu.VSumSysPriAir_flow,ahu1. VSumSysPriAir_flow);
connect(ahu1.yAveOutAirFraPlu,zonToAhu. yAveOutAirFraPlu);
connect(supFan.y,ahu1. uSupFan);
connect(opeMod.y,ahu1. uOpeMod);
connect(ahu1.yReqOutAir, zon1.uReqOutAir);
connect(ahu1.yReqOutAir, zon2.uReqOutAir);
connect(ahu1.yReqOutAir, zon3.uReqOutAir);
connect(numOfOcc2.y,reaToInt1. u);
connect(numOfOcc3.y, reaToInt2.u);
connect(reaToInt1.y, zon1.nOcc);
connect(reaToInt2.y, zon2.nOcc);
connect(numOfOcc4.y, reaToInt3.u);
connect(reaToInt3.y, zon3.nOcc);
connect(winSta1.y, zon3.uWin);
connect(winSta.y, zon2.uWin);
connect(TZon.y, zon1.TZon);
connect(TZon.y, zon2.TZon);
connect(TZon.y, zon3.TZon);
connect(TDis.y, zon1.TDis);
connect(TDis.y, zon2.TDis);
connect(TDis.y, zon3.TDis);
connect(zonPriFloRat2.y, zon3.VDis_flow);
connect(zonPriFloRat1.y, zon2.VDis_flow);
connect(zonPriFloRat.y, zon1.VDis_flow);
connect(ahu1.VDesUncOutAir_flow, zon1.VUncOut_flow_nominal);
connect(ahu1.VDesUncOutAir_flow, zon2.VUncOut_flow_nominal);
connect(ahu1.VDesUncOutAir_flow, zon3.VUncOut_flow_nominal);
end OutdoorAirFlow;