Buildings.Controls.OBC.RadiantSystems.Cooling

Package with control sequences for radiant cooling systems

Information

Package with controllers for radiant cooling systems.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TRoomRelHum HighMassSupplyTemperature_TRoomRelHum Controller for radiant cooling that controls the room temperature using constant mass flow and variable supply temperature
Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TSurRelHum HighMassSupplyTemperature_TSurRelHum Controller for radiant cooling that controls the surface temperature using constant mass flow and variable supply temperature
Buildings.Controls.OBC.RadiantSystems.Cooling.Validation Validation Collection of validation models

Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TRoomRelHum Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TRoomRelHum

Controller for radiant cooling that controls the room temperature using constant mass flow and variable supply temperature

Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TRoomRelHum

Information

Controller for a radiant cooling system.

The controller tracks the room temperature set point TRooSet by adjusting the supply water temperature set point TSupSet based on the output signal y of the proportional controller. The supply water temperature set point TSupSet is limited by the dew point temperature that is calculated based on the inputs TRoo and phiRoo. The pump is either off or operates at full speed, in which case yPum = 1. The pump control is based on a hysteresis that switches the pump on when the output of the proportional controller y exceeds 0.2, and the pump is commanded off when the output falls below 0.1. See figure below for the control charts.

Image of control output

For systems with high thermal mass, this controller should be left configured as a P-controller, which is the default setting. PI-controller likely saturate due to the slow system response.

Parameters

TypeNameDefaultDescription
RealTSupSet_max297.15Maximum cooling supply water temperature [K]
RealTSupSet_min Minimum cooling supply water temperature [K]
Control gains
SimpleControllercontrollerTypeBuildings.Controls.OBC.CDL.T...Type of controller
Realk2Gain of controller
RealTi3600Time constant of integrator block [s]
RealTd0.1Time constant of derivative block [s]

Connectors

TypeNameDescription
input RealInputTRooSetSet point for room air temperature [K]
input RealInputTRooMeasured room air temperature [K]
input RealInputphiRooMeasured room air relative humidity [1]
output RealOutputTSupSetSet point for cooling supply water temperature [K]
output RealOutputyControl signal for heating system from P controller [1]
output BooleanOutputonOutputs true if the system is demanded on
output RealOutputyPumPump speed control signal [1]

Modelica definition

