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.ControllerChillerDXHeatingEconomizer ControllerChillerDXHeatingEconomizer Controller for single zone VAV system
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerEconomizer ControllerEconomizer Controller for economizer
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerHeatingFan ControllerHeatingFan Controller for heating coil and fan signal
Buildings.Air.Systems.SingleZone.VAV.BaseClasses.Validation Validation  

Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerChillerDXHeatingEconomizer Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerChillerDXHeatingEconomizer

Controller for single zone VAV system

Buildings.Air.Systems.SingleZone.VAV.BaseClasses.ControllerChillerDXHeatingEconomizer

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

TypeNameDefaultDescription
TemperatureTSupChi_nominal Design value for chiller leaving water temperature [K]
Setpoints
RealminAirFlo Minimum airflow fraction of system [1]
DimensionlessRatiominOAFra Minimum outdoor air fraction of system [1]
TemperatureTSetSupAir Cooling supply air temperature setpoint [K]
Heating coil control
SimpleControllercontrollerTypeHeaBuildings.Controls.OBC.CDL.T...Type of controller
RealkHea0.1Gain for heating coil control signal [1/K]
RealTiHea900Time constant of integrator block for heating coil control signal [s]
RealTdHea0.1Time constant of derivative block for heating coil control signal [s]
Cooling coil control
SimpleControllercontrollerTypeCooBuildings.Controls.OBC.CDL.T...Type of controller
RealkCoo0.1Gain for cooling coil control signal [1/K]
RealTiCoo900Time constant of integrator block for cooling coil control signal [s]
RealTdCoo0.1Time constant of derivative block for cooling coil control signal [s]
Fan control
SimpleControllercontrollerTypeFanBuildings.Controls.OBC.CDL.T...Type of controller
RealkFan0.1Gain for fan signal [1/K]
RealTiFan900Time constant of integrator block for fan signal [s]
RealTdFan0.1Time constant of derivative block for fan signal [s]
Economizer control
SimpleControllercontrollerTypeEcoBuildings.Controls.OBC.CDL.T...Type of controller
RealkEco0.1Gain for economizer control signal [1/K]
RealTiEco300Time constant of integrator block for economizer control signal
RealTdEco0.1Time constant of derivative block for economizer control signal [s]

Connectors

TypeNameDescription
input RealInputTSetRooCooZone cooling setpoint temperature [K]
input RealInputTSetRooHeaZone heating setpoint temperature [K]
input RealInputTRooZone temperature measurement [K]
input RealInputTMixMeasured mixed air temperature [K]
input RealInputTSupMeasured supply air temperature after the cooling coil [K]
input RealInputTOutMeasured outside air temperature [K]
output RealOutputyHeaControl signal for heating coil [1]
output RealOutputyFanControl signal for fan [1]
output RealOutputyOutAirFraControl signal for outside air fraction [1]
output RealOutputyCooCoiValControl signal for cooling coil valve [1]
output RealOutputTSetSupChiSet point for chiller leaving water temperature [K]
output BooleanOutputchiOnOn signal for chiller
input BooleanInputuOccCurrent occupancy period, true if it is in occupant period

Modelica definition

