Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.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 |
OperationMode
|
Validate block OperationModeSelector |
TrimAndRespond
|
Model validates the trim and respond block |
Validate block OperationModeSelector
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.SetPoints.OperationMode
for a change of zone temperature and occupancy schedule.
Modelica definition
model OperationMode
Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.SetPoints.OperationMode
opeModSel(numZon=1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp ramp1(
offset=0,
height=6.2831852,
duration=24*3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sin sin1
;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(
p=22.5, k=12.5);
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant unoHeaSet(
k=12) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant unoCooSet(
k=30) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant occHeaSet(
k=20) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant occCooSet(
k=24) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant warUpTim(k=
1800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooDowTim(
k=1800) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant uWinSta(k=false)
;
Buildings.Controls.SetPoints.OccupancySchedule occSch ;
equation
connect(ramp1.y, sin1.u);
connect(sin1.y, addPar.u);
connect(addPar.y, opeModSel.TZon[1]);
connect(occHeaSet.y, opeModSel.THeaSet);
connect(occCooSet.y, opeModSel.TCooSet);
connect(unoHeaSet.y, opeModSel.TUnoHeaSet);
connect(unoCooSet.y, opeModSel.TUnoCooSet);
connect(warUpTim.y, opeModSel.warUpTim[1]);
connect(cooDowTim.y, opeModSel.cooDowTim[1]);
connect(uWinSta.y, opeModSel.uWinSta[1]);
connect(occSch.tNexOcc, opeModSel.tNexOcc);
connect(occSch.occupied, opeModSel.uOcc);
end OperationMode;
Model validates the trim and respond block
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.SetPoints.TrimAndRespond.
Modelica definition
model TrimAndRespond
Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.SetPoints.TrimAndRespond trimRespondLogic(
iniSet=120,
minSet=37,
maxSet=370,
delTim=300,
samplePeriod=120,
numIgnReq=2,
triAmo=-10,
resAmo=15,
maxRes=37) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant con(
k=true) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine(
amplitude=6,
freqHz=1/5400) ;
Buildings.Controls.OBC.CDL.Continuous.Abs abs
;
Buildings.Controls.OBC.ASHRAE.G36_PR1.Generic.SetPoints.TrimAndRespond trimRespondLogic1(
iniSet=120,
minSet=37,
maxSet=370,
delTim=300,
samplePeriod=120,
numIgnReq=2,
triAmo=-10,
resAmo=15,
maxRes=37) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine1(
amplitude=6,
freqHz=1/5400) ;
Buildings.Controls.OBC.CDL.Continuous.Abs abs1
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(
period=3600,
width=0.18333333) ;
Buildings.Controls.OBC.CDL.Logical.Not not1 ;
Buildings.Controls.OBC.CDL.Logical.Switch swi ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con1(k=0)
;
Buildings.Controls.OBC.CDL.Continuous.Round round2(n=0)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Continuous.Round round1(n=0)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
equation
connect(con.y, trimRespondLogic.uDevSta);
connect(sine.y, abs.u);
connect(not1.y, trimRespondLogic1.uDevSta);
connect(con1.y, swi.u1);
connect(sine1.y, swi.u3);
connect(swi.y, abs1.u);
connect(booPul.y, swi.u2);
connect(booPul.y, not1.u);
connect(abs.y, round2.u);
connect(round2.y, reaToInt1.u);
connect(reaToInt1.y, trimRespondLogic.numOfReq);
connect(abs1.y, round1.u);
connect(round1.y, reaToInt2.u);
connect(reaToInt2.y, trimRespondLogic1.numOfReq);
end TrimAndRespond;