[HCr21] Heating circuit, weather-compensated flow temperature control, room heating
Plant example HCr21 is a heating circuit for radiators with outside air temperature-controlled flow temperature control.
Functions
- Heating curve (implemented with function block HCRV)
- Heating limit
- Room influence
- Room frost protection
- Optimum start stop control (OSSC)
Plant diagram

Components
- Pump
- Valve
- Flow and return temperature sensors
- Sensor for outside temperature
- Room temperature sensor
Components and functions of the plant example:
Component | Function | BACnet object |
|---|---|---|
| Scheduler program Switches the plant to operating mode: Sustained mode | Economy | Pre-Comfort | Comfort | [MSchedule] Scheduler |
| Operating mode switch Switches the plant to: Auto | Protection | Comfort | [MI] Operating mode switch |
| Manual operating mode selection Switches the plant to: Auto | Sustained mode | Economy | Pre-Comfort | Comfort | [MCnfVal] Manual operating mode selection |
| Present operating mode Reports the present operating mode: Sustained mode | Economy | Pre-Comfort | Comfort | [MCalcVal] Present operating mode |
| Reason for present operating mode Reports the reason for the present operating mode: Exception | Low room temperature protection | Operating mode selection | Heating limit | OSSC mode | Heating limit Economy | Scheduler | [MCalcVal] Reason for present operating mode |
| Demand Reports demand to heat generation: No | Yes. | [BCalcVal] Demand |
| Room temperature setpoints Determines the setpoint for the room temperature for each operating mode. | [ACnfVal] Setpoint for protection [ACnfVal] Setpoint for economy [ACnfVal] Delta setpoint for Pre-Comfort [ACnfVal] Setpoint for Comfort |
| Sensor for outside temperature Measures outside temperature. | [AI] Outside air temperature |
| Heating curve Outside temperature flow temperature control implemented with function block HCRV. |
|
| Room temperature sensor Measures room temperature. |
> [AI] Room temperature |
Room frost protection Prevents the room temperature from dropping below the setpoint for protection. |
| |
Optimized switching Optimized boost heating from Economy or Protection to Comfort or Pre-Comfort. Optimized setback Comfort or Pre-Comfort to Economy or Protection. | [MCalcVal] Optimum start stop control | |
Room influence Corrects the heating curve if the room temperature setpoint is exceeded. | [ACnfVal] Room influence factor | |
| Overtemperature detector Switches the mixing valve at a high temperature to bypass and keeps the pump switched on, for example, for 10 minutes. The plant then switches off. | [BI] Overtemperature detector |
| Flow temperature sensor Measures the flow temperature. | [AI] Flow temperature |
| Pump |
|
Command Switches on/off the pump as needed. | > [BO] Command | |
Fault message Reports faults. | > [BI] Fault | |
Pump run when the outside air temperature is low Pump always operates at low outside temperatures (frost protection). |
| |
Kick function (pump kick) Prevents the pump from seizing during long idle periods. |
| |
| Return temperature sensor Measures the return temperature. | [AI] Return temperature |
| Mixing valve Mixes the required amount of water from return to flow to achieve the desired flow temperature. |
|
Temperature controller Controls the flow temperature. | > [Controller] Temperature controller | |
Positioning 0% = Bypass … 100% = Through-port | > [AO] Position |
Plant example HCr21 is a heating circuit for radiators with outside air temperature-controlled flow temperature control.
Outside air temperature
The outside temperature [TOa] is used unfiltered and filtered. Two different attenuated signals result from the filtering.
Signal name | Description | Filter constant | Use |
|---|---|---|---|
|
TOa | Outside temperature | Unfiltered |
|
TOaEff | Effective outside air temperature | 1h |
|
TOaBldg | Outside temperature, strongly filtered | 50h (Building constant) |
|
Function heating limit
Two heating limit functions are available. Both filtered outside temperatures are considered here.
- General heating limit (nested chart)
- The plant is enabled for Automatic mode (e.g. by the scheduler) if both filtered outside temperatures are below the value from [HtgLm]. The plant is not enabled for automatic mode if one of the two values exceeds the value from [HtgLm].
- Heating limit for operating mode Economy (nested chart)
- The plant is enabled for automatic mode in Economy if operating mode Economy is specified and both filtered outside temperatures are under the value from [HtgLmEco]. The plant is not enabled for Economy if one of the two values exceeds the value from [HtgLmEco].
BACnet objects
Name | Description | Object type | Default value |
|---|---|---|---|
HtgLm | Heating limit | ACnfVal | 15 [°C] |
HtgLmEco | Heating limit for economy | ACnfVal | 8 [°C] |
Outside air temperature-dependent flow control

