Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.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 |
FreezeProtection
|
Validate model for implementing freeze protection |
PlantRequests
|
Validate model for calculating the plant requests |
ReliefDamper
|
Validate model for calculating relief damper control |
ReliefFan
|
Validate model for controlling relief fan |
ReliefFanGroup
|
Validate model for controlling relief fans group |
ReturnFanAirflowTracking
|
Validate model for controlling return fan of units using return fan with airflow tracking |
ReturnFanDirectPressure
|
Validate model for calculating return fan control with direct building pressure of multi zone VAV AHU |
SupplyFan
|
Validate SupplyFan |
SupplySignals
|
Validate model for controlling coil valve postion of multi zone VAV AHU |
SupplyTemperature
|
Validate model for calculating supply air temperature of multi zone VAV AHU |
Validate model for implementing freeze protection
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection
for air handling unit serving multiple zones.
Modelica definition
model FreezeProtection
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection
frePro(
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper,
final minOADes=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow,
final 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.46,
final offset=0.5,
final duration=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minOutDamPos(
final k=0.15)
;
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 h=0.01)
;
equation
connect(freRes.y, not1.u);
connect(outDamPosMin.y,frePro. uOutDamPosMin);
connect(outDamPos.y, frePro.uOutDam);
connect(heaCoiPos.y,frePro. uHeaCoi);
connect(minOutDamPos.y, frePro.uMinOutDam);
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 model for calculating the plant requests
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.PlantRequests
for air handling unit serving multiple zones.
Modelica definition
model PlantRequests
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.PlantRequests plaReq
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.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) ;
equation
connect(supTem.y, plaReq1.TAirSup);
connect(supTemSet.y, plaReq1.TAirSupSet);
connect(cooCoi.y, plaReq1.uCooCoi_actual);
connect(supTem1.y, plaReq.TAirSup);
connect(supTemSet1.y, plaReq.TAirSupSet);
connect(cooCoi1.y, plaReq.uCooCoi_actual);
connect(heaCoi.y, plaReq.uHeaCoi_actual);
end PlantRequests;
Validate model for calculating relief damper control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefDamper
for actuated relief damper control without fan
for systems with multiple
zones.
Modelica definition
Validate model for controlling relief fan
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFan
for controlling relief fan that is part of AHU.
Modelica definition
model ReliefFan
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFan
relFanCon(
final k=0.5) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFan
relFanCon1 ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.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 controlling relief fans group
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFanGroup
for relief fan group for systems with multiple zones.
Modelica definition
model ReliefFanGroup
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFanGroup
relFanCon(
final k=0.5) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReliefFanGroup
relFanCon1 ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.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;
Validate model for controlling return fan of units using return fan with airflow tracking
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking
for return fan control with airflow tracking
for systems with multiple
zones.
Modelica definition
model ReturnFanAirflowTracking
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking
retFanAirTra(
final difFloSet=0.5,
final k=0.1)
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking
retFanAirTra1(
final difFloSet=0.5)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse yFan(width=0.75,
final period=4000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp supFlo(
final height=1.0,
final offset=0.2,
final duration=1800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp retFlo(
final height=0.4,
final offset=0.1,
final duration=1800) ;
equation
connect(yFan.y, retFanAirTra.u1SupFan);
connect(yFan.y, retFanAirTra1.u1SupFan);
connect(supFlo.y, retFanAirTra.VAirSup_flow);
connect(supFlo.y, retFanAirTra1.VAirSup_flow);
connect(retFlo.y, retFanAirTra.VAirRet_flow);
connect(retFlo.y, retFanAirTra1.VAirRet_flow);
end ReturnFanAirflowTracking;
Validate model for calculating return fan control with direct building pressure of multi zone VAV AHU
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure
for exhaust air damper and return fan control with direct building pressure measurement
for systems with multiple
zones.
Modelica definition
model ReturnFanDirectPressure
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure
retFanPre(
final disSpe_min=0.1,
final disSpe_max=0.9,
final k=0.1) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure
retFanPre1(
final disSpe_min=0.1,
final disSpe_max=0.9,
final k=0.5) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure
retFanPre2(
final
disSpe_min=0.1,
final disSpe_max=0.9)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse yFan(
final period=4000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp dpBui(
final height=40,
final offset=0,
final duration=1800) ;
equation
connect(yFan.y, retFanPre.u1SupFan);
connect(dpBui.y, retFanPre.dpBui);
connect(yFan.y, retFanPre1.u1SupFan);
connect(yFan.y, retFanPre2.u1SupFan);
connect(dpBui.y, retFanPre1.dpBui);
connect(dpBui.y, retFanPre2.dpBui);
connect(yFan.y, retFanPre.u1MinOutAirDam);
connect(yFan.y, retFanPre1.u1MinOutAirDam);
connect(yFan.y, retFanPre2.u1MinOutAirDam);
end ReturnFanDirectPressure;
Validate SupplyFan
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan.
Modelica definition
model SupplyFan
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan conSupFan(
final Td=1,
final controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
final maxSet=400,
final k=0.001,
final Ti=10) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan conSupFan1(
final have_perZonRehBox=true,
final Td=1,
final controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
final maxSet=400,
final k=0.001,
final Ti=10)
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan conSupFan2(
final Td=1,
final controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
final maxSet=400,
final k=0.001,
final Ti=10)
;
protected
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp ram(
final duration=28800,
final height=6) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine(
final freqHz=1/14400,
final offset=3,
final amplitude=2)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine1(
final freqHz=1/14400,
final offset=200,
amplitude=150)
;
Buildings.Controls.OBC.CDL.Continuous.Abs abs
;
Buildings.Controls.OBC.CDL.Continuous.Abs abs1
;
Buildings.Controls.OBC.CDL.Continuous.Round round2(
final n=0)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Continuous.Round round1(n=0)
;
equation
connect(sine1.y, conSupFan.dpDuc);
connect(sine.y, abs1.u);
connect(ram.y, abs.u);
connect(abs1.y, round2.u);
connect(round2.y, reaToInt1.u);
connect(reaToInt1.y, conSupFan.uZonPreResReq);
connect(abs.y, round1.u);
connect(round1.y, reaToInt2.u);
connect(reaToInt2.y, conSupFan.uOpeMod);
connect(reaToInt2.y, conSupFan2.uOpeMod);
connect(reaToInt1.y, conSupFan2.uZonPreResReq);
connect(sine1.y, conSupFan2.dpDuc);
connect(reaToInt2.y, conSupFan1.uOpeMod);
connect(reaToInt1.y, conSupFan1.uZonPreResReq);
connect(sine1.y, conSupFan1.dpDuc);
end SupplyFan;
Validate model for controlling coil valve postion of multi zone VAV AHU
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals
for a change of the supply air temperature setpoint, measured supply air temperature and
the supply fan status, to specify coil valve positions, and generate control
loop signal.
Modelica definition
model SupplySignals
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals supSig
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFanSta(period=7200)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse TSup(
final amplitude=14,
final period=7200,
final offset=10 + 273.15)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSupSet(
final height=3,
final duration=7200,
final offset=15 + 273.15)
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals supSig1
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanOn(
final k=true) ;
equation
connect(TSupSet.y, supSig.TAirSupSet);
connect(TSup.y, supSig.TAirSup);
connect(supFanSta.y, supSig.u1SupFan);
connect(TSupSet.y, supSig1.TAirSupSet);
connect(TSup.y, supSig1.TAirSup);
connect(fanOn.y, supSig1.u1SupFan);
end SupplySignals;
Validate model for calculating supply air temperature of multi zone VAV AHU
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyTemperature
for a change of outdoor temperature, operation mode, supply fan status, maximum
supply temperature, to specify the supply air temperature for systems with multiple
zones.
Modelica definition
model SupplyTemperature
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyTemperature
conTSupSet
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine outTem(
final amplitude=5,
final freqHz=1/86400,
final offset=18 + 273.15) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFanSta(
final period=43200)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp opeMod(
final offset=1,
final height=1,
final duration=90000) ;
Buildings.Controls.OBC.CDL.Continuous.Abs abs
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine(
final amplitude=6,
final freqHz=1/86400)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Continuous.Round round1(
final n=0)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Continuous.Round round2(
final n=0)
;
equation
connect(supFanSta.y, conTSupSet.u1SupFan);
connect(outTem.y, conTSupSet.TOut);
connect(sine.y, abs.u);
connect(opeMod.y, round2.u);
connect(round2.y, reaToInt2.u);
connect(abs.y, round1.u);
connect(round1.y, reaToInt1.u);
connect(reaToInt1.y, conTSupSet.uZonTemResReq);
connect(reaToInt2.y, conTSupSet.uOpeMod);
end SupplyTemperature;