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
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerEconomizer ControllerEconomizer Controller for economizer
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerHeatingFan ControllerHeatingFan Controller for heating and cooling
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.Validation Validation  

Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerEconomizer Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerEconomizer

Controller for economizer

Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerEconomizer

Information

Economizer controller.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Control gain
RealkEco1Gain of controller

Connectors

TypeNameDescription
input RealInputTMixSetMixed air setpoint temperature [K]
input RealInputTMixMeasured mixed air temperature [K]
input RealInputTOutMeasured outside air temperature [K]
input RealInputyHeaControl signal for heating coil [1]
input RealInputTRetReturn air temperature [K]
input RealInputminOAFraMinimum outside air fraction [1]
output RealOutputyOutAirFraControl 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 Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerHeatingFan

Controller for heating and cooling

Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerHeatingFan

Information

Controller for heating coil and fan speed.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
RealminAirFlominAirFlo(min=0, max=1, unit...Minimum airflow rate of system [1]
Control gain
RealkHea1Gain of heating controller
RealkFan1Gain of controller for fan

Connectors

TypeNameDescription
input RealInputTSetRooCooZone cooling setpoint [K]
input RealInputTRooZone temperature measurement [K]
input RealInputTSetRooHeaZone heating setpoint [K]
output RealOutputyFanControl signal for fan [1]
output RealOutputyHeaControl 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;