block HighMassSupplyTemperature_TRoomRelHum "Controller for radiant cooling that controls the room temperature using constant mass flow and variable supply temperature" parameter Real TSupSet_max( final unit="K", displayUnit="degC") = 297.15 "Maximum cooling supply water temperature"; parameter Real TSupSet_min( final unit="K", displayUnit="degC") "Minimum cooling supply water temperature"; parameter Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.P "Type of controller"; parameter Real k( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=2 "Gain of controller"; parameter Real Ti( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=3600 "Time constant of integrator block"; parameter Real Td( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 "Time constant of derivative block"; Controls.OBC.CDL.Interfaces.RealInput TRooSet( final unit="K", displayUnit="degC") "Set point for room air temperature"; Controls.OBC.CDL.Interfaces.RealInput TRoo( final unit="K", displayUnit="degC") "Measured room air temperature"; Controls.OBC.CDL.Interfaces.RealInput phiRoo( final unit="1") "Measured room air relative humidity"; Controls.OBC.CDL.Interfaces.RealOutput TSupSet( final unit="K", displayUnit="degC") "Set point for cooling supply water temperature"; Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=0, final max=1) "Control signal for heating system from P controller"; Controls.OBC.CDL.Interfaces.BooleanOutput on "Outputs true if the system is demanded on"; Controls.OBC.CDL.Interfaces.RealOutput yPum( final unit="1", final min=0, final max=1) "Pump speed control signal"; CDL.Psychrometrics.DewPoint_TDryBulPhi dewPoi "Dew point temperature, used to avoid condensation"; CDL.Reals.Hysteresis hysCoo( uLow=0.1, uHigh=0.2) "Hysteresis to switch system on and off"; CDL.Reals.PID conCoo( final controllerType=controllerType, final k=k, final Ti = Ti, final Td = Td, final yMax=1, final yMin=0, reverseActing=false) "Controller for cooling"; protected CDL.Reals.Sources.Constant TSupMin( final k( final unit="K", displayUnit="degC") = TSupSet_min, y(final unit="K", displayUnit="degC")) "Minimum cooling supply water temperature"; CDL.Reals.Sources.Constant TSupMax( final k( final unit="K", displayUnit="degC") = TSupSet_max, y(final unit="K", displayUnit="degC")) "Maximum cooling supply water temperature"; CDL.Reals.Sources.Constant one(final k=1) "Outputs one"; CDL.Reals.Sources.Constant zero(final k=0) "Outputs zero"; CDL.Reals.Line TSupNoDewPoi( limitBelow=false, limitAbove=false, y(final unit="K", displayUnit="degC")) "Set point for supply water temperature without consideration of dew point"; CDL.Reals.Max TSupCoo "Cooling water supply temperature"; CDL.Conversions.BooleanToReal booToRea( final realFalse=0, final realTrue=1) "Pump control signal as a Real number (either 0 or 1)"; equation connect(hysCoo.y,booToRea.u); connect(conCoo.y,hysCoo.u); connect(TSupCoo.u2,dewPoi.TDewPoi); connect(TSupCoo.y, TSupSet); connect(conCoo.y, y); connect(conCoo.u_s, TRooSet); connect(dewPoi.phi, phiRoo); connect(booToRea.y, yPum); connect(hysCoo.y, on); connect(TSupNoDewPoi.x1, zero.y); connect(TSupNoDewPoi.f1, TSupMax.y); connect(TSupNoDewPoi.x2, one.y); connect(TSupNoDewPoi.f2, TSupMin.y); connect(conCoo.y, TSupNoDewPoi.u); connect(TSupNoDewPoi.y, TSupCoo.u1); connect(TRoo, conCoo.u_m); connect(TRoo, dewPoi.TDryBul); end HighMassSupplyTemperature_TRoomRelHum;

Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TSurRelHum Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TSurRelHum

Controller for radiant cooling that controls the surface temperature using constant mass flow and variable supply temperature

Buildings.Controls.OBC.RadiantSystems.Cooling.HighMassSupplyTemperature_TSurRelHum

Information

Controller for a radiant cooling system.

The controller tracks the surface temperature set point TSurSet by adjusting the supply water temperature set point TSupSet based on the output signal y of the proportional controller. Both, the surface temperature set point TSurSet and the resulting supply water temperature set point TSupSet are limited by the dew point temperature that is calculated based on the inputs TRoo and phiRoo. The pump is either off or operates at full speed, in which case yPum = 1. The pump control is based on a hysteresis that switches the pump on when the output of the proportional controller y exceeds 0.2, and the pump is commanded off when the output falls below 0.1. See figure below for the control charts.

Image of control output

ASHRAE Standard 55-2004 recommends that the surface temperature of a radiant floor is above 18°C to avoid discomfort for spaces in which people wear typical footwear.

For systems with high thermal mass, this controller should be left configured as a P-controller, which is the default setting. PI-controller likely saturate due to the slow system response.

Parameters

TypeNameDefaultDescription
RealTSupSet_max297.15Maximum cooling supply water temperature [K]
RealTSupSet_min Minimum cooling supply water temperature [K]
Control gains
SimpleControllercontrollerTypeBuildings.Controls.OBC.CDL.T...Type of controller
Realk2Gain of controller
RealTi3600Time constant of integrator block [s]
RealTd0.1Time constant of derivative block [s]

Connectors

TypeNameDescription
input RealInputTSurSetSet point for room air temperature [K]
input RealInputTRooMeasured room air temperature [K]
input RealInputphiRooMeasured room air relative humidity [1]
input RealInputTSurMeasured room air temperature [K]
output RealOutputTSupSetSet point for cooling supply water temperature [K]
output RealOutputyControl signal for heating system from P controller [1]
output BooleanOutputonOutputs true if the system is demanded on
output RealOutputyPumPump speed control signal [1]

Modelica definition

block HighMassSupplyTemperature_TSurRelHum "Controller for radiant cooling that controls the surface temperature using constant mass flow and variable supply temperature" parameter Real TSupSet_max( final unit="K", displayUnit="degC") = 297.15 "Maximum cooling supply water temperature"; parameter Real TSupSet_min( final unit="K", displayUnit="degC") "Minimum cooling supply water temperature"; parameter Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.P "Type of controller"; parameter Real k( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=2 "Gain of controller"; parameter Real Ti( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=3600 "Time constant of integrator block"; parameter Real Td( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 "Time constant of derivative block"; Controls.OBC.CDL.Interfaces.RealInput TSurSet( final unit="K", displayUnit="degC") "Set point for room air temperature"; Controls.OBC.CDL.Interfaces.RealInput TRoo( final unit="K", displayUnit="degC") "Measured room air temperature"; Controls.OBC.CDL.Interfaces.RealInput phiRoo( final unit="1") "Measured room air relative humidity"; Controls.OBC.CDL.Interfaces.RealInput TSur( final unit="K", displayUnit="degC") "Measured room air temperature"; Controls.OBC.CDL.Interfaces.RealOutput TSupSet( final unit="K", displayUnit="degC") "Set point for cooling supply water temperature"; Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=0, final max=1) "Control signal for heating system from P controller"; Controls.OBC.CDL.Interfaces.BooleanOutput on "Outputs true if the system is demanded on"; Controls.OBC.CDL.Interfaces.RealOutput yPum( final unit="1", final min=0, final max=1) "Pump speed control signal"; CDL.Psychrometrics.DewPoint_TDryBulPhi dewPoi "Dew point temperature, used to avoid condensation"; CDL.Reals.Hysteresis hysCoo( uLow=0.1, uHigh=0.2) "Hysteresis to switch system on and off"; CDL.Reals.PID conCoo( final controllerType=controllerType, final k=k, final Ti = Ti, final Td = Td, final yMax=1, final yMin=0, reverseActing=false) "Controller for cooling"; protected CDL.Reals.Sources.Constant TSupMin( final k( final unit="K", displayUnit="degC") = TSupSet_min, y(final unit="K", displayUnit="degC")) "Minimum cooling supply water temperature"; CDL.Reals.Sources.Constant TSupMax( final k( final unit="K", displayUnit="degC") = TSupSet_max, y(final unit="K", displayUnit="degC")) "Maximum cooling supply water temperature"; CDL.Reals.Sources.Constant one(final k=1) "Outputs one"; CDL.Reals.Sources.Constant zero(final k=0) "Outputs zero"; CDL.Reals.Line TSupNoDewPoi( limitBelow=false, limitAbove=false, y(final unit="K", displayUnit="degC")) "Set point for supply water temperature without consideration of dew point"; CDL.Reals.Max TSupCoo "Cooling water supply temperature"; CDL.Conversions.BooleanToReal booToRea( final realFalse=0, final realTrue=1) "Pump control signal as a Real number (either 0 or 1)"; CDL.Reals.Max TSurConMin "Minimum allowed supply air temperature to avoid condensation"; equation connect(hysCoo.y,booToRea.u); connect(conCoo.y,hysCoo.u); connect(TSupCoo.y, TSupSet); connect(conCoo.y, y); connect(dewPoi.phi, phiRoo); connect(booToRea.y, yPum); connect(hysCoo.y, on); connect(TSupNoDewPoi.x1, zero.y); connect(TSupNoDewPoi.f1, TSupMax.y); connect(TSupNoDewPoi.x2, one.y); connect(TSupNoDewPoi.f2, TSupMin.y); connect(conCoo.y, TSupNoDewPoi.u); connect(TSupNoDewPoi.y, TSupCoo.u1); connect(TRoo, dewPoi.TDryBul); connect(conCoo.u_m, TSur); connect(dewPoi.TDewPoi, TSurConMin.u2); connect(TSurSet, TSurConMin.u1); connect(TSurConMin.y, conCoo.u_s); connect(dewPoi.TDewPoi, TSupCoo.u2); end HighMassSupplyTemperature_TSurRelHum;