Key
|
SpCmf | Setpoint for comfort |
SpEco | Setpoint for economy |
Hcrv | Heating curve |
PrSpTFl | Present flow temperature setpoint |
TCtr | Temperature controller |
Heating curve
The setpoint for flow temperature is determined using a heating curve. Function block HCRV implements the heating curve.
[HCRV] Heating curve
BACnet objects
Name | Description | Object type | Default value |
|---|---|---|---|
TOaDsgn | Design outside temperature | ACnfVal | -11 [°C] |
SpTFlDs | Flow temperature setpoint for design outside temperature | ACnfVal | 60 [°C] |
TOaHi | Outside temperature high | ACnfVal | 15 [°C] |
SpTFlHi | Flow temperature setpoint for high outside temperature | ACnfVal | 30 [°C] |
PrSpTFl | Present flow temperature setpoint | ACnfVal | 45 [°C] |
The scheduler [MSchedule] specifies a certain operating mode (Comfort, Pre-Comfort, Economy, or Protection). The setpoint for the desired room temperature applies accordingly.
The setpoint for room temperature is given to the heating curve and is subtracted internally from the nominal setpoint of 20 °C. The difference is added to the effective outside temperature so that the flow temperature setpoint is increased or reduced as per the desired room temperature.
For example, the setpoint in operating mode Economy is 15 °C. This results in a difference of 5K versus the internal, nominal room setpoint. This value is added to the effective outside temperature. This results in a downward shift of the calculated flow temperature setpoint compared to the corresponding flow temperature setpoint for Comfort (at the same effective outside temperature).
The setpoint for operating mode Pre-Comfort is generated as follows:
SpPcf = SpCmf - DSpPcf
BACnet objects
Name | Description | Object type | Default value |
|---|---|---|---|
DSpPcf | Delta setpoint for pre-comfort | ACnfVal | 1 [K] |
SpCmf | Setpoint for comfort | ACnfVal | 21 [°C] |
SpEco | Setpoint for economy | ACnfVal | 15 [°C] |
SpPrt | Setpoint for protection | ACnfVal | 12 [°C] |
Vlv'TCtr | Temperature controller Controls the flow temperature. | Controller | N/A |
The temperature controller acts as a PI controller (PID with derivative action time Tv=0) and compares the temperature setpoint [PrSpTFl] against the flow temperature [TFl] and calculates the valve position [Pos] on the output. The following controller variables are preset: | |||
If plant power must be reduced, e.g. during hot water charging, connect input [YCtrMax] of the temperature controller with a limitation signal, e.g. via BACnet.
Room functions
The plant example is programmed in a way that enables operation without a room temperature.
The following functions require a room temperature:
- Room frost protection
- Room temperature is monitored. The room setpoint for protection [SpPrt] applies as the limit value. If violated, the plant starts in operating mode Comfort. The plant continues to operate until the value for [SpPrt] and a hysteresis (e.g. 2K) is exceeded.
- This function has a higher priority than automatic mode, the manual selection and operating mode switch.
- Room influence
- The room temperature is subtracted from the present room setpoint, multiplied by the value from the room influence factor [RInflFac] and the result is added to the present room setpoint for the heating curve, which influences the calculated flow setpoint.
- The calculated flow temperature setpoint is corrected downward if the room setpoint is exceeded. The calculated temperature setpoint is increased if the room setpoint is not achieved.
- Optimum start stop control (OSSC)
- This functionality is implemented with function block OSSC.
[OSSC] Optimum start stop control
Plant operating modes:
- Protection (1)
- Economy (2)
- Pre-Comfort (3)
- Comfort (4)
The operating modes are reported on [MCalcVal] object 'Present operating mode'.
At the same time, the reason for the present operating mode is reported to another [MCalcVal] object:
- Exception (1)
- Low room temperature protection (2), resulting from a room temperature that is too low
- Operating mode switch (3), resulting from an active (not equal to Auto) operating mode switch
- Manual operating mode selection (4), resulting from an active (not equal to Auto) manual operating mode selection
- Heating limit (5)
- OSSC mode (6)
- Heating limit Economy (7)
- Scheduler (8), resulting from an active scheduler

