Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.HeadPressure.

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
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Validation.Controller Controller Validation head pressure controller

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Validation.Controller Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Validation.Controller

Validation head pressure controller

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Validation.Controller

Information

This example validates composed chiller plant controller Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Controller. It shows the process of enabling plant, enabling waterside economizer and staging up one chiller. The plant:

The example shows following process:

Modelica definition

model Controller "Validation head pressure 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) "Chiller plant controller"; 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]) "Time table with smoothness method of constant segments"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 "Convert real to integer"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatSup( final height=4, final duration=7200, final offset=273.15 + 7) "Chilled water supply"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant phi(final k=0.65) "Outdoor relative humidity"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOut1( final k=313.15) "Outdoor dry bulb temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatRetUp( final height=5, final duration=3600, final offset=273.15 + 15) "Chilled water return temperature, upstream of WSE"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatRetDow( final height=3, final duration=3600, final offset=273.15 + 10) "Chilled water return downstream of WSE"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TConWatRet( final k=307.15) "Condenser water return temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TConWatSup( final k=305.15) "Condenser water supply temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpChiWat( final height=2*6895, final duration=3600, final offset=3*6895, final startTime=0) "Chilled water differential pressure"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp watLev( final height=1.2, final duration=3600, final offset=0.5) "Water level in cooling tower"; Buildings.Controls.OBC.CDL.Integers.GreaterThreshold intGreThr "Check if the WSE pump should be enabled"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TEntHex( final height=3, final duration=3600, final offset=273.15 + 14) "Chilled water temperature entering heat exchanger"; 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) "Time table with smoothness method of constant segments"; Buildings.Controls.OBC.CDL.Logical.Pre chiOne "Chiller one status"; Buildings.Controls.OBC.CDL.Logical.Pre chiTwo "Chiller two status"; Buildings.Controls.OBC.CDL.Logical.Pre conWatPum[2] "Condenser water pump status setpoint"; Buildings.Controls.OBC.CDL.Logical.Pre towSta[2] "Tower cell status"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant plaEna(final k=true) "Plant enable"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatRetDow1( final height=10, final duration=3600, final offset=273.15 + 15) "Chilled water return downstream of WSE"; Buildings.Controls.OBC.CDL.Logical.Pre chiWatPum[2] "Chilled water pumps"; Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol7[2]( final samplePeriod=fill(10, 2)) "Output the input signal with a zero order hold"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( k=0.5) "Times the nominal flow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TChiWatEntChi( final height=2.8, final duration=3600, final offset=273.15 + 9.5) "Chilled water return, entering chiller"; 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;