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 |
|---|---|
| Validate chiller water pump control sequence |
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Pumps.ChilledWater.Validation.Controller
Validate chiller water pump control sequence
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;