Plant operating mode 'Protection' is similar to operating mode 'Off'. Temperature control and the pump are not enabled in 'Protection' and pin [In1] must be set to 1 on function block SELMS_BO if temperature control and the pump are active. Plant operating mode 'Protection' responds similarly to plant operating mode 'On', but at a reduced setpoint.
[SELMS_BO] Multistate selector for boolean value
There is a normal mode and local exception mode.
Normal operation
Sources for normal mode:
- Room frost protection
- [MI] Operating mode switch
- [MCnfVal] Manual operating mode selection
- Optimum start/stop control
- Heating limit
- [MSchedule] Scheduler
In normal mode, components are simultaneously switched on and off as per the operating mode.
Exception mode
Sources for exception mode:
- Pump fault
- Overtemperature detector
In exception mode, all outputs are switched off directly at priority 5 (the mixing valve is switched to bypass) and the present operating mode is set to 'Protection'.
Local exception mode (special case for overtemperature detector)
The pump remains on, for example, for 10 minutes if the overtemperature detector is triggered. The pump is then switched off. The outputs [AO] valve position and [BO] pump command are switched at priority 4.

The overrun described above may need to be adapted in the program depending on the application and installation. For example, it may have to be set to 0 for floor heating.
Start-up control (nested chart SttUpAlmHdl)
The following functionality is available for an automatic startup of the plant, e.g. after a loss of power and return of power:
- Fixed switch-on delay (can be set on input pin [DlySttUp])
- The plant remains off to ensure communications are reliable and cross-check references are triggered. 'Exception' is reported as the reason for the present operating mode.
- Automatic acknowledge (2x) of possible pending alarms during a fixed switch-on delay.
- Additional adjustable delay for staged plant ramp-up (can be set on input pin [DlyOn])
Alarm handling (nested chart SttUpAlmHdl)
The state of events on the plant is acquired by BACnet object 'Plant state'. The state is mapped on function block CMN_EVT.
[CMN_EVT] Common event
The following functions are available:
- Automatic acknowledge (2x) after startup
- Alarm acknowledgement with a value object
- Alarm indication:
- For pending alarms On
- For unprocessed alarms flashing - Ability to connect the acknowledge button [BI]
- Ability to connect to an alarm indication [BO], e.g. an alarm lamp through an output block [BO]
- Ability to connect to other alarm handling functions on other plants, e.g. acknowledge button and alarm indication for multiple plants in the same control cabinet
Name | Description | Type | Signal/connection | State text | Engineering unit |
|---|---|---|---|---|---|
OpModSwi | Operating mode switch | MI | N/A | Auto | Protection | Comfort | N/A |
TOa | Outside temperature | AI | LG-Ni1000 | N/A | -70...70 [°C] |
TFl | Flow temperature Alarm function: Basic (Notification class 8) Limit high 90 [°C]; limit low 4 [°C] Time deviation: 30 [s] | AI | LG-Ni1000 | N/A | 0...100 [°C] |
TRt | Return temperature Alarm function: Basic (Notification class 8) Limit high 90 [°C]; limit low 4 [°C] Time deviation: 30 [s] | AI | LG-Ni1000 | N/A | 0...100 [°C] |
OvrTDet | Overtemperature detector Alarm function: Basic (Notification class 8) Reference value: Tripped Time deviation: 0 [s] | BI | NO contact | Normal | Tripped | N/A |
Vlv-Pos | Valve position | AO | 0...10V | N/A | 0...100 [%] |
Pu'Cmd | Pump command | BO | NO contact | Off | On | N/A |
Pu'Flt | Pump fault Alarm function: Extended (Notification class 7) Reference value: Tripped Time deviation: 0 [s] | BI | NO contact | Normal | Tripped | N/A |
TR | Room temperature | AI | LG-Ni1000 | N/A | 0...50 [°C] |




Room functions (




