# Burner3P

## `Burner3P` (FB)

FUNCTION\_BLOCK Burner3P

### Short description

> Control of a heat generator (temperature control via binary control commands More / Less)\
> \
> Typical application: heat generation

### Representation

<figure><img src="/files/7f442a1fe2460cec20a13985a1e130b65a152011" alt=""><figcaption></figcaption></figure>

### Function description

#### General

This function block is used to control / regulate a heat generator depending on the demand of the heat generator *xEn*, the supply setpoint temperature *rSetPtTemp* and the supply temperature *rFdT*.\
The enable / disable of the heat generator is done via the output *xHB* (FALSE = disable, TRUE = enable).\
The supply temperature control (analogously also boiler temperature control) is performed using two power controllers (P-controllers, slow and fast) via the outputs *xMoreHB* and *xLessHB*.\
The enabling of the control is delayed (setpoint / parameter **udiWaitControl**) after the running feedback (*xFb* = TRUE) of the heat generator.\
\
The following function blocks are essentially used:

ControlP

Out3P

OperatingHours

ManBin

#### Enable / disable of the heat generator

The enabling of the heat generator (*xAB* = TRUE, *xHB* = TRUE (eManModeB = eManBin.Auto)) occurs if the supply temperature *rFdT* the sum of supply setpoint temperature *rSetPtTemp* and setpoint / parameter **rSwitchOnPoint** falls below, at the same time the general enable *xEn* active (= TRUE) and the minimum off-time is not active.\
The disabling of the heat generator (*xAB* = FALSE, *xHB* = FALSE (eManModeB = eManBin.Auto)) occurs if the supply temperature *rFdT* the sum of supply setpoint temperature *rSetPtTemp* and setpoint / parameter **rSwitchOffPoint** exceeds and at the same time the general enable *xEn* is active (= TRUE).\
Between two consecutive operating cycles a minimum off-time is always inserted (duration = **udiTimeMinOff**, display - remaining time: *tOnDelay*).\
The minimum off-time begins with the falling edge (TRUE > FALSE) at the input *xFb*.

#### Temperature control of the heat generator

The enabling of the temperature control is delayed (duration = **udiWaitControl**, display - remaining time: *tOnControlDelay*)\
after the active running signal (*xFb* = TRUE) of the heat generator.\
The disabling of the temperature control occurs immediately after the inactive running signal (*xFb* = FALSE) of the heat generator (switch-off value: **rYDisabled**).\
The two internal power controllers (P-controllers, slow and fast, output range each -100.0 - 100.0 %) are enabled / disabled simultaneously. (Setpoint = supply setpoint temperature *rSetPtTemp*, actual value = supply temperature *rFdT*).\
The control signals of both power controllers are fed through a minimum-value selection (forwarding the signal with the smaller value) to the output controller in the range -100.0 - 100.0 %.\
The output controller finally generates output signals for a 3-point actuator (pulse width modulation, integration interval = **tIntegration**) with the outputs *xMoreHB* or *xLessHB*.\
The constant pulse duration for the two outputs is freely adjustable in each case (**tImpulsOpen** or **tImpuls Close**), the variable pulse pauses are determined by the output controller.\
The two power controllers can be configured individually and independently of each other (P-controller fast: gain factor **rKpBig**, P-controller slow: gain factor **rKpTiny**).

#### Manual override of the digital outputs

All digital control outputs after manual override (*xHB*, xMoreHB\*, *xLessHB*) can either be operated in automatic mode (eMANBIN.Auto) or in one of the two manual operating modes (eMANBIN.ManOn, eMANBIN.ManOff).

| *xAB* | eMANBIN        | *xHB* | Notes                                          |
| ----- | -------------- | ----- | ---------------------------------------------- |
| FALSE | eMANBIN.Auto   | FALSE | Manual override module in automatic            |
| TRUE  | eMANBIN.Auto   | TRUE  | Manual override module in automatic            |
| X     | eMANBIN.ManOn  | TRUE  | Manual override module in manual operation On  |
| X     | eMANBIN.ManOff | FALSE | Manual override module in manual operation Off |

Legend: X = any

#### Aggregate fault *xAlarm*

The aggregate fault *xAlarm* is active (= TRUE) if the fault signal of the heat generator *xAlarmIn* is active (= TRUE).\
In all other situations the aggregate fault *xAlarm* is not active ( = FALSE ).

#### Collective automatic-mode message *xAuto*

The collective automatic-mode message *xAuto* is activated (= TRUE) if the following conditions are met simultaneously:

* Input *eAOO* = HVACTYPES.eManBin.Auto
* Input *eAOOMore* = HVACTYPES.eManBin.Auto
* Input *eAOOLess* = HVACTYPES.eManBin.Auto
* Setpoint / parameters **eManModeB** = eMANBIN.Auto
* Setpoint / parameters **eManModeBMore** = eMANBIN.Auto
* Setpoint / parameters **eManModeBLess** = eMANBIN.Auto

