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.
model Controller
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Controller chiPlaCon(
dTChiMinLif={12,12},
dTChiMaxLif={18,18},
TOutWetDes=288.15,
minFloSet={0.0089,0.0089},
maxFloSet={0.025,0.025},
nPum_nominal=2,
have_modPosChiVal=true,
final closeCoupledPlant=false,
final nChi=2,
final have_parChi=true,
final have_ponChi=false,
final TChiWatSupMin={278.15,278.15},
final heaExcAppDes=2,
final nChiWatPum=2,
final nSenChiWatPum=1,
final nConWatPum=2,
final have_heaConWatPum=true,
final conWatPumStaMat=[0,0; 1,0; 1,0; 1,1; 1,1; 1,1],
final staMat=[1,0; 1,1],
final desConWatPumSpe={0,0.5,0.75,0.5,0.75,0.9},
final towCelOnSet={0,1,1,2,2,2},
final nTowCel=2,
final cooTowAppDes=2,
VHeaExcDes_flow=0.015,
VChiWat_flow_nominal=0.5,
final dpChiWatMax={10*6894.76},
final TPlaChiWatSupMax=291.15,
final have_WSE=true,
final chiDesCap={200,200},
final chiMinCap={20,20},
final chiTyp={Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.ChillersAndStages.PositiveDisplacement,
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Types.ChillersAndStages.PositiveDisplacement},
TConWatSup_nominal={293.15,293.15},
TConWatRet_nominal={303.15,303.15},
watLevMin=0.7,
watLevMax=1)
;
Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin1(
final smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments,
final table=[0,2; 600,4; 1200,6; 1800,6; 2400,8; 3000,8; 3600,8; 4200,6; 4800,6;
5400,6; 6000,7; 6600,7; 7200,7])
;
Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatSup(
final height=4,
final duration=7200,
final offset=273.15 + 7) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant phi(
final k=0.65)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOut1(
final k=313.15) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatRetUp(
final height=5,
final duration=3600,
final offset=273.15 + 15)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatRetDow(
final height=3,
final duration=3600,
final offset=273.15 + 10) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TConWatRet(
final k=307.15)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TConWatSup(
final k=305.15)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpChiWat(
final height=2*6895,
final duration=3600,
final offset=3*6895,
final startTime=0) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp watLev(
final height=1.2,
final duration=3600,
final offset=0.5) ;
Buildings.Controls.OBC.CDL.Integers.GreaterThreshold intGreThr
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TEntHex(
final height=3,
final duration=3600,
final offset=273.15 + 14)
;
Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable chiWatFlo(
final smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.LinearSegments,
final table=[0,0; 6500,0; 7000,0.005; 7500,0.008; 9200,0.02; 10000,0.020;
10800,0.024],
extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint)
;
Buildings.Controls.OBC.CDL.Logical.Pre chiOne ;
Buildings.Controls.OBC.CDL.Logical.Pre chiTwo
;
Buildings.Controls.OBC.CDL.Logical.Pre conWatPum[2]
;
Buildings.Controls.OBC.CDL.Logical.Pre towSta[2] ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant plaEna(
final k=true)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatRetDow1(
final height=10,
final duration=3600,
final offset=273.15 + 15) ;
Buildings.Controls.OBC.CDL.Logical.Pre chiWatPum[2]
;
Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol7[2](
final samplePeriod=
fill(10, 2))
;
Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(
k=0.5) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatEntChi(
final height=2.8,
final duration=3600,
final offset=273.15 + 9.5) ;
equation
connect(timTabLin1.y[1], reaToInt1.u);
connect(reaToInt1.y, chiPlaCon.TChiWatSupResReq);
connect(phi.y, chiPlaCon.phi);
connect(TChiWatRetUp.y, chiPlaCon.TChiWatRetUp);
connect(TChiWatSup.y, chiPlaCon.TChiWatSup);
connect(TChiWatRetDow.y, chiPlaCon.TChiWatRetDow);
connect(TConWatSup.y, chiPlaCon.TConWatSup);
connect(watLev.y, chiPlaCon.watLev);
connect(dpChiWat.y, chiPlaCon.dpChiWat_remote[1]);
connect(reaToInt1.y, chiPlaCon.chiPlaReq);
connect(reaToInt1.y, intGreThr.u);
connect(intGreThr.y, chiPlaCon.uEcoPum);
connect(TEntHex.y, chiPlaCon.TEntHex);
connect(chiPlaCon.yChi[1], chiOne.u);
connect(chiPlaCon.yChi[2], chiTwo.u);
connect(chiOne.y, chiPlaCon.uChiWatReq[1]);
connect(chiOne.y, chiPlaCon.uConWatReq[1]);
connect(chiOne.y, chiPlaCon.uChi[1]);
connect(chiTwo.y, chiPlaCon.uChiWatReq[2]);
connect(chiTwo.y, chiPlaCon.uConWatReq[2]);
connect(chiTwo.y, chiPlaCon.uChi[2]);
connect(chiPlaCon.yConWatPum, conWatPum.u);
connect(conWatPum.y, chiPlaCon.uConWatPum);
connect(chiPlaCon.yTowCel, towSta.u);
connect(towSta.y, chiPlaCon.uTowSta);
connect(plaEna.y, chiPlaCon.uPlaSchEna);
connect(TConWatRet.y, chiPlaCon.TConWatTowRet);
connect(TConWatRet.y, chiPlaCon.TConWatRet[1]);
connect(TConWatRet.y, chiPlaCon.TConWatRet[2]);
connect(TChiWatSup.y, chiPlaCon.TChiWatSupChi[1]);
connect(TChiWatSup.y, chiPlaCon.TChiWatSupChi[2]);
connect(chiPlaCon.yChiWatIsoVal, zerOrdHol7.u);
connect(zerOrdHol7.y, chiPlaCon.uChiWatIsoVal);
connect(TChiWatRetDow1.y, chiPlaCon.TOut);
connect(chiPlaCon.yChiWatPum, chiWatPum.u);
connect(chiWatPum.y, chiPlaCon.uChiWatPum);
connect(chiPlaCon.yChiPumSpe, gai.u);
connect(gai.y, chiPlaCon.VChiWat_flow);
connect(TChiWatEntChi.y, chiPlaCon.TChiWatEntChi);
end Controller;