Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.
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.
Package Content
Name |
Description |
CoolingCoil
|
Validation of cooling coil model |
FreezeProtection
|
Validate model for implementing freeze protection |
ModeAndSetPoints
|
Validate block for specifying zone mode and setpoints |
PlantRequests
|
Validate model for calculating the plant requests |
ReliefDamper
|
Validation of relief damper control |
ReliefFan
|
Validate model for controlling relief fan |
ReliefFanGroup
|
Validate model for calculating relief fans control |
ReturnFan
|
Validation of return fan control |
Supply_T
|
Validation model for outdoor minus room air temperature |
Supply_u
|
Validation model for temperature and fan speed |
Validation of cooling coil model
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.CoolingCoil.
Modelica definition
model CoolingCoil
final parameter Real TSupSet(
final unit="K",
final displayUnit="degC",
final quantity="ThermodynamicTemperature")=291.15
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.CoolingCoil cooCoi(
final controllerTypeCooCoi=Buildings.Controls.OBC.CDL.Types.SimpleController.P,
final kCooCoi=1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup(
final height=4,
final offset=TSupSet - 2,
final duration=3600*8) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupSetSig(
final k=TSupSet)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanStatus(
final k=true)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse zonSta(
final offset=2,
final period=3600*2)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt
;
equation
connect(TSup.y, cooCoi.TAirSup);
connect(TSupSetSig.y, cooCoi.TSupCooSet);
connect(fanStatus.y, cooCoi.u1SupFan);
connect(zonSta.y, reaToInt.u);
connect(reaToInt.y, cooCoi.uZonSta);
end CoolingCoil;
Validate model for implementing freeze protection
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection
for air handling unit serving single zone.
Modelica definition
model FreezeProtection
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection
frePro(
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper, freSta=
Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp outDamPos(
final height=0.5,
final offset=0.1,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPosMin(
final k=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp heaCoiPos(
final height=0.49,
final offset=0.5,
final duration=3000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp retDamPos(
final height=0.2,
final offset=0.7,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse freRes(
final width=0.95,
final period=3600)
;
Buildings.Controls.OBC.CDL.Logical.Not not1
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supFanSpe(
final height=0.2,
final offset=0.5,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp cooCoiPos(
final height=0.2,
final offset=0.5,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supTem(
final height=-4,
final offset=273.15 + 6,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp mixTem(
final height=-5,
final offset=273.15 + 8,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr(
final t=0.05)
;
equation
connect(freRes.y, not1.u);
connect(outDamPosMin.y,frePro. uOutDamPosMin);
connect(outDamPos.y, frePro.uOutDam);
connect(heaCoiPos.y,frePro. uHeaCoi);
connect(retDamPos.y, frePro.uRetDam);
connect(supTem.y, frePro.TAirSup);
connect(not1.y, frePro.u1SofSwiRes);
connect(supFanSpe.y, frePro.uSupFan);
connect(cooCoiPos.y,frePro. uCooCoi);
connect(mixTem.y, frePro.TAirMix);
connect(supFanSpe.y, greThr.u);
connect(greThr.y, frePro.u1SupFan);
end FreezeProtection;
Validate block for specifying zone mode and setpoints
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints.
Modelica definition
model ModeAndSetPoints
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints
modSetPoi(
final have_winSen=false,
final have_occSen=true,
have_locAdj=true,
sepAdj=true,
ignDemLim=false) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine cooSetAdj(
final freqHz=1/28800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine heaSetAdj(
final freqHz=1/28800,
final amplitude=0.5)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant cooDemLimLev(
final k=0)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant heaDemLimLev(
final k=0)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse winSta(
final period=14400,
final shift=1200)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse occSta(
final period=14400,
final width=0.95)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zerAdj(
final k=0) ;
Buildings.Controls.OBC.CDL.Continuous.Switch swi1
;
Buildings.Controls.OBC.CDL.Continuous.Switch swi2
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooDowTim(
final k=1800)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant warUpTim(
final k=1800)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp ramp2(
final offset=0,
final height=6.2831852,
final duration=24*3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sin sin2
;
Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(
final k=12.5)
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter zonTem(
final p=273.15 + 22.5)
;
Buildings.Controls.SetPoints.OccupancySchedule occSch ;
CDL.Continuous.Sources.Constant THeaSetOcc(
final k=
293.15) ;
CDL.Continuous.Sources.Constant TCooSetOcc(
final k=
297.15) ;
CDL.Continuous.Sources.Constant THeaSetUno(
final k=
285.15) ;
CDL.Continuous.Sources.Constant TCooSetUno(
final k=
303.15) ;
equation
connect(winSta.y, swi2.u2);
connect(winSta.y, swi1.u2);
connect(zerAdj.y, swi2.u1);
connect(zerAdj.y, swi1.u1);
connect(cooSetAdj.y, swi2.u3);
connect(heaSetAdj.y, swi1.u3);
connect(cooDowTim.y, modSetPoi.cooDowTim);
connect(warUpTim.y, modSetPoi.warUpTim);
connect(ramp2.y, sin2.u);
connect(sin2.y, gai.u);
connect(gai.y, zonTem.u);
connect(zonTem.y, modSetPoi.TZon);
connect(occSch.tNexOcc, modSetPoi.tNexOcc);
connect(occSch.occupied, modSetPoi.u1Occ);
connect(swi2.y, modSetPoi.cooSetAdj);
connect(swi1.y, modSetPoi.heaSetAdj);
connect(occSta.y, modSetPoi.u1OccSen);
connect(cooDemLimLev.y, modSetPoi.uCooDemLimLev);
connect(heaDemLimLev.y, modSetPoi.uHeaDemLimLev);
connect(THeaSetOcc.y,modSetPoi.TOccHeaSet);
connect(TCooSetOcc.y,modSetPoi.TOccCooSet);
connect(TCooSetUno.y,modSetPoi.TUnoCooSet);
connect(THeaSetUno.y,modSetPoi.TUnoHeaSet);
end ModeAndSetPoints;
Validate model for calculating the plant requests
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests
for air handling unit serving single zone.
Modelica definition
model PlantRequests
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests
plaReq
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests
plaReq1(
final have_hotWatCoi=false) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supTem(
final height=8,
final offset=273.15 + 15,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supTemSet(
final height=6,
final offset=273.15 + 14.5,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp cooCoi(
final height=-0.3,
final offset=0.96,
final duration=3600,
startTime=1000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp heaCoi(
final height=-0.3,
final offset=0.96,
final duration=3600,
startTime=1000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supTem1(
final height=8,
final offset=273.15 + 12,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supTemSet1(
final height=15,
final offset=273.15 + 20,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooCoi1(
final k=0) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supTem2(
final height=7,
final offset=273.15 + 13,
final duration=3600) ;
equation
connect(supTem.y, plaReq1.TAirSup);
connect(cooCoi.y, plaReq1.uCooCoi_actual);
connect(supTem1.y, plaReq.TAirSup);
connect(cooCoi1.y, plaReq.uCooCoi_actual);
connect(heaCoi.y, plaReq.uHeaCoi_actual);
connect(supTemSet1.y, plaReq.TSupCoo);
connect(supTemSet.y, plaReq1.TSupCoo);
connect(supTem2.y, plaReq.TSupHeaEco);
end PlantRequests;
Validation of relief damper control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefDamper.
Modelica definition
Validate model for controlling relief fan
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan
for controlling relief fan that is part of AHU.
Modelica definition
model ReliefFan
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan
relFanCon(
final k=0.5) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan
relFanCon1 ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan
relFanCon2 ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan(
final width=0.8,
final period=3600)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp dpBui(
final height=40,
final offset=0,
final duration=1800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp dpBui1(
final height=-15,
final offset=20,
final duration=1800,
startTime=1800)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFan1(
final k=true)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp dpBui2(
final height=3,
final offset=11,
final duration=1800)
;
equation
connect(dpBui.y, relFanCon1.dpBui);
connect(dpBui1.y, relFanCon2.dpBui);
connect(supFan.y, relFanCon.u1SupFan);
connect(supFan1.y, relFanCon1.u1SupFan);
connect(supFan1.y, relFanCon2.u1SupFan);
connect(dpBui2.y, relFanCon.dpBui);
end ReliefFan;
Validate model for calculating relief fans control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup
for relief fans for systems with multiple zones.
Modelica definition
model ReliefFanGroup
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup
relFanCon(
final k=0.5) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup
relFanCon1 ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup
relFanCon2 ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan1(
final width=1,
final period=4000)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp dpBui(
final height=40,
final offset=0,
final duration=1800) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan2(
final width=1,
final period=4000,
shift=600) ;
Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr[4](
final t=
fill(0.01, 4))
;
Buildings.Controls.OBC.CDL.Logical.Pre pre[4] ;
Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr1[4](
final t=
fill(0.01, 4))
;
Buildings.Controls.OBC.CDL.Logical.Pre pre1[4] ;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt[4](
final k=
fill(0, 4)) ;
Buildings.Controls.OBC.CDL.Integers.Sources.Pulse intPul(
final amplitude=2,
final period=3600,
final offset=0) ;
Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol[4](
final samplePeriod=
fill(20, 4))
;
Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol1[4](
final samplePeriod=
fill(20, 4))
;
Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr2[4](
final t=
fill(0.01, 4))
;
Buildings.Controls.OBC.CDL.Logical.Pre pre2[4] ;
Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol2[4](
final samplePeriod=
fill(20, 4))
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp dpBui1(
final height=-15,
final offset=20,
final duration=1800,
startTime=1800)
;
equation
connect(dpBui.y, relFanCon.dpBui);
connect(dpBui.y, relFanCon1.dpBui);
connect(greThr.y, pre.u);
connect(supFan1.y, relFanCon.u1SupFan[1]);
connect(supFan2.y, relFanCon.u1SupFan[2]);
connect(supFan1.y, relFanCon1.u1SupFan[1]);
connect(supFan2.y, relFanCon1.u1SupFan[2]);
connect(pre.y, relFanCon.u1RelFan);
connect(greThr1.y, pre1.u);
connect(pre1.y, relFanCon1.u1RelFan);
connect(conInt.y, relFanCon.uRelFanAla);
connect(conInt[1].y, relFanCon1.uRelFanAla[2]);
connect(conInt[2].y, relFanCon1.uRelFanAla[3]);
connect(conInt[3].y, relFanCon1.uRelFanAla[4]);
connect(intPul.y, relFanCon1.uRelFanAla[1]);
connect(relFanCon.yRelFan, zerOrdHol.u);
connect(zerOrdHol.y, greThr.u);
connect(relFanCon1.yRelFan, zerOrdHol1.u);
connect(zerOrdHol1.y, greThr1.u);
connect(greThr2.y,pre2. u);
connect(pre2.y,relFanCon2.u1RelFan);
connect(relFanCon2.yRelFan, zerOrdHol2.u);
connect(zerOrdHol2.y,greThr2. u);
connect(dpBui1.y, relFanCon2.dpBui);
connect(supFan1.y, relFanCon2.u1SupFan[1]);
connect(supFan2.y, relFanCon2.u1SupFan[2]);
connect(conInt.y, relFanCon2.uRelFanAla);
end ReliefFanGroup;
Validation of return fan control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReturnFan.
Modelica definition
Validation model for outdoor minus room air temperature
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply
for a change in temperature difference between zone air and outdoor air.
Hence, this model validates whether the adjustment of the fan speed for medium
cooling load is correctly implemented.
Modelica definition
model Supply_T
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV(
final TSup_max=303.15,
final TSup_min=289.15,
final TSupDew_max=292.15,
final maxHeaSpe=0.7,
final maxCooSpe=0.9,
final minSpe=0.3)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant uHea(k=0)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant uCoo(k=0.6)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TOut(
final duration=3600,
final height=18,
final offset=273.15 + 10) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZon(
final k=273.15 + 22) ;
Buildings.Controls.OBC.CDL.Continuous.Subtract dT
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZonCooSet(
final k=273.15 + 24)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(
final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZonHeaSet(
final k=273.15 + 20)
;
equation
connect(uCoo.y, setPoiVAV.uCoo);
connect(TZon.y, setPoiVAV.TZon);
connect(TOut.y, setPoiVAV.TOut);
connect(uHea.y, setPoiVAV.uHea);
connect(dT.u1, TZon.y);
connect(dT.u2, TOut.y);
connect(opeMod.y, setPoiVAV.uOpeMod);
connect(TZonCooSet.y, setPoiVAV.TCooSet);
connect(TZonHeaSet.y, setPoiVAV.THeaSet);
end Supply_T;
Validation model for temperature and fan speed
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply
for different control signals.
Each controller is configured identical, but the input signal for TZon
differs
in order to validate that the fan speed is increased correctly.
Modelica definition
model Supply_u
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV(
final maxHeaSpe=0.7,
final maxCooSpe=1,
final minSpe=0.3,
final TSup_max=303.15,
final TSup_min=289.15,
final TSupDew_max=297.15)
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV1(
final maxHeaSpe=0.7,
final maxCooSpe=1,
final minSpe=0.3,
final TSup_max=303.15,
final TSup_min=289.15,
final TSupDew_max=297.15)
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV2(
final maxHeaSpe=0.7,
final maxCooSpe=1,
final minSpe=0.3,
final TSup_max=303.15,
final TSup_min=289.15,
final TSupDew_max=297.15)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZon(
final k=273.15 + 28)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut(
final k=273.15 + 22)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uHea(
final duration=900,
final height=-1,
final offset=1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uCoo(
final duration=900,
final startTime=2700)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZon1(
final k=273.15 + 23)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(
final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZonHeaSet(
final k=273.15
+ 22)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZonCooSet(
final k=273.15 + 24)
;
equation
connect(TZon.y, setPoiVAV.TZon);
connect(TOut.y, setPoiVAV.TOut);
connect(uHea.y, setPoiVAV.uHea);
connect(uCoo.y, setPoiVAV.uCoo);
connect(TOut.y, setPoiVAV1.TOut);
connect(uHea.y, setPoiVAV1.uHea);
connect(uCoo.y, setPoiVAV1.uCoo);
connect(TOut.y, setPoiVAV2.TOut);
connect(uHea.y, setPoiVAV2.uHea);
connect(uCoo.y, setPoiVAV2.uCoo);
connect(TOut.y, setPoiVAV1.TZon);
connect(TZon1.y, setPoiVAV2.TZon);
connect(opeMod.y, setPoiVAV.uOpeMod);
connect(opeMod.y, setPoiVAV1.uOpeMod);
connect(opeMod.y, setPoiVAV2.uOpeMod);
connect(TZonCooSet.y, setPoiVAV.TCooSet);
connect(TZonCooSet.y, setPoiVAV1.TCooSet);
connect(TZonCooSet.y, setPoiVAV2.TCooSet);
connect(TZonHeaSet.y, setPoiVAV.THeaSet);
connect(TZonHeaSet.y, setPoiVAV1.THeaSet);
connect(TZonHeaSet.y, setPoiVAV2.THeaSet);
end Supply_u;