Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.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 variable volume series fans |
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 variable volume series fans
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.ActiveAirFlow
for calculating active minimum and maximum airflow setpoint used in series fan powered terminal unit.
Modelica definition
Validation of model that generates alarms
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.Alarms
for generating system alarms.
Modelica definition
model Alarms
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.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.Reals.Sources.Ramp disAirSet(
final height=0.9,
final duration=7200,
final offset=0.1) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAir(
final duration=7200,
final offset=0.1,
final height=0.3) ;
Buildings.Controls.OBC.CDL.Reals.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.Reals.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.Reals.Sources.Ramp TDis(
final duration=3600,
final offset=273.15 + 20,
final height=-5) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse terFanComOn(
final width=0.5,
final period=7500)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse terFanOn(
final width=0.5,
final period=7500,
shift=1000) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp valPos(
final duration=2000,
final height=-0.7,
final offset=0.7,
final startTime=3600) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSup(
final k=273.15 + 13)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TDisSet(
final k=273.15 + 30)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Pulse intPul(
amplitude=6,
width=0.1,
period=8500,
offset=1)
;
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.VPri_flow);
connect(supFan.y, ala.u1Fan);
connect(terFanComOn.y, ala.u1FanCom);
connect(terFanOn.y, ala.u1TerFan);
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);
connect(intPul.y, ala.uOpeMod);
end Alarms;
Validate model for controlling damper and valve position
Information
This example validates
BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.DamperValves
for damper and valve control of series fan powered unit.
Modelica definition
model DamperValves
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.DamperValves
damValFan1(
final maxRat=0.1,
final VMin_flow=0.01,
final VCooMax_flow=0.09,
final kDam=1) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uCoo(
final height=-1,
final duration=3600,
final offset=1,
final startTime=900) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon(
final k=273.15 + 22)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant VActMin_flow(
final k=0.01) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant VActCooMax_flow(
final k=0.075)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse terFan(
final width=0.75,
final period=7200) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSupSet(
final k=273.15 + 13)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uHea(
final height=1,
final duration=3600,
final offset=0,
final startTime=5500) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAir(
final duration=7200,
final offset=0.01,
final height=0.06)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin TSup(
final offset=273.15 + 13,
final amplitude=1,
final freqHz=1/3600)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaSet(
final k=273.15 + 20)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin TDis(
final offset=273.15 + 13,
final amplitude=1.2,
final freqHz=1/3600) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp opeMod(
final offset=1,
final height=3,
final duration=90000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Reals.Round round2(
final n=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp damPos(
final height=1,
final duration=3600,
final offset=0,
final startTime=5500) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant VMinOut_flow(
final k=0.005)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveFlo(
final height=3,
final duration=2000,
final startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Reals.Round round1(
final n=0)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(
final width=0.9,
final period=4800,
final shift=180)
;
equation
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, damValFan1.uHea);
connect(disAir.y, damValFan1.VPri_flow);
connect(TSupSet.y, damValFan1.TSupSet);
connect(TSup.y, damValFan1.TSup);
connect(THeaSet.y, damValFan1.THeaSet);
connect(TDis.y, damValFan1.TDis);
connect(opeMod.y,round2. u);
connect(round2.y,reaToInt2. u);
connect(reaToInt2.y, damValFan1.uOpeMod);
connect(terFan.y, damValFan1.u1TerFan);
connect(damPos.y, damValFan1.uDam);
connect(VMinOut_flow.y, damValFan1.VOAMin_flow);
connect(oveFlo.y,round1. u);
connect(round1.y,reaToInt1. u);
connect(reaToInt1.y, damValFan1.oveFloSet);
connect(booPul.y, damValFan1.u1Fan);
end DamperValves;
Validation of model that overrides control
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.Overrides
for overrideing controls.
Modelica definition
model Overrides
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.Overrides
ove
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp damPos(
final duration=3600,
final height=0.5,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveDam(
final height=2,
final duration=2000,
final startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Reals.Round round1(
final n=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaValPos(
final duration=3600,
final height=0.5,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveDam1(
final height=2,
final duration=2000,
final startTime=1000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3
;
Buildings.Controls.OBC.CDL.Reals.Round round3(
final n=0)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaOff(
final width=0.75,
final period=3600)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant terFan(
final k=true)
;
Buildings.Controls.OBC.CDL.Logical.Not not1
;
equation
connect(oveDam.y, round1.u);
connect(round1.y, reaToInt1.u);
connect(oveDam1.y, round3.u);
connect(round3.y,reaToInt3. u);
connect(reaToInt1.y, ove.oveDamPos);
connect(damPos.y, ove.uDam);
connect(heaValPos.y, ove.uVal);
connect(reaToInt3.y, ove.oveFan);
connect(terFan.y, ove.u1Fan);
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.SeriesFanVVF.Subsequences.SystemRequests
for generating system requests.
Modelica definition
model SystemRequests
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.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.Reals.Sources.Sin sine(
final freqHz=1/7200,
final offset=296.15)
;
Buildings.Controls.OBC.CDL.Discrete.UnitDelay TCooSet(
final samplePeriod=1800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin TZon(
final freqHz=1/7200,
final amplitude=2,
final offset=299.15)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uCoo(
final height=-1,
final duration=2000,
final offset=1,
final startTime=1000)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAirSet(
final height=0.9,
final duration=7200,
final offset=0.1) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAir(
final duration=7200,
final offset=0.1,
final height=0.3) ;
Buildings.Controls.OBC.CDL.Reals.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.Reals.Sources.Ramp TDis(
final duration=3600,
final offset=273.15 + 20,
final height=-5)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TDisSet(
final k=273.15 + 30)
;
Buildings.Controls.OBC.CDL.Reals.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.VPri_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;