Buildings.Controls.OBC.Utilities.SetPoints

Package with blocks for setpoint resets

Information

This package contains components models to compute set points for control systems.

Package Content

Name Description
Buildings.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset SupplyReturnTemperatureReset Block to compute the supply and return set point
Buildings.Controls.OBC.Utilities.SetPoints.Validation Validation Collection of models that validate the SetPoints blocks of the CDL

Buildings.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset Buildings.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset

Block to compute the supply and return set point

Buildings.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset

Information

This block computes the set point temperatures for the supply and return water temperature. The set point for the zone air temperature can be an input to the model. It allows to use this model with systems that have night set back.

If used to reset the temperature in a heating system, the parameter dTOutHeaBal can be used to shift the heating curve to take into account that heat gains from solar, equipment and people make up for some of the transmission losses. For example, in energy efficient houses, the heating may not be switched on if the outside air temperature is greater than 12°C, even if a zone temperature of 20°C is required. In such a situation, set dTOutHeaBal=20-12=8 Kelvin to shift the heating curve.

Typical usage

The figure below shows a typical usage for a hot water temperature reset for a heating system. The parameters of the block heaCur are for a heating system with 60°C supply water temperature and 40°C return water temperature at an outside temperature of -10°C and a room temperature of 20°C. The offset for the temperature reset is 8 Kelvin, i.e., above 12°C outside temperature, there is no heating load. The figure shows the computed supply and return water temperatures.

Supply and return water temperatures.

Parameters

TypeNameDefaultDescription
Realm1.3Exponent for heat transfer
RealdTOutHeaBal8Offset for heating curve [K]
Nominal conditions
RealTSup_nominal Supply temperature [K]
RealTRet_nominal Return temperature [K]
RealTZon_nominal293.15Zone temperature [K]
RealTOut_nominal Outside temperature [K]

Connectors

TypeNameDescription
input RealInputTSetZonZone setpoint temperature [K]
input RealInputTOutOutside temperature [K]
output RealOutputTSupSetpoint for supply temperature [K]
output RealOutputTRetSetpoint for return temperature [K]

Modelica definition

