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

Package of sequences for control tower fan speed when waterside economizer is enabled

Information

This package contains sequences for cooling tower fan speed control when the waterside economizer is enabled. The implementation is based on section 5.20.12.2, item c in ASHRAE Guideline 36-2021.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.EnabledWSE.Controller Controller Tower fan speed control when waterside economizer is enabled
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.EnabledWSE.Subsequences Subsequences Package of subsequences for tower fan speed control with waterside economizer being enabled
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.EnabledWSE.Validation Validation Collection of validation models

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

Tower fan speed control when waterside economizer is enabled

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

Information

Block that outputs cooling tower fan speed ySpeSet when waterside economizer is enabled. This is implemented according to ASHRAE Guideline 36-2021, section 5.20.12.2, item c. It includes two subsequences:

Parameters

TypeNameDefaultDescription
IntegernChi2Total number of chillers
RealfanSpeMin0.1Minimum tower fan speed [1]
Integrated operation
RealchiMinCap[nChi]{1e4,1e4}Minimum cyclining load below which chiller will begin cycling [W]
Controller
SimpleControllerintOpeConBuildings.Controls.OBC.CDL.T...Type of controller
RealkIntOpe1Gain of controller
RealTiIntOpe0.5Time constant of integrator block [s]
RealTdIntOpe0.1Time constant of derivative block [s]
WSE-only
RealfanSpeChe0.005Lower threshold value to check fan speed
Controller
SimpleControllerchiWatConBuildings.Controls.OBC.CDL.T...Type of controller
RealkWSE1Gain of controller
RealTiWSE0.5Time constant of integrator block [s]
RealTdWSE0.1Time constant of derivative block [s]

Connectors

TypeNameDescription
input RealInputuChiLoaCurrent cooling load [W]
input BooleanInputuChi[nChi]Chiller enabling status: true=ON
input BooleanInputuWseWaterside economizer enabling status: true=ON
input RealInputTChiWatSupChilled water supply temperature [K]
input RealInputTChiWatSupSetChilled water supply temperature setpoint [K]
output RealOutputySpeSetTower fan speed setpoint when WSE is enabled and there is any chiller running [1]

Modelica definition

block Controller "Tower fan speed control when waterside economizer is enabled" parameter Integer nChi=2 "Total number of chillers"; parameter Real fanSpeMin( final unit="1")=0.1 "Minimum tower fan speed"; parameter Real chiMinCap[nChi]( each final unit="W", final quantity=fill("HeatFlowRate", nChi))={1e4,1e4} "Minimum cyclining load below which chiller will begin cycling"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController intOpeCon=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kIntOpe=1 "Gain of controller"; parameter Real TiIntOpe(final quantity="Time", final unit="s")=0.5 "Time constant of integrator block"; parameter Real TdIntOpe(final quantity="Time", final unit="s")=0.1 "Time constant of derivative block"; parameter Real fanSpeChe=0.005 "Lower threshold value to check fan speed"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController chiWatCon=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kWSE=1 "Gain of controller"; parameter Real TiWSE(final quantity="Time", final unit="s")=0.5 "Time constant of integrator block"; parameter Real TdWSE(final quantity="Time", final unit="s")=0.1 "Time constant of derivative block"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uChiLoa( final unit="W", final quantity="HeatFlowRate") "Current cooling load"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uChi[nChi] "Chiller enabling status: true=ON"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uWse "Waterside economizer enabling status: true=ON"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSup( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Chilled water supply temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSupSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Chilled water supply temperature setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput ySpeSet( final min=0, final max=1, final unit="1") "Tower fan speed setpoint when WSE is enabled and there is any chiller running"; protected Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.EnabledWSE.Subsequences.IntegratedOperation intOpe( final nChi=nChi, final chiMinCap=chiMinCap, final fanSpeMin=fanSpeMin, final conTyp=intOpeCon, final k=kIntOpe, final Ti=TiIntOpe, final Td=TdIntOpe) "Tower fan speed when the waterside economizer is enabled and the chillers are running"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.Towers.FanSpeed.EnabledWSE.Subsequences.WSEOperation wseOpe( final nChi=nChi, final fanSpeMin=fanSpeMin, final fanSpeChe=fanSpeChe, final chiWatCon=chiWatCon, final k=kWSE, final Ti=TiWSE, final Td=TdWSE) "Tower fan speed when the waterside economizer is running alone"; Buildings.Controls.OBC.CDL.Logical.MultiOr mulOr(final nin=nChi) "Logical or"; Buildings.Controls.OBC.CDL.Reals.Switch swi "Logical switch"; Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Logical switch"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer(final k=0) "Zero constant"; equation connect(intOpe.uChi, uChi); connect(intOpe.uChiLoa, uChiLoa); connect(wseOpe.TChiWatSup, TChiWatSup); connect(wseOpe.TChiWatSupSet, TChiWatSupSet); connect(mulOr.y, swi.u2); connect(intOpe.ySpeSet, swi.u1); connect(wseOpe.ySpeSet, swi.u3); connect(uWse, swi1.u2); connect(swi.y, swi1.u1); connect(zer.y, swi1.u3); connect(swi1.y,ySpeSet); connect(uChi, mulOr.u); connect(uWse, intOpe.uWse); connect(swi1.y, wseOpe.uFanSpe); connect(uChi, wseOpe.uChi); connect(uWse, wseOpe.uWse); end Controller;