Buildings.Utilities.Plotters.Examples.BaseClasses

Package with base classes for Buildings.Utilities.Plotters.Examples

Information

This package contains base classes that are used to construct the models in Buildings.Utilities.Plotters.Examples.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.Utilities.Plotters.Examples.BaseClasses.CoolingCoilValve CoolingCoilValve Cooling coil valve position control sequence
Buildings.Utilities.Plotters.Examples.BaseClasses.Validation Validation Collection of validation models

Buildings.Utilities.Plotters.Examples.BaseClasses.CoolingCoilValve Buildings.Utilities.Plotters.Examples.BaseClasses.CoolingCoilValve

Cooling coil valve position control sequence

Buildings.Utilities.Plotters.Examples.BaseClasses.CoolingCoilValve

Information

Control sequence that outputs the cooling coil valve position. The implementation is according to the ALC EIKON control sequence implementation in one of LBNL buildings.

Parameters

TypeNameDefaultDescription
Controller
Realalc_prop_k1/100Recorded proportional controller gain [1/F]
Realalc_int_k0.5/100Recorded integral controller gain [1/F]
TemperatureTSupHighLim50*(5/9) - 32*(5/9) + 273.15Recorded minimum supply air temperature for defining the upper limit of the valve position [K]
TemperatureTSupHigLim42*(5/9) - 32*(5/9) + 273.15Recorded maximum supply air temperature for defining the upper limit of the valve position [K]
Timeinterval15Recorded interval at which integration part of the output gets updated [s]
Enable
TemperatureTOutCooCut50*(5/9) - 32*(5/9) + 273.15Recorded outdoor air temperature cooling threshold [K]
TemperatureTOutDelta2*(5/9) - 32*(5/9) + 273.15Recorded outdoor air temperature cooling threshold hysteresis delta [K]
RealFanFeeCut15/100Recorded fan feedback threshold
RealFanFeeDelta10/100Recorded fan feedback threshold hysteresis delta
Advanced
Parameters
Realalc_k_unit_conv9/5Unit converter for controller gains from the ALC control logic
Controller
BooleanreverseActiontrueController reverse action
Realkalc_prop_k*alc_k_unit_convProportional controller gain [1/K]
RealTik*interval/(alc_int_k*alc_k_...Integral controller gain [s]
RealuMax1Maximum controller signal [1]
RealuMin0Minimum controller signal [1]

Connectors

TypeNameDescription
input BooleanInputuFanStaOptional additional status signal
input RealInputuFanFeeSupply fan feedback
input RealInputTSupMeasured supply air temperature (SAT) [K]
input RealInputTSupSetSupply air temperature setpoint [K]
input RealInputTOutMeasured outdoor air temperature [K]
output RealOutputyCooValCooling valve control signal [1]

Modelica definition

block CoolingCoilValve "Cooling coil valve position control sequence" parameter Real alc_prop_k(final unit="1/F") = 1/100 "Recorded proportional controller gain"; parameter Real alc_int_k(final unit="1/F") = 0.5/100 "Recorded integral controller gain"; parameter Real alc_k_unit_conv = 9/5 "Unit converter for controller gains from the ALC control logic"; parameter Modelica.SIunits.Temperature TOutCooCut = 50 * (5/9) - 32 * (5/9) + 273.15 "Recorded outdoor air temperature cooling threshold"; parameter Modelica.SIunits.Temperature TOutDelta = 2 * (5/9) - 32 * (5/9) + 273.15 "Recorded outdoor air temperature cooling threshold hysteresis delta"; parameter Real FanFeeCut = 15/100 "Recorded fan feedback threshold"; parameter Real FanFeeDelta = 10/100 "Recorded fan feedback threshold hysteresis delta"; parameter Modelica.SIunits.Temperature TSupHighLim = 50 * (5/9) - 32 * (5/9) + 273.15 "Recorded minimum supply air temperature for defining the upper limit of the valve position"; parameter Modelica.SIunits.Temperature TSupHigLim = 42 * (5/9) - 32 * (5/9) + 273.15 "Recorded maximum supply air temperature for defining the upper limit of the valve position"; parameter Modelica.SIunits.Time interval(min = 1) = 15 "Recorded interval at which integration part of the output gets updated"; parameter Boolean reverseAction = true "Controller reverse action"; parameter Real k(final unit="1/K") = alc_prop_k * alc_k_unit_conv "Proportional controller gain"; parameter Real Ti(final unit="s") = k*interval/(alc_int_k * alc_k_unit_conv) "Integral controller gain"; parameter Real uMax( final min=0, final max=1, final unit="1") = 1 "Maximum controller signal"; parameter Real uMin( final min=0, final max=1, final unit="1") = 0 "Minimum controller signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uFanSta "Optional additional status signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uFanFee "Supply fan feedback"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup( final unit="K", final quantity = "ThermodynamicTemperature") "Measured supply air temperature (SAT)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( final unit="K", final quantity = "ThermodynamicTemperature") "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", final quantity = "ThermodynamicTemperature") "Measured outdoor air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCooVal( final min=0, final max=1, final unit="1") "Cooling valve control signal"; Buildings.Controls.OBC.CDL.Continuous.LimPID limPI( final reverseAction=reverseAction, final controllerType=Modelica.Blocks.Types.SimpleController.PI, final k=k, final Ti = Ti, final yMax=1, final yMin=0, final y_reset=0, final reset=Buildings.Controls.OBC.CDL.Types.Reset.Parameter) "Custom PI controller"; Buildings.Controls.OBC.CDL.Continuous.Line higLim( final limitBelow=true, final limitAbove=true) "Defines lower limit of the cooling valve signal at low range SATs"; protected Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yCooValMin( final k=uMin) "Minimal control loop signal limit when supply air temperature is at a defined high limit"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yCooValMax( final k=uMax) "Minimal control loop signal limit when supply air temperature is at a defined low limit"; Buildings.Controls.OBC.CDL.Continuous.Hysteresis TOutThr( final uLow = TOutCooCut - TOutDelta, final uHigh = TOutCooCut) "Determines whether the outdoor air temperature is below a treashold"; Buildings.Controls.OBC.CDL.Continuous.Hysteresis uFanFeeThr( final uLow=FanFeeCut - FanFeeDelta, final uHigh= FanFeeCut) "Checks if the fan status is above a threshold"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupMin( final k=TSupHigLim) "Low range supply air temperature low limit"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupMax( final k=TSupHighLim) "Low range supply air temperature high limit"; Buildings.Controls.OBC.CDL.Logical.And3 andIntErr "Outputs controller enable signal"; Buildings.Controls.OBC.CDL.Continuous.Min min "Switches the signal between controller and low range limiter signals"; Buildings.Controls.OBC.CDL.Logical.Change cha "Detect signal change"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea; Buildings.Controls.OBC.CDL.Continuous.Product pro; equation connect(TOut, TOutThr.u); connect(TOutThr.y, andIntErr.u1); connect(TSup, higLim.u); connect(yCooVal,min. y); connect(TSupMax.y, higLim.x2); connect(yCooValMax.y, higLim.f2); connect(higLim.y,min. u2); connect(TSupSet, limPI.u_s); connect(TSup, limPI.u_m); connect(andIntErr.u2, uFanFeeThr.y); connect(uFanFee, uFanFeeThr.u); connect(andIntErr.y, cha.u); connect(cha.y, limPI.trigger); connect(TSupMin.y, higLim.x1); connect(yCooValMin.y, higLim.f1); connect(uFanSta, andIntErr.u3); connect(andIntErr.y, booToRea.u); connect(limPI.y, pro.u1); connect(booToRea.y, pro.u2); connect(min.u1, pro.y); end CoolingCoilValve;