block SupplyReturnTemperatureReset "Block to compute the supply and return set point" parameter Real m=1.3 "Exponent for heat transfer"; parameter Real TSup_nominal( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC") "Supply temperature"; parameter Real TRet_nominal( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC") "Return temperature"; parameter Real TZon_nominal( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")=293.15 "Zone temperature"; parameter Real TOut_nominal( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC") "Outside temperature"; parameter Real dTOutHeaBal( final quantity="TemperatureDifference", final unit="K", displayUnit="K")=8 "Offset for heating curve"; CDL.Interfaces.RealInput TSetZon( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC", min=200) "Zone setpoint temperature"; CDL.Interfaces.RealInput TOut( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC", min=200) "Outside temperature"; CDL.Interfaces.RealOutput TSup( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC", min=200) "Setpoint for supply temperature"; CDL.Interfaces.RealOutput TRet( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC", min=200) "Setpoint for return temperature"; protected CDL.Continuous.Sources.Constant dTOutHeaBal_nominal( final k=dTOutHeaBal, y(final quantity="TemperatureDifference", final unit="K")) "Offset of outdoor temperature to take into account heat gain"; CDL.Continuous.Sources.Constant TSup_nom( final k=TSup_nominal, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Heating supply water temperature at nominal condition"; CDL.Continuous.Sources.Constant TZon_nom( final k=TZon_nominal, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Zone temperature at design condition"; CDL.Continuous.Sources.Constant zer( final k=1E-100) "Small positive constant to avoid log(0)"; CDL.Continuous.Sources.Constant TRet_nom( final k=TRet_nominal, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Heating return water temperature at nominal condition"; CDL.Continuous.Sources.Constant TOut_nom( final k=TOut_nominal, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Outside temperature at design condition"; CDL.Continuous.Sources.Constant expM( final k=m) "Exponent of heat transfer"; CDL.Continuous.Sources.Constant one( final k=1) "Outputs 1"; CDL.Continuous.Add TOutOffSet( final k1=1, final k2=1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Effective outside temperature for heat transfer (takes into account zone heat gains)"; CDL.Continuous.Add qRelDen( final k1=1, final k2=-1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Denominator for relative heating load calculation"; CDL.Continuous.Add qRelNum( final k1=-1, final k2=1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Numerator for relative heating load calculation"; CDL.Continuous.Division qRel "Relative heating load = Q_flow/Q_flow_nominal"; CDL.Continuous.Add dTFlu2_nom( final k1=0.5, final k2=-0.5, y(final quantity="TemperatureDifference", final unit="K")) "Heating supply minus return water temperature at nominal condition"; CDL.Continuous.Add TFluAve_nominal( final k1=0.5, final k2=0.5, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Average heating water temperature at nominal condition"; CDL.Continuous.Add dTFluAve_nominal( final k1=1, final k2=-1, y(final quantity="TemperatureDifference", final unit="K")) "Average heating water temperature minus room temperature at nominal condition"; CDL.Continuous.Division mInv "Inverse of heat transfer exponent, y = 1/m"; CDL.Continuous.Add TAve( final k1=1, final k2=1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Average of supply and return temperature"; CDL.Continuous.Add TSupCur( final k1=1, final k2=1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Current supply water temperature"; CDL.Continuous.Add TRetCur( final k1=1, final k2=-1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Current return water temperature"; CDL.Continuous.Max qRel0 "Relative heating load, but always non-zero value"; CDL.Continuous.Product pro "Product used to compute q^(1/m)"; CDL.Continuous.Exp qRaiInvM "Outputs qRel^(1/m)"; CDL.Continuous.Log log1 "Logarithm used for evaluation of qRel^(1/m)"; CDL.Continuous.Product dTQ( y(final quantity="TemperatureDifference", final unit="K")) "Temperature contribution due to qRel^(1/m)"; CDL.Continuous.Product dTFlu( y(final quantity="TemperatureDifference", final unit="K")) "Supply minus return water temperature"; CDL.Continuous.Add TOutOffSet_nominal( final k1=1, final k2=1, y(final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC")) "Effective outside temperature for heat transfer at nominal condition (takes into account zone heat gains)"; equation connect(dTOutHeaBal_nominal.y,TOutOffSet.u1); connect(TOut,TOutOffSet.u2); connect(TZon_nom.y,qRelDen.u1); connect(TOutOffSet.y,qRelNum.u1); connect(TSetZon,qRelNum.u2); connect(qRel.y,qRel0.u2); connect(zer.y,qRel0.u1); connect(dTFlu2_nom.u1,TSup_nom.y); connect(dTFlu2_nom.u2,TRet_nom.y); connect(TFluAve_nominal.u1,TSup_nom.y); connect(TRet_nom.y,TFluAve_nominal.u2); connect(dTFluAve_nominal.u1,TFluAve_nominal.y); connect(dTFluAve_nominal.u2,TZon_nom.y); connect(qRel0.y,log1.u); connect(one.y,mInv.u1); connect(expM.y,mInv.u2); connect(log1.y,pro.u1); connect(pro.u2,mInv.y); connect(qRaiInvM.u,pro.y); connect(dTQ.u1,dTFluAve_nominal.y); connect(qRaiInvM.y,dTQ.u2); connect(TSetZon,TAve.u1); connect(TAve.u2,dTQ.y); connect(dTFlu2_nom.y,dTFlu.u1); connect(qRel0.y,dTFlu.u2); connect(TSupCur.u1,TAve.y); connect(dTFlu.y,TSupCur.u2); connect(TSupCur.y,TSup); connect(TRetCur.u1,TAve.y); connect(TRetCur.u2,dTFlu.y); connect(TRetCur.y,TRet); connect(qRel.u1,qRelNum.y); connect(qRel.u2,qRelDen.y); connect(TOutOffSet_nominal.u1,TOut_nom.y); connect(dTOutHeaBal_nominal.y,TOutOffSet_nominal.u2); connect(TOutOffSet_nominal.y,qRelDen.u2); end SupplyReturnTemperatureReset;