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

Collection of validation models

Information

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

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.Pumps.ChilledWater.Validation.Controller Controller Validate chiller water pump control sequence

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

Validate chiller water pump control sequence

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

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.ChilledWater.Controller.

Modelica definition

model Controller "Validate chiller water pump control sequence" Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.ChilledWater.Controller heaNoLoc( final nPum=3, final nPum_nominal=3) "Pump speed control for plant with headered primary chilled water pump and without local DP sensor"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.ChilledWater.Controller dedNoLoc( final have_heaPum=false, final nPum=3, final nPum_nominal=3) "Pump speed control for plant with dedicated primary chilled water pump and without local DP sensor"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.ChilledWater.Controller dedLoc( final have_heaPum=false, final have_senDpChiWatRemWir=false, final nPum=3, final nPum_nominal=3) "Pump speed control for plant with dedicated primary chilled water pump and with local DP sensor"; protected Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt[3]( final k={2,1,3}) "Chilled water pump operating priority"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin chiWatFlo( final amplitude=0.25, final freqHz=1/7200, final offset=0.25) "Measured chilled water flow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin remPreSen1( final offset=8.4*6894.75, final freqHz=1/3600, final amplitude=0.2*6894.75) "Remote pressure difference sensor reading"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin remPreSen2( final offset=8.5*6894.75, final freqHz=1/3600, final startTime=2, final amplitude=0.05*6894.75) "Remote pressure difference sensor reading"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant difPreSet( final k=8.5*6894.75) "Pressure difference setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin locPreSen( final offset=8.5*6894.75, final freqHz=1/3600, final startTime=2, final amplitude=0.2*6894.75) "Local pressure difference sensor reading"; Buildings.Controls.OBC.CDL.Logical.TrueFalseHold leaChiProOn( final trueHoldDuration=2000, falseHoldDuration=0) "Lead chiller proven on status"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep( final nout=3) "Replicate plant enabling status"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaPla( final period=7200, final shift=200) "Plant enabling status"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse leaChiEna( final period=3600, final shift=300) "Lead chiller enabling status"; Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator reaRep( final nout=2) "Replicate real input"; Buildings.Templates.Components.Controls.StatusEmulator sta[3]( delayTime=fill(2, 3)) "Chilled water pump proven status emulator"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp locDpSet( final height=1000, final duration=1500, final offset=57000, final startTime=500) "Local differential pressure setpoint"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse isoVal1[2]( width={0.3,0.4}, period=fill(3600, 2), shift={300,500}) "Isolation valves commanded posiiton"; equation connect(conInt.y, heaNoLoc.uPumLeaLag); connect(chiWatFlo.y, heaNoLoc.VChiWat_flow); connect(remPreSen1.y, heaNoLoc.dpChiWat_remote[1]); connect(remPreSen2.y, heaNoLoc.dpChiWat_remote[2]); connect(remPreSen1.y, dedNoLoc.dpChiWat_remote[1]); connect(remPreSen2.y, dedNoLoc.dpChiWat_remote[2]); connect(locPreSen.y, dedLoc.dpChiWat_local); connect(enaPla.y, dedNoLoc.uPla); connect(enaPla.y, dedLoc.uPla); connect(leaChiEna.y, dedNoLoc.uLeaChiEna); connect(leaChiEna.y, dedLoc.uLeaChiEna); connect(leaChiEna.y, leaChiProOn.u); connect(leaChiProOn.y, dedNoLoc.uLeaChiSta); connect(leaChiProOn.y, dedLoc.uLeaChiSta); connect(leaChiProOn.y, dedNoLoc.uLeaChiWatReq); connect(leaChiProOn.y, dedLoc.uLeaChiWatReq); connect(enaPla.y, booRep.u); connect(booRep.y, dedNoLoc.uChiWatPum); connect(booRep.y, dedLoc.uChiWatPum); connect(difPreSet.y, reaRep.u); connect(reaRep.y, heaNoLoc.dpChiWatSet_remote); connect(reaRep.y, dedNoLoc.dpChiWatSet_remote); connect(heaNoLoc.yChiWatPum, sta.y1); connect(sta.y1_actual, heaNoLoc.uChiWatPum); connect(locDpSet.y, dedLoc.dpChiWatSet_local); connect(isoVal1.y, heaNoLoc.u1ChiWatIsoVal); end Controller;