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

Collection of validation models

Information

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

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.Towers.FanSpeed.Validation.Controller Controller Validation sequence of controlling tower fan speed

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

Validation sequence of controlling tower fan speed

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

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.Controller.

It shows the calculations of the fan speed setpoint for the three different plants, including the close coupled plants that have waterside economizer (cloCouWitWse), the less coupled plants that have waterside economizer (lesCouWitWse), and the close coupled plants that have no waterside economizer (cloCouNoWse).

Modelica definition

model Controller "Validation sequence of controlling tower fan speed" Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.Controller cloCouWitWse "Tower fan speed controller of plant that is close coupled and has waterside economizer"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.Controller lesCouWitWse(final closeCoupledPlant=false) "Tower fan speed controller of plant that is less coupled and has waterside economizer"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.Controller cloCouNoWse(final have_WSE=false) "Tower fan speed controller of plant that is close coupled and has no waterside economizer"; protected Buildings.Controls.OBC.CDL.Logical.Sources.Pulse wseSta( final width=0.2, final period=3600, shift=-3000) "Waterside economizer enabling status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp plaCap( final height=8e5, final duration=3600, final offset=1e5) "Real operating chiller plant capacity"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin conSup( final amplitude=2, final freqHz=1/1800, final offset=273.15 + 29) "Condenser water supply temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ram2( final height=3, final duration=3600, final startTime=1500) "Ramp"; Buildings.Controls.OBC.CDL.Reals.Add add1 "Add real inputs"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ram3( final height=3, final duration=3600, final startTime=1500) "Ramp"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin conRet2( final amplitude=2, final freqHz=1/1800, final offset=273.15 + 28) "Condenser water return temperature"; Buildings.Controls.OBC.CDL.Reals.Add add3 "Add real inputs"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hpTowSpe1(final k=0.5) "Head pressure control maximum tower speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hpTowSpe2(final k=0) "Head pressure control maximum tower speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant chiWatSupSet( final k=273.15 + 6.5) "Chilled water supply setpoint"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse chiSta1( final width=0.2, final period=3600) "Chiller one enabling status"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant chiSta2(final k=false) "Chiller two enabling status"; Buildings.Controls.OBC.CDL.Logical.Or or3 "Logical or"; Buildings.Controls.OBC.CDL.Logical.Or or4 "Logical or"; Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep( final nout=4) "Replicate boolean input"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer( final k=0) "Constant zero"; Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Logical switch"; Buildings.Controls.OBC.CDL.Reals.Switch swi2 "Logical switch"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=0) "Zero constant"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin( final amplitude=0.2*1e4, final freqHz=1/1200, final offset=1.1*1e4, final startTime=180) "Chiller load"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin chiSup( final amplitude=0.5, final freqHz=1/1800, final offset=273.15 + 7.1) "Chilled water supply temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ram1( final height=3, final duration=3600, final startTime=1500) "Ramp"; Buildings.Controls.OBC.CDL.Reals.Add add2 "Add real inputs"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse conWatPum[2]( final width=fill(0.1, 2), final period=fill(3600, 2)) "Condenser water pump status"; Buildings.Controls.OBC.CDL.Logical.Not not2[2] "Logical not"; equation connect(ram2.y,add1. u2); connect(conSup.y,add1. u1); connect(conRet2.y, add3.u1); connect(ram3.y, add3.u2); connect(or3.y, booRep.u); connect(chiSta1.y, not1.u); connect(not1.y, swi1.u2); connect(hpTowSpe1.y, swi1.u1); connect(zer.y, swi1.u3); connect(con1.y,swi2. u3); connect(sin.y,swi2. u1); connect(not1.y, swi2.u2); connect(not1.y, cloCouWitWse.uChi[1]); connect(chiSta2.y, cloCouWitWse.uChi[2]); connect(wseSta.y, cloCouWitWse.uWse); connect(chiSup.y,add2. u1); connect(ram1.y,add2. u2); connect(add2.y, cloCouWitWse.TChiWatSup); connect(chiWatSupSet.y, cloCouWitWse.TChiWatSupSet); connect(plaCap.y, cloCouWitWse.reqPlaCap); connect(swi1.y, cloCouWitWse.uMaxSpeSet[1]); connect(hpTowSpe2.y, cloCouWitWse.uMaxSpeSet[2]); connect(booRep.y, cloCouWitWse.uTow); connect(or3.y, cloCouWitWse.uPla); connect(add3.y, cloCouWitWse.TConWatRet); connect(not1.y, lesCouWitWse.uChi[1]); connect(chiSta2.y, lesCouWitWse.uChi[2]); connect(wseSta.y, lesCouWitWse.uWse); connect(add2.y, lesCouWitWse.TChiWatSup); connect(chiWatSupSet.y, lesCouWitWse.TChiWatSupSet); connect(plaCap.y, lesCouWitWse.reqPlaCap); connect(swi1.y, lesCouWitWse.uMaxSpeSet[1]); connect(hpTowSpe2.y, lesCouWitWse.uMaxSpeSet[2]); connect(booRep.y, lesCouWitWse.uTow); connect(or3.y, lesCouWitWse.uPla); connect(add3.y, lesCouWitWse.TConWatRet); connect(add1.y, lesCouWitWse.TConWatSup); connect(not1.y, cloCouNoWse.uChi[1]); connect(chiSta2.y, cloCouNoWse.uChi[2]); connect(chiWatSupSet.y, cloCouNoWse.TChiWatSupSet); connect(plaCap.y, cloCouNoWse.reqPlaCap); connect(swi1.y, cloCouNoWse.uMaxSpeSet[1]); connect(hpTowSpe2.y, cloCouNoWse.uMaxSpeSet[2]); connect(booRep.y, cloCouNoWse.uTow); connect(or3.y, cloCouNoWse.uPla); connect(add3.y, cloCouNoWse.TConWatRet); connect(not1.y, or4.u1); connect(chiSta2.y, or4.u2); connect(wseSta.y, or3.u2); connect(or4.y, or3.u1); connect(swi2.y, cloCouWitWse.uChiLoa); connect(swi2.y, lesCouWitWse.uChiLoa); connect(conWatPum.y, not2.u); connect(not2.y, cloCouWitWse.uConWatPum); connect(not2.y, lesCouWitWse.uConWatPum); connect(not2.y, cloCouNoWse.uConWatPum); end Controller;