Buildings.Air.Systems.SingleZone.VAV.BaseClasses
Package with base classes for Buildings.Air.Systems.SingleZone.VAV
Information
This package contains base classes that are used to construct the models in Buildings.Air.Systems.SingleZone.VAV.
Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).
Package Content
Name | Description |
---|---|
ControllerEconomizer | Controller for economizer |
ControllerHeatingFan | Controller for heating and cooling |
Validation |
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerEconomizer
Controller for economizer
Information
Economizer controller.
Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).
Parameters
Type | Name | Default | Description |
---|---|---|---|
Control gain | |||
Real | kEco | 1 | Gain of controller |
Connectors
Type | Name | Description |
---|---|---|
input RealInput | TMixSet | Mixed air setpoint temperature [K] |
input RealInput | TMix | Measured mixed air temperature [K] |
input RealInput | TOut | Measured outside air temperature [K] |
input RealInput | yHea | Control signal for heating coil [1] |
input RealInput | TRet | Return air temperature [K] |
input RealInput | minOAFra | Minimum outside air fraction [1] |
output RealOutput | yOutAirFra | Control signal for outside air fraction [1] |
Modelica definition
model ControllerEconomizer "Controller for economizer"
extends Modelica.Blocks.Icons.Block;
parameter Real kEco(min=Modelica.Constants.small) = 1 "Gain of controller";
Modelica.Blocks.Interfaces.RealInput TMixSet(final unit="K", displayUnit="degC")
"Mixed air setpoint temperature";
Modelica.Blocks.Interfaces.RealInput TMix(final unit="K", displayUnit="degC")
"Measured mixed air temperature";
Modelica.Blocks.Interfaces.RealInput TOut(final unit="K", displayUnit="degC")
"Measured outside air temperature";
Modelica.Blocks.Interfaces.RealInput yHea(final unit="1")
"Control signal for heating coil";
Modelica.Blocks.Interfaces.RealInput TRet(final unit="K", displayUnit="degC")
"Return air temperature";
Modelica.Blocks.Interfaces.RealInput minOAFra(
min=0,
max=1,
final unit="1") "Minimum outside air fraction";
Modelica.Blocks.Interfaces.RealOutput yOutAirFra(final unit="1")
"Control signal for outside air fraction";
Modelica.Blocks.Nonlinear.VariableLimiter Limiter(strict=true)
"Signal limiter";
Modelica.Blocks.Sources.Constant const(final k=1)
"Constant output signal with value 1";
Modelica.Blocks.Logical.Switch switch1 "Switch to select control output";
Modelica.Blocks.MathBoolean.And and1(final nu=3) "Logical and";
Controls.Continuous.LimPID con(
final k=kEco,
final reverseAction=true,
final yMax=Modelica.Constants.inf,
final yMin=-Modelica.Constants.inf,
controllerType=Modelica.Blocks.Types.SimpleController.P) "Controller";
Modelica.Blocks.Math.Feedback feedback "Control error";
Buildings.Controls.OBC.CDL.Continuous.HysteresisWithHold hysYHea(
trueHoldDuration=60*15,
uLow=0.05,
uHigh=0.15) "Hysteresis with delay for heating signal";
Buildings.Controls.OBC.CDL.Continuous.HysteresisWithHold hysTMix(
uLow=-0.5,
uHigh=0.5,
trueHoldDuration=60*15) "Hysteresis with delay for mixed air temperature";
Modelica.Blocks.Logical.Not not1;
Modelica.Blocks.Math.Feedback feedback1;
Buildings.Controls.OBC.CDL.Continuous.HysteresisWithHold hysCooPot(
uHigh=0.5,
uLow=0,
trueHoldDuration=60*15)
"Hysteresis with delay to check for cooling potential of outside air";
equation
connect(Limiter.limit2, minOAFra);
connect(const.y, Limiter.limit1);
connect(minOAFra, switch1.u3);
connect(switch1.y, Limiter.u);
connect(and1.y, switch1.u2);
connect(con.u_s, TMixSet);
connect(TMix, con.u_m);
connect(con.y, switch1.u1);
connect(TOut, feedback.u2);
connect(feedback.u1, TMix);
connect(Limiter.y, yOutAirFra);
connect(hysYHea.u, yHea);
connect(feedback.y, hysTMix.u);
connect(feedback1.u1, TRet);
connect(feedback1.u2, TOut);
connect(feedback1.y, hysCooPot.u);
connect(hysCooPot.y, and1.u[1]);
connect(hysTMix.y, and1.u[2]);
connect(not1.y, and1.u[3]);
connect(hysYHea.y, not1.u);
end ControllerEconomizer;
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerHeatingFan
Controller for heating and cooling
Information
Controller for heating coil and fan speed.
Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).
Parameters
Type | Name | Default | Description |
---|---|---|---|
Real | minAirFlo | Minimum airflow rate of system [1] | |
Control gain | |||
Real | kHea | 1 | Gain of heating controller |
Real | kFan | 1 | Gain of controller for fan |
Connectors
Type | Name | Description |
---|---|---|
input RealInput | TSetRooCoo | Zone cooling setpoint [K] |
input RealInput | TRoo | Zone temperature measurement [K] |
input RealInput | TSetRooHea | Zone heating setpoint [K] |
output RealOutput | yFan | Control signal for fan [1] |
output RealOutput | yHea | Control signal for heating coil [1] |
Modelica definition
model ControllerHeatingFan "Controller for heating and cooling"
extends Modelica.Blocks.Icons.Block;
parameter Real kHea(min=Modelica.Constants.small) = 1
"Gain of heating controller";
parameter Real kFan(min=Modelica.Constants.small) = 1
"Gain of controller for fan";
parameter Real minAirFlo(
min=0,
max=1,
unit="1") "Minimum airflow rate of system";
Modelica.Blocks.Interfaces.RealInput TSetRooCoo(final unit="K", displayUnit="degC")
"Zone cooling setpoint";
Modelica.Blocks.Interfaces.RealInput TRoo(final unit="K", displayUnit="degC")
"Zone temperature measurement";
Modelica.Blocks.Interfaces.RealInput TSetRooHea(final unit="K", displayUnit="degC")
"Zone heating setpoint";
Modelica.Blocks.Interfaces.RealOutput yFan(final unit="1")
"Control signal for fan";
Modelica.Blocks.Interfaces.RealOutput yHea(final unit="1")
"Control signal for heating coil";
Controls.Continuous.LimPID conHeaCoi(final k=kHea, controllerType=Modelica.Blocks.Types.SimpleController.P)
"Controller for heating coil";
Controls.Continuous.LimPID conFan(
final k=kFan,
final yMax=1,
final yMin=minAirFlo,
controllerType=Modelica.Blocks.Types.SimpleController.P,
final reverseAction=true) "Controller for fan";
equation
connect(TSetRooHea, conHeaCoi.u_s);
connect(TRoo, conHeaCoi.u_m);
connect(conHeaCoi.y, yHea);
connect(conFan.u_s, TSetRooCoo);
connect(TRoo, conFan.u_m);
connect(conFan.y, yFan);
end ControllerHeatingFan;