Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.
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 |
ActiveAirFlow
|
Validate the model for calculating active airflow setpoint for unit with reheat |
Alarms
|
Validation of model that generates alarms |
DamperValves
|
Validate model for controlling damper and valve position |
Overrides
|
Validation of model that overrides control |
SystemRequests
|
Validation of model that generates system requests |
Validate the model for calculating active airflow setpoint for unit with reheat
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.ActiveAirFlow
for calculating active minimum and maximum airflow setpoint used in terminal unit with reheat.
Modelica definition
model ActiveAirFlow
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.ActiveAirFlow
actAirSet(
final VCooMax_flow=0.5,
final VHeaMin_flow=0.1,
final VHeaMax_flow=0.4)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine minFlo(
final amplitude=0.3,
final freqHz=1/3600,
final offset=0.2) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp opeMod(
final offset=1,
final height=5,
final duration=3600)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Continuous.Round round2(
final n=0)
;
equation
connect(opeMod.y,round2. u);
connect(round2.y,reaToInt2. u);
connect(reaToInt2.y, actAirSet.uOpeMod);
connect(minFlo.y, actAirSet.VOccMin_flow);
end ActiveAirFlow;
Validation of model that generates alarms
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Alarms
for generating system alarms.
Modelica definition
model Alarms
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Alarms ala(
final have_hotWatCoi=true,
final staPreMul=1,
final hotWatRes=1,
final VCooMax_flow=1,
final floHys=0.01,
final damPosHys=0.01) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAirSet(
final height=0.9,
final duration=7200,
final offset=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAir(
final duration=7200,
final offset=0.1,
final height=0.3) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos(
final duration=7200,
final height=0.7,
final offset=0.3) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan(
final width=0.75,
final period=7500) ;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea
;
Buildings.Controls.OBC.CDL.Continuous.Multiply mul
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse damSta(
final width=0.5,
final period=7500) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse hotPla(
final width=0.9,
final period=7500) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TDis(
final duration=3600,
final offset=273.15 + 20,
final height=-5) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp valPos(
final duration=2000,
final height=-0.7,
final offset=0.7,
final startTime=3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSup(
final k=273.15 + 13)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TDisSet(
final k=273.15 + 30)
;
equation
connect(disAirSet.y, ala.VActSet_flow);
connect(booToRea.y, mul.u1);
connect(damPos.y, mul.u2);
connect(damSta.y, booToRea.u);
connect(disAir.y, ala.VDis_flow);
connect(supFan.y, ala.u1Fan);
connect(mul.y, ala.uDam);
connect(valPos.y, ala.uVal);
connect(TSup.y, ala.TSup);
connect(hotPla.y, ala.u1HotPla);
connect(TDis.y, ala.TDis);
connect(TDisSet.y, ala.TDisSet);
end Alarms;
Validate model for controlling damper and valve position
Information
This example validates
BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.DamperValves
for damper and valve control of terminal unit with reheat.
Modelica definition
model DamperValves
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.DamperValves
damValFan(
final VMin_flow=0.01,
final VCooMax_flow=0.09,
final VHeaMax_flow=0.08,
final kDam=1) ;
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.DamperValves
damValFan1(
final VMin_flow=0.01,
final VCooMax_flow=0.09,
final VHeaMax_flow=0.08,
final have_preIndDam=false,
final kDam=1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uCoo(
final height=-1,
final duration=3600,
final offset=1,
final startTime=900) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZon(
final k=273.15 + 22)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActMin_flow(
final k=0.01) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActCooMax_flow(
final k=0.075) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupSet(
final k=273.15 + 13)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uHea(
final height=1,
final duration=3600,
final offset=0,
final startTime=5500) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAir(
final duration=7200,
final offset=0.01,
final height=0.06)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TSup(
final offset=273.15 + 13,
final amplitude=1,
final freqHz=1/3600)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant THeaSet(
final k=273.15 + 20)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TDis(
final offset=273.15 + 13,
final amplitude=1.2,
final freqHz=1/3600) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp opeMod(
final offset=1,
final height=3,
final duration=90000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Continuous.Round round2(
final n=0)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActCooMin_flow(
final k=0.015) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActHeaMin_flow(
final k=0.015)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActHeaMax_flow(
final k=0.06)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveFlo(
final height=3,
final duration=2000,
final startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Continuous.Round round1(
final n=0)
;
equation
connect(uCoo.y, damValFan.uCoo);
connect(TZon.y, damValFan.TZon);
connect(VActCooMax_flow.y, damValFan.VActCooMax_flow);
connect(VActMin_flow.y, damValFan.VActMin_flow);
connect(VActMin_flow.y, damValFan1.VActMin_flow);
connect(TZon.y, damValFan1.TZon);
connect(VActCooMax_flow.y, damValFan1.VActCooMax_flow);
connect(uCoo.y, damValFan1.uCoo);
connect(uHea.y, damValFan.uHea);
connect(uHea.y, damValFan1.uHea);
connect(disAir.y, damValFan1.VDis_flow);
connect(TSupSet.y, damValFan.TSupSet);
connect(TSupSet.y, damValFan1.TSupSet);
connect(TSup.y, damValFan.TSup);
connect(TSup.y, damValFan1.TSup);
connect(THeaSet.y, damValFan.THeaSet);
connect(THeaSet.y, damValFan1.THeaSet);
connect(TDis.y, damValFan.TDis);
connect(TDis.y, damValFan1.TDis);
connect(opeMod.y,round2. u);
connect(round2.y,reaToInt2. u);
connect(reaToInt2.y, damValFan.uOpeMod);
connect(reaToInt2.y, damValFan1.uOpeMod);
connect(VActCooMin_flow.y, damValFan.VActCooMin_flow);
connect(VActCooMin_flow.y, damValFan1.VActCooMin_flow);
connect(VActHeaMin_flow.y, damValFan.VActHeaMin_flow);
connect(VActHeaMin_flow.y, damValFan1.VActHeaMin_flow);
connect(VActHeaMax_flow.y, damValFan.VActHeaMax_flow);
connect(VActHeaMax_flow.y, damValFan1.VActHeaMax_flow);
connect(oveFlo.y,round1. u);
connect(round1.y,reaToInt1. u);
connect(reaToInt1.y, damValFan.oveFloSet);
connect(reaToInt1.y, damValFan1.oveFloSet);
end DamperValves;
Validation of model that overrides control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Overrides
for overrideing controls.
Modelica definition
model Overrides
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Overrides
ove
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos(
final duration=3600,
final height=0.5,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveDam(
final height=2,
final duration=2000,
final startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Continuous.Round round1(
final n=0)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp heaValPos(
final duration=3600,
final height=0.5,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaOff(
final width=0.75,
final period=3600)
;
Buildings.Controls.OBC.CDL.Logical.Not not1
;
equation
connect(oveDam.y, round1.u);
connect(round1.y, reaToInt1.u);
connect(reaToInt1.y, ove.oveDamPos);
connect(damPos.y, ove.uDam);
connect(heaValPos.y, ove.uVal);
connect(heaOff.y, not1.u);
connect(not1.y, ove.uHeaOff);
end Overrides;
Validation of model that generates system requests
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.SystemRequests
for generating system requests.
Modelica definition
model SystemRequests
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.SystemRequests
sysReq(
final have_hotWatCoi=true,
final floHys=0.01,
final looHys=0.01,
final damPosHys=0.01,
final valPosHys=0.01) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine(
final freqHz=1/7200,
final offset=296.15)
;
Buildings.Controls.OBC.CDL.Discrete.UnitDelay TCooSet(
final samplePeriod=1800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TZon(
final freqHz=1/7200,
final amplitude=2,
final offset=299.15)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uCoo(
final height=-1,
final duration=2000,
final offset=1,
final startTime=1000)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAirSet(
final height=0.9,
final duration=7200,
final offset=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAir(
final duration=7200,
final offset=0.1,
final height=0.3) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos(
final duration=3000,
final height=-0.7,
final offset=0.7) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(
final width=0.1,
final period=7200)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TDis(
final duration=3600,
final offset=273.15 + 20,
final height=-5)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TDisSet(
final k=273.15 + 30)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp valPos(
final duration=2000,
final height=-0.7,
final offset=0.7,
final startTime=3600) ;
Buildings.Controls.OBC.CDL.Logical.Not not1
;
equation
connect(sine.y, TCooSet.u);
connect(TCooSet.y, sysReq.TCooSet);
connect(TZon.y, sysReq.TZon);
connect(uCoo.y, sysReq.uCoo);
connect(disAirSet.y, sysReq.VSet_flow);
connect(disAir.y, sysReq.VDis_flow);
connect(damPos.y, sysReq.uDam);
connect(TDisSet.y, sysReq.TDisSet);
connect(TDis.y, sysReq.TDis);
connect(valPos.y, sysReq.uVal);
connect(booPul.y, not1.u);
connect(not1.y, sysReq.uAftSup);
end SystemRequests;