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 |
ControllerChillerDXHeatingEconomizer
|
Controller for single zone VAV system |
ControllerEconomizer
|
Controller for economizer |
ControllerHeatingFan
|
Controller for heating coil and fan signal |
Validation
|
|
Controller for single zone VAV system
Information
This is a controller for the single-zone VAV system with an economizer, a
heating coil and a cooling coil.
Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).
Parameters
Type | Name | Default | Description |
Temperature | TSupChi_nominal | | Design value for chiller leaving water temperature [K] |
Setpoints |
Real | minAirFlo | | Minimum airflow fraction of system [1] |
DimensionlessRatio | minOAFra | | Minimum outdoor air fraction of system [1] |
Temperature | TSetSupAir | | Cooling supply air temperature setpoint [K] |
Heating coil control |
SimpleController | controllerTypeHea | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kHea | 0.1 | Gain for heating coil control signal [1/K] |
Real | TiHea | 900 | Time constant of integrator block for heating coil control signal [s] |
Real | TdHea | 0.1 | Time constant of derivative block for heating coil control signal [s] |
Cooling coil control |
SimpleController | controllerTypeCoo | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kCoo | 0.1 | Gain for cooling coil control signal [1/K] |
Real | TiCoo | 900 | Time constant of integrator block for cooling coil control signal [s] |
Real | TdCoo | 0.1 | Time constant of derivative block for cooling coil control signal [s] |
Fan control |
SimpleController | controllerTypeFan | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kFan | 0.1 | Gain for fan signal [1/K] |
Real | TiFan | 900 | Time constant of integrator block for fan signal [s] |
Real | TdFan | 0.1 | Time constant of derivative block for fan signal [s] |
Economizer control |
SimpleController | controllerTypeEco | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kEco | 0.1 | Gain for economizer control signal [1/K] |
Real | TiEco | 300 | Time constant of integrator block for economizer control signal |
Real | TdEco | 0.1 | Time constant of derivative block for economizer control signal [s] |
Connectors
Type | Name | Description |
input RealInput | TSetRooCoo | Zone cooling setpoint temperature [K] |
input RealInput | TSetRooHea | Zone heating setpoint temperature [K] |
input RealInput | TRoo | Zone temperature measurement [K] |
input RealInput | TMix | Measured mixed air temperature [K] |
input RealInput | TSup | Measured supply air temperature after the cooling coil [K] |
input RealInput | TOut | Measured outside air temperature [K] |
output RealOutput | yHea | Control signal for heating coil [1] |
output RealOutput | yFan | Control signal for fan [1] |
output RealOutput | yOutAirFra | Control signal for outside air fraction [1] |
output RealOutput | yCooCoiVal | Control signal for cooling coil valve [1] |
output RealOutput | TSetSupChi | Set point for chiller leaving water temperature [K] |
output BooleanOutput | chiOn | On signal for chiller |
input BooleanInput | uOcc | Current occupancy period, true if it is in occupant period |
Modelica definition
model ControllerChillerDXHeatingEconomizer
extends Modelica.Blocks.Icons.Block;
parameter Modelica.SIunits.Temperature TSupChi_nominal
;
parameter Real minAirFlo(
final min=0,
final max=1,
final unit="1")
;
parameter Modelica.SIunits.DimensionlessRatio minOAFra
;
parameter Modelica.SIunits.Temperature TSetSupAir
;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeHea=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kHea(
final unit="1/K")=0.1
;
parameter Real TiHea(
final unit="s",
final quantity="Time")=900
;
parameter Real TdHea(
final unit="s",
final quantity="Time")=0.1
;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeCoo=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kCoo(
final unit="1/K")=0.1
;
parameter Real TiCoo(
final unit="s")=900
;
parameter Real TdCoo(
final unit="s")=0.1
;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFan=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kFan(
final unit="1/K")=0.1
;
parameter Real TiFan(
final unit="s",
final quantity="Time")=900
;
parameter Real TdFan(
final unit="s",
final quantity="Time")=0.1
;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeEco=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kEco(
final unit="1/K")=0.1
;
parameter Real TiEco=300
;
parameter Real TdEco(
final unit="s",
final quantity="Time")=0.1
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetRooCoo(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetRooHea(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TRoo(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TMix(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHea(
final unit="1") ;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yFan(
final unit="1") ;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutAirFra(
final unit="1")
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCooCoiVal(
final unit="1")
;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput TSetSupChi(
final unit="K",
displayUnit="degC")
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput chiOn
;
BaseClasses.ControllerHeatingFan conSup(
final controllerTypeHea=controllerTypeHea,
final kHea=kHea,
final TiHea=TiHea,
final TdHea=TdHea,
final controllerTypeFan=controllerTypeFan,
final kFan=kFan,
final TiFan=TiFan,
final TdFan=TdFan,
final minAirFlo = minAirFlo)
;
BaseClasses.ControllerEconomizer conEco(
final controllerTypeEco=controllerTypeEco,
final kEco=kEco,
final TiEco=TiEco,
final TdEco=TdEco)
;
Buildings.Controls.Continuous.LimPID conCooVal(
final controllerType=controllerTypeCoo,
final k=kCoo,
final Ti=TiCoo,
final Td=TdCoo,
final yMax=1,
final yMin=0,
final reverseActing=false)
;
Buildings.Controls.OBC.CDL.Logical.Switch swi
;
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uOcc
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(k=0)
;
Buildings.Controls.OBC.CDL.Logical.Switch swiFan ;
Buildings.Controls.OBC.CDL.Continuous.Hysteresis hysHea(
final uLow=0.01,
final uHigh=0.05)
;
Buildings.Controls.OBC.CDL.Logical.MultiOr orFan(nu=3)
;
Modelica.Blocks.Logical.And and1 ;
Buildings.Controls.OBC.CDL.Continuous.Greater chiOnTRoo(h=1)
;
protected
Modelica.Blocks.Sources.Constant TSetSupChiConst(
final k=TSupChi_nominal)
;
Modelica.Blocks.Sources.Constant conMinOAFra(
final k=minOAFra)
;
Modelica.Blocks.Sources.Constant TSetSupAirConst(
final k=TSetSupAir)
;
equation
connect(TSetSupAirConst.y,conCooVal. u_s);
connect(conSup.TRoo, TRoo);
connect(conEco.TRet, TRoo);
connect(conSup.yHea, yHea);
connect(conEco.yOutAirFra, yOutAirFra);
connect(conCooVal.y, yCooCoiVal);
connect(TSetSupChiConst.y, TSetSupChi);
connect(conCooVal.u_m, TSup);
connect(conMinOAFra.y, swi.u1);
connect(uOcc, swi.u2);
connect(swi.y, conEco.minOAFra);
connect(con.y, swi.u3);
connect(con.y, swiFan.u3);
connect(conSup.yFan, swiFan.u1);
connect(swiFan.y, yFan);
connect(conSup.yHea, hysHea.u);
connect(swiFan.u2, orFan.y);
connect(hysHea.y, orFan.u[1]);
connect(conEco.TMixSet, conCooVal.u_s);
connect(and1.y, chiOn);
connect(conEco.yCoiSta, and1.u1);
connect(uOcc, orFan.u[2]);
connect(TMix, conEco.TMix);
connect(TOut, conEco.TOut);
connect(TRoo, chiOnTRoo.u1);
connect(TSetRooCoo, chiOnTRoo.u2);
connect(TSetRooCoo, conSup.TSetRooCoo);
connect(TSetRooHea, conSup.TSetRooHea);
connect(chiOnTRoo.y, and1.u2);
connect(chiOnTRoo.y, conEco.cooSta);
connect(chiOnTRoo.y, orFan.u[3]);
end ControllerChillerDXHeatingEconomizer;
Controller for economizer
Information
Economizer controller.
Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).
Parameters
Type | Name | Default | Description |
Economizer control signal |
SimpleController | controllerTypeEco | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kEco | 0.1 | Gain for economizer control signal [1/K] |
Real | TiEco | 900 | Time constant of integrator block for economizer control signal [s] |
Real | TdEco | 0.1 | Time constant of derivative block for economizer control signal [s] |
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 BooleanInput | cooSta | Cooling status |
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] |
output BooleanOutput | yCoiSta | Cooling coil status |
Modelica definition
model ControllerEconomizer
extends Modelica.Blocks.Icons.Block;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeEco=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kEco(
final unit="1/K")=0.1
;
parameter Real TiEco(
final unit="s",
final quantity="Time")=900
;
parameter Real TdEco(
final unit="s",
final quantity="Time")=0.1
;
Modelica.Blocks.Interfaces.RealInput TMixSet(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.RealInput TMix(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.RealInput TOut(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.BooleanInput cooSta ;
Modelica.Blocks.Interfaces.RealInput TRet(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.RealInput minOAFra(
final min = 0,
final max = 1,
final unit="1")
;
Modelica.Blocks.Interfaces.RealOutput yOutAirFra(
final unit="1")
;
Modelica.Blocks.Nonlinear.VariableLimiter Limiter(
final strict=true)
;
Modelica.Blocks.Sources.Constant const(
final k=1)
;
Modelica.Blocks.Logical.Switch switch1 ;
Modelica.Blocks.MathBoolean.And and1(
final nu=3) ;
Controls.Continuous.LimPID con(
final controllerType=controllerTypeEco,
final k=kEco,
final Ti=TiEco,
final Td=TdEco,
final reverseActing=false,
final yMax=Modelica.Constants.inf,
final yMin=-Modelica.Constants.inf)
;
Modelica.Blocks.Math.Feedback feedback ;
Modelica.Blocks.Math.Feedback feedback1;
Controls.OBC.CDL.Continuous.Hysteresis hysChiPla(
final uLow=0.95,
final uHigh=0.98)
;
Modelica.Blocks.Logical.Or or1 ;
Modelica.Blocks.Interfaces.BooleanOutput yCoiSta ;
Modelica.Blocks.Logical.Not not1 ;
Controls.OBC.CDL.Continuous.Hysteresis hysCooPot(
final uLow=0,
final uHigh=0.5)
;
Controls.OBC.CDL.Logical.TrueFalseHold truFalHolCooPot(
final trueHoldDuration=60*15)
;
Controls.OBC.CDL.Logical.TrueFalseHold truFalHolTMix(
final trueHoldDuration=60*15)
;
Controls.OBC.CDL.Continuous.Hysteresis hysTMix(
final uLow=-0.5,
final uHigh=0.5)
;
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(feedback1.u1, TRet);
connect(feedback1.u2,TOut);
connect(Limiter.y, hysChiPla.u);
connect(or1.y, yCoiSta);
connect(not1.y, or1.u2);
connect(and1.y, not1.u);
connect(hysChiPla.y, or1.u1);
connect(feedback.y, hysTMix.u);
connect(hysTMix.y, truFalHolTMix.u);
connect(feedback1.y, hysCooPot.u);
connect(hysCooPot.y, truFalHolCooPot.u);
connect(truFalHolCooPot.y, and1.u[1]);
connect(truFalHolTMix.y, and1.u[2]);
connect(cooSta, and1.u[3]);
end ControllerEconomizer;
Controller for heating coil and fan signal
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 fraction of system [1] |
Heating coil signal |
SimpleController | controllerTypeHea | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kHea | 0.1 | Gain for heating coil control signal [1/K] |
Real | TiHea | 900 | Time constant of integrator block for heating coil control signal [s] |
Real | TdHea | 0.1 | Time constant of derivative block for heating coil control signal [s] |
Fan signal |
SimpleController | controllerTypeFan | Buildings.Controls.OBC.CDL.T... | Type of controller |
Real | kFan | 0.1 | Gain for fan signal [1/K] |
Real | TiFan | 900 | Time constant of integrator block for fan signal [s] |
Real | TdFan | 0.1 | Time constant of derivative block for fan signal [s] |
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
extends Modelica.Blocks.Icons.Block;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeHea=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kHea(
final unit="1/K")=0.1
;
parameter Real TiHea(
final unit="s",
final quantity="Time")=900
;
parameter Real TdHea(
final unit="s",
final quantity="Time")=0.1
;
parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFan=
Buildings.Controls.OBC.CDL.Types.SimpleController.PI
;
parameter Real kFan(
final unit="1/K")=0.1
;
parameter Real TiFan(
final unit="s",
final quantity="Time")=900
;
parameter Real TdFan(
final unit="s",
final quantity="Time")=0.1
;
parameter Real minAirFlo(
final min=0,
final max=1,
final unit="1")
;
Modelica.Blocks.Interfaces.RealInput TSetRooCoo(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.RealInput TRoo(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.RealInput TSetRooHea(
final unit="K",
displayUnit="degC",
final quantity="ThermodynamicTemperature")
;
Modelica.Blocks.Interfaces.RealOutput yFan(
final unit="1")
;
Modelica.Blocks.Interfaces.RealOutput yHea(
final unit="1")
;
Controls.Continuous.LimPID conHeaCoi(
final controllerType=controllerTypeHea,
final k=kHea,
final Ti=TiHea,
final Td=TdHea)
;
Controls.Continuous.LimPID conFan(
final controllerType=controllerTypeFan,
final k=kFan,
final Ti=TiFan,
final Td=TdFan,
final yMax=1,
final yMin=minAirFlo,
final reverseActing=false)
;
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;