Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.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 constant volume parallel 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 constant volume parallel fans
 
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.Subsequences.ActiveAirFlow
for calculating active minimum and maximum airflow setpoint used in parallel fan powered terminal unit.
Modelica definition
Validation of model that generates alarms
 
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.Subsequences.Alarms
for generating system alarms.
Modelica definition
model Alarms 
  
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.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.ParallelFanCVF.Subsequences.DamperValves
for damper and valve control of parallel fan powered unit.
Modelica definition
model DamperValves
  
  
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.Subsequences.DamperValves
                                                                                           damValFan1(
    
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 cooAhu(
    
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 TZonHeaSet(
    
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.Constant VOAMin_flow(
    
final k=0.005)
    ;
  
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.Round round1(
final n=0)
    ;
  
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.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(TZonHeaSet.y, damValFan1.THeaSet);
  
connect(TDis.y, damValFan1.TDis);
  
connect(opeMod.y,round2. u);
  
connect(round2.y,reaToInt2. u);
  
connect(reaToInt2.y, damValFan1.uOpeMod);
  
connect(VOAMin_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.ParallelFanCVF.Subsequences.Overrides
for overrideing controls.
Modelica definition
model Overrides 
  
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.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.ParallelFanCVF.Subsequences.SystemRequests
for generating system requests.
Modelica definition
model SystemRequests
  
  
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.ParallelFanCVF.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 TZonCooSet(
    
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, TZonCooSet.u);
  
connect(TZonCooSet.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;