model ControllerChillerDXHeatingEconomizer "Controller for single zone VAV system" extends Modelica.Blocks.Icons.Block; parameter Modelica.SIunits.Temperature TSupChi_nominal "Design value for chiller leaving water temperature"; parameter Real minAirFlo( final min=0, final max=1, final unit="1") "Minimum airflow fraction of system"; parameter Modelica.SIunits.DimensionlessRatio minOAFra "Minimum outdoor air fraction of system"; parameter Modelica.SIunits.Temperature TSetSupAir "Cooling supply air temperature setpoint"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeHea= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kHea( final unit="1/K")=0.1 "Gain for heating coil control signal"; parameter Real TiHea( final unit="s", final quantity="Time")=900 "Time constant of integrator block for heating coil control signal"; parameter Real TdHea( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for heating coil control signal"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeCoo= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kCoo( final unit="1/K")=0.1 "Gain for cooling coil control signal"; parameter Real TiCoo( final unit="s")=900 "Time constant of integrator block for cooling coil control signal"; parameter Real TdCoo( final unit="s")=0.1 "Time constant of derivative block for cooling coil control signal"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFan= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kFan(final unit="1/K")=0.1 "Gain for fan signal"; parameter Real TiFan( final unit="s", final quantity="Time")=900 "Time constant of integrator block for fan signal"; parameter Real TdFan( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for fan signal"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeEco= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kEco(final unit="1/K")=0.1 "Gain for economizer control signal"; parameter Real TiEco=300 "Time constant of integrator block for economizer control signal"; parameter Real TdEco( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for economizer control signal"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetRooCoo( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSetRooHea( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone heating setpoint temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TRoo( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone temperature measurement"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TMix( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured mixed air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TSup( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured supply air temperature after the cooling coil"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TOut( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured outside air temperature"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yHea( final unit="1") "Control signal for heating coil"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yFan( final unit="1") "Control signal for fan"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yOutAirFra( final unit="1") "Control signal for outside air fraction"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput yCooCoiVal( final unit="1") "Control signal for cooling coil valve"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput TSetSupChi( final unit="K", displayUnit="degC") "Set point for chiller leaving water temperature"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput chiOn "On signal for chiller"; 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) "Heating coil and fan controller"; BaseClasses.ControllerEconomizer conEco( final controllerTypeEco=controllerTypeEco, final kEco=kEco, final TiEco=TiEco, final TdEco=TdEco) "Economizer control"; 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) "Cooling coil valve controller"; Buildings.Controls.OBC.CDL.Logical.Switch swi "Switch the outdoor air fraction to 0 when in unoccupied mode"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uOcc "Current occupancy period, true if it is in occupant period"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(k=0) "Zero outside air fraction"; Buildings.Controls.OBC.CDL.Logical.Switch swiFan "Switch fan on"; Buildings.Controls.OBC.CDL.Continuous.Hysteresis hysHea( final uLow=0.01, final uHigh=0.05) "Hysteresis for heating"; Buildings.Controls.OBC.CDL.Logical.MultiOr orFan(nu=3) "Switch fan on if heating, cooling, or occupied"; Modelica.Blocks.Logical.And and1 "Logical and"; Buildings.Controls.OBC.CDL.Continuous.Greater chiOnTRoo(h=1) "Chiller on signal based on room temperature"; protected Modelica.Blocks.Sources.Constant TSetSupChiConst( final k=TSupChi_nominal) "Set point for chiller temperature"; Modelica.Blocks.Sources.Constant conMinOAFra( final k=minOAFra) "Minimum outside air fraction"; Modelica.Blocks.Sources.Constant TSetSupAirConst( final k=TSetSupAir) "Set point for supply air temperature"; 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;

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
Economizer control signal
SimpleControllercontrollerTypeEcoBuildings.Controls.OBC.CDL.T...Type of controller
RealkEco0.1Gain for economizer control signal [1/K]
RealTiEco900Time constant of integrator block for economizer control signal [s]
RealTdEco0.1Time constant of derivative block for economizer control signal [s]

Connectors

TypeNameDescription
input RealInputTMixSetMixed air setpoint temperature [K]
input RealInputTMixMeasured mixed air temperature [K]
input RealInputTOutMeasured outside air temperature [K]
input BooleanInputcooStaCooling status
input RealInputTRetReturn air temperature [K]
input RealInputminOAFraMinimum outside air fraction [1]
output RealOutputyOutAirFraControl signal for outside air fraction [1]
output BooleanOutputyCoiStaCooling coil status

Modelica definition

model ControllerEconomizer "Controller for economizer" extends Modelica.Blocks.Icons.Block; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeEco= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kEco(final unit="1/K")=0.1 "Gain for economizer control signal"; parameter Real TiEco( final unit="s", final quantity="Time")=900 "Time constant of integrator block for economizer control signal"; parameter Real TdEco( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for economizer control signal"; Modelica.Blocks.Interfaces.RealInput TMixSet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Mixed air setpoint temperature"; Modelica.Blocks.Interfaces.RealInput TMix( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured mixed air temperature"; Modelica.Blocks.Interfaces.RealInput TOut( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Measured outside air temperature"; Modelica.Blocks.Interfaces.BooleanInput cooSta "Cooling status"; Modelica.Blocks.Interfaces.RealInput TRet( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Return air temperature"; Modelica.Blocks.Interfaces.RealInput minOAFra( final min = 0, final 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( final 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 controllerType=controllerTypeEco, final k=kEco, final Ti=TiEco, final Td=TdEco, final reverseActing=false, final yMax=Modelica.Constants.inf, final yMin=-Modelica.Constants.inf) "Controller"; Modelica.Blocks.Math.Feedback feedback "Control error"; Modelica.Blocks.Math.Feedback feedback1; Controls.OBC.CDL.Continuous.Hysteresis hysChiPla( final uLow=0.95, final uHigh=0.98) "Hysteresis with delay to switch on cooling"; Modelica.Blocks.Logical.Or or1 "Saturated ecnomizer or no economizer"; Modelica.Blocks.Interfaces.BooleanOutput yCoiSta "Cooling coil status"; Modelica.Blocks.Logical.Not not1 "No economizer"; Controls.OBC.CDL.Continuous.Hysteresis hysCooPot( final uLow=0, final uHigh=0.5) "Hysteresis with delay to check for cooling potential of outside air"; Controls.OBC.CDL.Logical.TrueFalseHold truFalHolCooPot( final trueHoldDuration=60*15) "True/false hold for cooling potential"; Controls.OBC.CDL.Logical.TrueFalseHold truFalHolTMix( final trueHoldDuration=60*15) "True/false hold for mixing temperature"; Controls.OBC.CDL.Continuous.Hysteresis hysTMix( final uLow=-0.5, final uHigh=0.5) "Hysteresis with delay for mixed air temperature"; 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;

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

Controller for heating coil and fan signal

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
RealminAirFlo Minimum airflow fraction of system [1]
Heating coil signal
SimpleControllercontrollerTypeHeaBuildings.Controls.OBC.CDL.T...Type of controller
RealkHea0.1Gain for heating coil control signal [1/K]
RealTiHea900Time constant of integrator block for heating coil control signal [s]
RealTdHea0.1Time constant of derivative block for heating coil control signal [s]
Fan signal
SimpleControllercontrollerTypeFanBuildings.Controls.OBC.CDL.T...Type of controller
RealkFan0.1Gain for fan signal [1/K]
RealTiFan900Time constant of integrator block for fan signal [s]
RealTdFan0.1Time constant of derivative block for fan signal [s]

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 coil and fan signal" extends Modelica.Blocks.Icons.Block; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeHea= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kHea(final unit="1/K")=0.1 "Gain for heating coil control signal"; parameter Real TiHea( final unit="s", final quantity="Time")=900 "Time constant of integrator block for heating coil control signal"; parameter Real TdHea( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for heating coil control signal"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerTypeFan= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kFan(final unit="1/K")=0.1 "Gain for fan signal"; parameter Real TiFan( final unit="s", final quantity="Time")=900 "Time constant of integrator block for fan signal"; parameter Real TdFan( final unit="s", final quantity="Time")=0.1 "Time constant of derivative block for fan signal"; parameter Real minAirFlo( final min=0, final max=1, final unit="1") "Minimum airflow fraction of system"; Modelica.Blocks.Interfaces.RealInput TSetRooCoo( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone cooling setpoint"; Modelica.Blocks.Interfaces.RealInput TRoo( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Zone temperature measurement"; Modelica.Blocks.Interfaces.RealInput TSetRooHea( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "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 controllerType=controllerTypeHea, final k=kHea, final Ti=TiHea, final Td=TdHea) "Controller for heating coil"; 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) "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;