#### Operating hours counter - heat generator

The operating hours counter (*udiOperatingHours*, *udiCountFb*) for the heat generator is active when the running signal is active (*xFb* = TRUE).

> **Write access to the counter values**
>
> Via the path 'InstanceName.\_OperatingHours.udiOperatingHours' or 'InstanceName.\_OperatingHours.udiCountFb' write access to both counters is possible.
>
> **Prerequisite for the use of the function block Burner3P**
>
> The use of the TimeRead2 function block is required for correct operation.

#### Current calculated power of the heat generator *rPos*

The current **calculated power** of the heat generator is displayed at the output *rPos* in the range 0.0 - 100.0 %.\
For this, the correct specification of the travel time of the actuator between minimum and maximum power (**tDuration**) is required.\
No repositioning to a reference position takes place.

#### Feedback of the heat generator power *rU*

The current **actual** Power of the heat generator can be connected at the input *rU* .\
This input is currently not used for control and regulation purposes.

#### Not active state (*xEn* = FALSE)

| *xHB*                            | *xAB* | *xMoreHB*                            | *xMoreAB* | *xLessHB*                            | *xLessAB* | *rPos* | *tOnDelay* | *tOnControlDelay* | *dtLastFb* | *udiOperatingHours* | *udiCountFb* | *xAlarm*            | *xAuto*   | Notes         |
| -------------------------------- | ----- | ------------------------------------ | --------- | ------------------------------------ | --------- | ------ | ---------- | ----------------- | ---------- | ------------------- | ------------ | ------------------- | --------- | ------------- |
| FALSE (eManModeB = eManBin.Auto) | FALSE | FALSE (eManModeBMore = eManBin.Auto) | FALSE     | FALSE (eManModeBLess = eManBin.Auto) | FALSE     | 0.0 %  | old value  | old value         | old value  | old value           | old value    | State of *xAlarmIn* | old value | *xEn* = FALSE |

Legend: X = any

### CODESYS

InOut:

| Scope       | Name                | Type    | Initial      |
| ----------- | ------------------- | ------- | ------------ |
| Input       | `xEn`               | `BOOL`  |              |
| Input       | `rSetPtTemp`        | `REAL`  |              |
| Input       | `xFb`               | `BOOL`  |              |
| Input       | `rU`                | `REAL`  | 0            |
| Input       | `xAlarmIn`          | `BOOL`  |              |
| Input       | `eAOO`              | eManBin | eManBin.Auto |
| Input       | `eAOOMore`          | eManBin | eManBin.Auto |
| Input       | `eAOOLess`          | eManBin | eManBin.Auto |
| Input       | `rFdT`              | `REAL`  |              |
| Output      | `xHB`               | `BOOL`  |              |
| Output      | `xAB`               | `BOOL`  |              |
| Output      | `xMoreHB`           | `BOOL`  |              |
| Output      | `xMoreAB`           | `BOOL`  |              |
| Output      | `xLessHB`           | `BOOL`  |              |
| Output      | `xLessAB`           | `BOOL`  |              |
| Output      | `rPos`              | `REAL`  |              |
| Output      | `tOnDelay`          | `TIME`  |              |
| Output      | `tOnControlDelay`   | `TIME`  |              |
| Output      | `dtLastFb`          | `DT`    |              |
| Output      | `udiOperatingHours` | `UDINT` |              |
| Output      | `udiCountFb`        | `UDINT` |              |
| Output      | `xAlarm`            | `BOOL`  |              |
| Output      | `xAuto`             | `BOOL`  |              |
| Input Const | `udiTimeTOFxFb`     | `UDINT` | 7            |
| Input Const | `tDuration`         | `TIME`  | TIME#1m0s0ms |
| Input Const | `tIntegration`      | `TIME`  | TIME#100ms   |
| Input Const | `tImpulsClose`      | `TIME`  | TIME#1s0ms   |
| Input Const | `tImpulsOpen`       | `TIME`  | TIME#1s0ms   |
| Input Const | `rKpTiny`           | `REAL`  | 0.6          |
| Input Const | `rKpBig`            | `REAL`  | 4            |
| Input Const | `rOffset`           | `REAL`  | 0            |
| Input Const | `rYDisabled`        | `REAL`  | 0            |
| Input Const | `udiWaitControl`    | `UDINT` | 3            |
| Input Const | `rSwitchOffPoint`   | `REAL`  | 2.5          |
| Input Const | `rSwitchOnPoint`    | `REAL`  | -2.5         |
| Input Const | `udiTimeMinOff`     | `UDINT` | 3            |
| Input Const | `eManModeBLess`     | eMANBIN | eMANBIN.Auto |
| Input Const | `eManModeBMore`     | eMANBIN | eMANBIN.Auto |
| Input Const | `eManModeB`         | eMANBIN | eMANBIN.Auto |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.powerio.com/hub/codesys-hvac/en/hvac-library/functionblocks/components/burner3p.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
