Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctMixConInletSensor.
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 |
Controller
|
Validation of model that controls dual-duct unit using mixing control with inlet flow sensor |
Validation of model that controls dual-duct unit using mixing control with inlet flow sensor
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctMixConInletSensor.Controller.
Modelica definition
model Controller
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctMixConInletSensor.Controller
duaDucCon(
final venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1,
final VAreBreZon_flow=0.006,
final VPopBreZon_flow=0.005,
final VMin_flow=0.5,
final VCooMax_flow=1.5,
final VHeaMax_flow=1.2,
final staPreMul=1,
final floHys=0.01,
final looHys=0.01,
final damPosHys=0.01,
final VOccMin_flow=0,
final VAreMin_flow=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin TZon(
final freqHz=1/86400,
final amplitude=4,
final offset=299.15)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAirTem(
final height=2,
final duration=43200,
final offset=273.15 + 15,
final startTime=28800)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse winSta(
final width=0.05,
final period=43200,
final shift=43200)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooSet(
final k=273.15 + 24)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant heaSet(
final k=273.15 + 20)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse occ(
final width=0.75,
final period=43200,
final shift=28800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp opeMod(
final offset=1,
final height=2,
final duration=28800,
final startTime=28800)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
;
Buildings.Controls.OBC.CDL.Reals.Round round2(
final n=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin CO2(
final amplitude=400,
final freqHz=1/28800,
final offset=600) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp colSupAirTem(
final height=2,
final duration=43200,
final offset=273.15 + 14)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin VColDis_flow(
final offset=1.2,
final amplitude=0.6,
final freqHz=1/28800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveFlo(
final height=2,
final duration=10000,
final startTime=35000)
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Reals.Round round1(
final n=0)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveColDam(
final height=2,
final duration=5000,
startTime=60000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3
;
Buildings.Controls.OBC.CDL.Reals.Round round3(
final n=0)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse cooSupFanSta(
final width=0.9,
final period=73200,
final shift=18800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveHotDam(
final height=2,
final duration=5000,
final startTime=60000) ;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt4
;
Buildings.Controls.OBC.CDL.Reals.Round round4(
final n=0)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaSupFanSta(
final width=0.9,
final period=73200,
final shift=18800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Sin VHotDis_flow(
final offset=1.2,
final amplitude=0.6,
final freqHz=1/28800) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp hotSupAirTem(
final height=2,
final duration=43200,
final offset=273.15 + 24)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant CO2Set(
final k=894)
;
Buildings.Controls.OBC.CDL.Logical.Not not2 ;
equation
connect(TZon.y,duaDucCon. TZon);
connect(cooSet.y, duaDucCon.TCooSet);
connect(heaSet.y, duaDucCon.THeaSet);
connect(occ.y, duaDucCon.u1Occ);
connect(opeMod.y,round2. u);
connect(round2.y,reaToInt2. u);
connect(reaToInt2.y,duaDucCon. uOpeMod);
connect(CO2.y,duaDucCon. ppmCO2);
connect(oveFlo.y,round1. u);
connect(round1.y,reaToInt1. u);
connect(oveColDam.y, round3.u);
connect(round3.y,reaToInt3. u);
connect(reaToInt1.y,duaDucCon. oveFloSet);
connect(reaToInt3.y, duaDucCon.oveCooDamPos);
connect(oveHotDam.y, round4.u);
connect(round4.y,reaToInt4. u);
connect(reaToInt4.y, duaDucCon.oveHeaDamPos);
connect(disAirTem.y, duaDucCon.TDis);
connect(colSupAirTem.y, duaDucCon.TColSup);
connect(VColDis_flow.y, duaDucCon.VColDucDis_flow);
connect(cooSupFanSta.y, duaDucCon.u1CooAHU);
connect(hotSupAirTem.y, duaDucCon.THotSup);
connect(VHotDis_flow.y, duaDucCon.VHotDucDis_flow);
connect(heaSupFanSta.y, duaDucCon.u1HeaAHU);
connect(CO2Set.y, duaDucCon.ppmCO2Set);
connect(winSta.y, not2.u);
connect(not2.y, duaDucCon.u1Win);
end Controller;