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 |
---|---|
CoolingCoilValve | Cooling coil valve position control sequence |
Validation | Collection of validation models |
Buildings.Utilities.Plotters.Examples.BaseClasses.CoolingCoilValve
Cooling coil valve position control sequence
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
Type | Name | Default | Description |
---|---|---|---|
Controller | |||
Real | alc_prop_k | 1/100 | Recorded proportional controller gain [1/F] |
Real | alc_int_k | 0.5/100 | Recorded integral controller gain [1/F] |
Temperature | TSupHighLim | 50*(5/9) - 32*(5/9) + 273.15 | Recorded minimum supply air temperature for defining the upper limit of the valve position [K] |
Temperature | TSupHigLim | 42*(5/9) - 32*(5/9) + 273.15 | Recorded maximum supply air temperature for defining the upper limit of the valve position [K] |
Time | interval | 15 | Recorded interval at which integration part of the output gets updated [s] |
Enable | |||
Temperature | TOutCooCut | 50*(5/9) - 32*(5/9) + 273.15 | Recorded outdoor air temperature cooling threshold [K] |
Temperature | TOutDelta | 2*(5/9) - 32*(5/9) + 273.15 | Recorded outdoor air temperature cooling threshold hysteresis delta [K] |
Real | FanFeeCut | 15/100 | Recorded fan feedback threshold |
Real | FanFeeDelta | 10/100 | Recorded fan feedback threshold hysteresis delta |
Advanced | |||
Parameters | |||
Real | alc_k_unit_conv | 9/5 | Unit converter for controller gains from the ALC control logic |
Controller | |||
Boolean | reverseAction | true | Controller reverse action |
Real | k | alc_prop_k*alc_k_unit_conv | Proportional controller gain [1/K] |
Real | Ti | k*interval/(alc_int_k*alc_k_... | Integral controller gain [s] |
Real | uMax | 1 | Maximum controller signal [1] |
Real | uMin | 0 | Minimum controller signal [1] |
Connectors
Type | Name | Description |
---|---|---|
input BooleanInput | uFanSta | Optional additional status signal |
input RealInput | uFanFee | Supply fan feedback |
input RealInput | TSup | Measured supply air temperature (SAT) [K] |
input RealInput | TSupSet | Supply air temperature setpoint [K] |
input RealInput | TOut | Measured outdoor air temperature [K] |
output RealOutput | yCooVal | Cooling 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;