Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.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 |
ExhaustDamper
|
Validate of the controller for actuated exhaust damper without fan |
ModeAndSetPoints
|
Validation models of reseting the zone setpoint temperature |
OutsideAirFlow
|
Validate the model of calculating minimum outdoor airflow setpoint |
Supply_T
|
Validation model for outdoor minus room air temperature |
Supply_u
|
Validation model for temperature and fan speed |
Validate of the controller for actuated exhaust damper without fan
Information
This example validates
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.ExhaustDamper.
Modelica definition
Validation models of reseting the zone setpoint temperature
Information
This example validates
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints.
Modelica definition
model ModeAndSetPoints
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints
setPoi(
final have_winSen=false,
final have_occSen=false,
final cooAdj=true,
final heaAdj=true) ;
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints
setPoi1(
final have_occSen=true,
final have_winSen=true)
;
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints
setPoi2(
final have_winSen=false,
final have_occSen=false,
final cooAdj=true,
final heaAdj=true) ;
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints
setPoi3(
final have_occSen=true,
final have_winSen=true)
;
Buildings.Controls.SetPoints.OccupancySchedule occSch ;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin heaSetAdj(
final freqHz=1/28800,
final amplitude=0.5) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin cooSetAdj(
final freqHz=1/28800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin TZon1(
final amplitude=5,
final offset=18 + 273.15,
final freqHz=1/86400) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin TZon2(
final offset=18 + 273.15,
final freqHz=1/86400,
final amplitude=7.5) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant winSta1(
final k=false)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant winSta2(
final k=true)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant occSen1(
final k=false)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant occSen2(
final k=true)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant demLimLev(
final k=0) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant warCooTim(
final k=1800)
;
equation
connect(cooSetAdj.y, setPoi.setAdj);
connect(heaSetAdj.y, setPoi.heaSetAdj);
connect(occSen2.y, setPoi3.uOccSen);
connect(setPoi3.TZon, TZon2.y);
connect(setPoi2.TZon, TZon2.y);
connect(cooSetAdj.y, setPoi2.setAdj);
connect(heaSetAdj.y, setPoi2.heaSetAdj);
connect(TZon1.y, setPoi.TZon);
connect(setPoi1.TZon, setPoi.TZon);
connect(occSch.tNexOcc, setPoi.tNexOcc);
connect(occSch.tNexOcc, setPoi1.tNexOcc);
connect(occSch.occupied, setPoi.uOcc);
connect(occSch.occupied, setPoi1.uOcc);
connect(occSch.occupied, setPoi2.uOcc);
connect(occSch.occupied, setPoi3.uOcc);
connect(occSen1.y, setPoi1.uOccSen);
connect(winSta1.y, setPoi1.uWin);
connect(winSta2.y, setPoi3.uWin);
connect(occSch.tNexOcc, setPoi2.tNexOcc);
connect(occSch.tNexOcc, setPoi3.tNexOcc);
connect(demLimLev.y, setPoi.uCooDemLimLev);
connect(demLimLev.y, setPoi.uHeaDemLimLev);
connect(demLimLev.y, setPoi1.uCooDemLimLev);
connect(demLimLev.y, setPoi1.uHeaDemLimLev);
connect(demLimLev.y, setPoi2.uCooDemLimLev);
connect(demLimLev.y, setPoi2.uHeaDemLimLev);
connect(demLimLev.y, setPoi3.uCooDemLimLev);
connect(demLimLev.y, setPoi3.uHeaDemLimLev);
connect(warCooTim.y, setPoi.cooDowTim);
connect(warCooTim.y, setPoi.warUpTim);
connect(warCooTim.y, setPoi1.warUpTim);
connect(warCooTim.y, setPoi2.warUpTim);
connect(warCooTim.y, setPoi3.warUpTim);
connect(warCooTim.y, setPoi1.cooDowTim);
connect(warCooTim.y, setPoi2.cooDowTim);
connect(warCooTim.y, setPoi3.cooDowTim);
end ModeAndSetPoints;
Validate the model of calculating minimum outdoor airflow setpoint
Information
This example validates
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.OutsideAirFlow.
Modelica definition
model OutsideAirFlow
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.OutsideAirFlow
outAirSet_SinZon(AFlo=40, have_occSen=true)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp numOfOcc(
height=4,
duration=3600)
;
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.OutsideAirFlow
outAirSet_SinZon_noOccSen(AFlo=40, have_occSen=false)
;
protected
Buildings.Controls.OBC.CDL.Logical.Sources.Constant winSta(
k=false) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFan(
k=true) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TZon(
height=6,
offset=273.15 + 17,
duration=3600) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TDis(
height=4,
duration=3600,
offset=273.15 + 18) ;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(
final k=Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied)
;
equation
connect(numOfOcc.y, outAirSet_SinZon.nOcc);
connect(winSta.y, outAirSet_SinZon.uWin);
connect(TZon.y, outAirSet_SinZon.TZon);
connect(outAirSet_SinZon.uOpeMod, opeMod.y);
connect(supFan.y, outAirSet_SinZon.uSupFan);
connect(TDis.y, outAirSet_SinZon.TDis);
connect(winSta.y, outAirSet_SinZon_noOccSen.uWin);
connect(TZon.y, outAirSet_SinZon_noOccSen.TZon);
connect(outAirSet_SinZon_noOccSen.uOpeMod, opeMod.y);
connect(supFan.y, outAirSet_SinZon_noOccSen.uSupFan);
connect(TDis.y, outAirSet_SinZon_noOccSen.TDis);
end OutsideAirFlow;
Validation model for outdoor minus room air temperature
Information
This example validates
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.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.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV(
yHeaMax=0.7,
yMin=0.3,
TSupSetMax=303.15,
TSupSetMin=289.15,
yCooMax=0.9)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant uHea(k=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant uCoo(k=0.6)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TOut(
duration=1,
height=18,
offset=273.15 + 10) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon(
k=273.15 + 22) ;
Buildings.Controls.OBC.CDL.Reals.Subtract dT
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZonSet(
k=273.15 + 22) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(k=true) ;
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(TZonSet.y,setPoiVAV.TZonSet);
connect(fanSta.y, setPoiVAV.uFan);
end Supply_T;
Validation model for temperature and fan speed
Information
This example validates
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.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.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV(
yHeaMax=0.7,
yMin=0.3,
TSupSetMax=303.15,
TSupSetMin=289.15)
;
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV1(
yHeaMax=0.7,
yMin=0.3,
TSupSetMax=303.15,
TSupSetMin=289.15)
;
Buildings.Obsolete.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.SetPoints.Supply
setPoiVAV2(
yHeaMax=0.7,
yMin=0.3,
TSupSetMax=303.15,
TSupSetMin=289.15)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon(k=273.15 + 28)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOut(k=273.15 + 22)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uHea(
duration=0.25,
height=-1,
offset=1) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uCoo(
duration=0.25,
startTime=0.75)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZonSet(k=273.15 + 23)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon1(k=273.15 + 23)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(k=true)
;
equation
connect(TZon.y, setPoiVAV.TZon);
connect(TOut.y, setPoiVAV.TOut);
connect(uHea.y, setPoiVAV.uHea);
connect(uCoo.y, setPoiVAV.uCoo);
connect(TZonSet.y,setPoiVAV.TZonSet);
connect(TOut.y, setPoiVAV1.TOut);
connect(uHea.y, setPoiVAV1.uHea);
connect(uCoo.y, setPoiVAV1.uCoo);
connect(TZonSet.y,setPoiVAV1.TZonSet);
connect(TOut.y, setPoiVAV2.TOut);
connect(uHea.y, setPoiVAV2.uHea);
connect(uCoo.y, setPoiVAV2.uCoo);
connect(TZonSet.y,setPoiVAV2.TZonSet);
connect(TOut.y, setPoiVAV1.TZon);
connect(TZon1.y, setPoiVAV2.TZon);
connect(fanSta.y, setPoiVAV.uFan);
connect(setPoiVAV1.uFan, setPoiVAV.uFan);
connect(setPoiVAV2.uFan, setPoiVAV.uFan);
end Supply_u;