Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.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 dual-duct terminal unit with cold-duct minimum control |
Alarms
|
Validation of model that generates alarms |
Dampers
|
Validate model for controlling damper position of dual-duct unit with cold-duct minimum control |
Overrides
|
Validation of model that overrides control |
SystemRequests
|
Validation of model that generates system requests |
Validate the model for calculating active airflow setpoint for dual-duct terminal unit with cold-duct minimum control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.ActiveAirFlow
for calculating active minimum and maximum airflow setpoint used in dual-duct terminal unit
with cold-duct minimum control.
Modelica definition
model ActiveAirFlow
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.ActiveAirFlow
actAirSet(
final VCooMax_flow=0.5,
final VHeaMax_flow=0.4,
final floHys=0.01) ;
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.DualDuctColdDuctMin.Subsequences.Alarms
for generating system alarms.
Modelica definition
model Alarms
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.Alarms
ala(
final staPreMul=1,
final VCooMax_flow=1,
final VHeaMax_flow=0.9,
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 cooDisAir(
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 supCooFan(
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 colDammSta(
final width=0.5,
final period=7500) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos1(
final duration=7200,
final height=0.7,
final offset=0.3) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supHeaFan(
final width=0.75,
final period=7500)
;
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea1
;
Buildings.Controls.OBC.CDL.Continuous.Multiply mul1
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaDammSta(
final width=0.5,
final period=7500)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp heaDisAir(
final duration=7200,
final offset=0.1,
final height=0.3) ;
equation
connect(disAirSet.y, ala.VActSet_flow);
connect(booToRea.y, mul.u1);
connect(damPos.y, mul.u2);
connect(colDammSta.y, booToRea.u);
connect(booToRea1.y, mul1.u1);
connect(damPos1.y, mul1.u2);
connect(heaDammSta.y, booToRea1.u);
connect(supCooFan.y, ala.u1CooFan);
connect(mul.y, ala.uCooDam);
connect(supHeaFan.y, ala.u1HeaFan);
connect(mul1.y, ala.uHeaDam);
connect(cooDisAir.y, ala.VColDucDis_flow);
connect(heaDisAir.y, ala.VHotDucDis_flow);
end Alarms;
Validate model for controlling damper position of dual-duct unit with cold-duct minimum control
Information
This example validates
BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.Dampers
for damper control of dual-duct unit.
Modelica definition
model Dampers
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.Dampers
dam(
final VCooMax_flow=0.08,
final VHeaMax_flow=0.06,
final kDam=1) ;
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.Dampers
dam1(
final have_preIndDam=false,
final VCooMax_flow=0.08,
final VHeaMax_flow=0.06,
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 TCooSup(
final k=273.15 + 13)
;
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.Sine VColDuc(
final offset=0.015,
final amplitude=0.002,
final freqHz=1/3600)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse cooAhu(
final width=0.75,
final period=7200)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant THeaSup(
final k=273.15 + 25)
;
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.Constant VActHeaMax_flow(
final k=0.07)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaAhu(
final width=0.75,
final period=7200,
final shift=5000)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine VHotDuc(
final offset=0.015,
final amplitude=0.002,
final freqHz=1/3600)
;
equation
connect(uCoo.y, dam.uCoo);
connect(TZon.y, dam.TZon);
connect(VActCooMax_flow.y, dam.VActCooMax_flow);
connect(VActMin_flow.y, dam.VActMin_flow);
connect(VActMin_flow.y, dam1.VActMin_flow);
connect(TZon.y, dam1.TZon);
connect(VActCooMax_flow.y, dam1.VActCooMax_flow);
connect(uCoo.y, dam1.uCoo);
connect(TCooSup.y, dam.TColSup);
connect(TCooSup.y, dam1.TColSup);
connect(cooAhu.y, dam.u1CooAHU);
connect(cooAhu.y, dam1.u1CooAHU);
connect(THeaSup.y, dam.THotSup);
connect(THeaSup.y, dam1.THotSup);
connect(uHea.y, dam.uHea);
connect(uHea.y, dam1.uHea);
connect(VActHeaMax_flow.y, dam.VActHeaMax_flow);
connect(VActHeaMax_flow.y, dam1.VActHeaMax_flow);
connect(heaAhu.y, dam1.u1HeaAHU);
connect(VColDuc.y, dam1.VColDucDis_flow);
connect(VHotDuc.y, dam1.VHotDucDis_flow);
connect(heaAhu.y, dam.u1HeaAHU);
end Dampers;
Validation of model that overrides control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.Overrides
for overrideing controls.
Modelica definition
model Overrides
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.Overrides
ove(
final VMin_flow=0.1,
final VCooMax_flow=0.9,
final VHeaMax_flow=0.8) ;
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 cooDamPos(
final duration=3600,
final height=0.5,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveFlo(
final height=3,
final duration=2000,
startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Continuous.Round round2(
final n=0)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveDam(
final height=2,
final duration=2000,
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 heaDamPos(
final duration=3600,
final height=0.5,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveDam1(
final height=2,
final duration=2000,
startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3
;
Buildings.Controls.OBC.CDL.Continuous.Round round3(
final n=0)
;
equation
connect(oveDam.y, round1.u);
connect(round1.y, reaToInt1.u);
connect(oveFlo.y, round2.u);
connect(round2.y, reaToInt2.u);
connect(reaToInt2.y, ove.oveFloSet);
connect(disAirSet.y, ove.VActSet_flow);
connect(reaToInt1.y, ove.oveCooDamPos);
connect(cooDamPos.y, ove.uCooDam);
connect(oveDam1.y, round3.u);
connect(round3.y,reaToInt3. u);
connect(reaToInt3.y, ove.oveHeaDamPos);
connect(heaDamPos.y, ove.uHeaDam);
end Overrides;
Validation of model that generates system requests
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.SystemRequests
for generating system requests.
Modelica definition
model SystemRequests
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctColdDuctMin.Subsequences.SystemRequests
sysReq(
final floHys=0.01,
final looHys=0.01,
final damPosHys=0.01) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine(
final freqHz=1/7200,
final offset=296.15)
;
Buildings.Controls.OBC.CDL.Discrete.UnitDelay TZonCooSet(
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 colDucAirSet(
final height=0.9,
final duration=7200,
final offset=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp colDucAirRate(
final duration=7200,
final offset=0.1,
final height=0.3) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp colDamPos(
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.Logical.Not not1 ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine1(
final freqHz=1/7200,
final offset=293.15)
;
Buildings.Controls.OBC.CDL.Discrete.UnitDelay TZonHeaSet(
final samplePeriod=1800)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(
final width=0.1,
final period=7200)
;
Buildings.Controls.OBC.CDL.Logical.Not not2 ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uHea(
final height=0.9,
final duration=3600,
final startTime=3600)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp hotDucAirSet(
final height=0.9,
final duration=7200,
final offset=0.1)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp hotDucAirRate(
final duration=7200,
final offset=0.1,
final height=0.3)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp hotDamPos(
final duration=3600,
final height=0.7,
startTime=3600)
;
equation
connect(sine.y, TZonCooSet.u);
connect(TZonCooSet.y, sysReq.TCooSet);
connect(TZon.y, sysReq.TZon);
connect(uCoo.y, sysReq.uCoo);
connect(booPul.y, not1.u);
connect(not1.y, sysReq.uAftSupCoo);
connect(colDucAirSet.y, sysReq.VColDuc_flow_Set);
connect(colDucAirRate.y, sysReq.VColDucDis_flow);
connect(colDamPos.y, sysReq.uCooDam);
connect(sine1.y, TZonHeaSet.u);
connect(booPul1.y, not2.u);
connect(not2.y, sysReq.uAftSupHea);
connect(TZonHeaSet.y, sysReq.THeaSet);
connect(uHea.y, sysReq.uHea);
connect(hotDucAirSet.y, sysReq.VHotDuc_flow_Set);
connect(hotDucAirRate.y, sysReq.VHotDucDis_flow);
connect(hotDamPos.y, sysReq.uHeaDam);
end SystemRequests;