> For the complete documentation index, see [llms.txt](https://support.powerio.com/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.powerio.com/hub/codesys-hvac/en/hvac-library/functionblocks/components/burner3p.md).

# 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="https://2592874069-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2Fgit-blob-e8af3e0c1d11d80fc8aaf53f9245bd66b49a9984%2FBurner3P_FB.png?alt=media" alt=""><figcaption></figcaption></figure>

### Functional 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 enabling / blocking of the heat generator is carried out via output *xHB* (FALSE = blocking, TRUE = enabling).\
The supply temperature control (analogously also boiler temperature control) is carried out by means of two power controllers (P controller, slow and fast) via outputs *xMoreHB* and *xLessHB*.\
Control enable is delayed (setpoint / parameter **udiWaitControl**) after the operating feedback (*xFb* = TRUE) of the heat generator.\
\
The following function blocks are mainly used:

ControlP

Out3P

OperatingHours

ManBin

#### Enabling / blocking 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, while the general enable *xEn* is active (= TRUE) and the minimum off time is not active.\
The blocking 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*) inserted.\
The minimum off time begins with the falling edge (TRUE > FALSE) at input *xFb*.

#### Temperature control of the heat generator

Control enable is delayed (duration = **udiWaitControl**, display - remaining time: *tOnControlDelay*)\
after the active operating message (*xFb* = TRUE) of the heat generator.\
The blocking of temperature control occurs immediately after the inactive operating message (*xFb* = FALSE) of the heat generator (switch-off value: **rYDisabled**).\
The two internal power controllers (P controller, slow and fast, output range each -100.0 - 100.0 %) are enabled / blocked simultaneously. (Setpoint = supply setpoint temperature *rSetPtTemp*, actual value = supply temperature *rFdT*).\
The control signals of both power controllers are fed to the output controller in minimum value selection (forwarding the signal with the lower value) 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 outputs *xMoreHB* or *xLessHB*.\
The constant pulse duration for the two outputs can each be freely set (**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 (fast P controller: gain factor **rKpBig**, slow P controller: gain factor **rKpTiny**).

#### Manual override of the digital outputs

All digital control outputs after manual override (*xHB*, xMoreHB\*, *xLessHB*) can be operated either 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 mode On  |
| X     | eMANBIN.ManOff | FALSE | manual override module in manual mode Off |

Legend: X = any

#### Collective fault *xAlarm*

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

#### Collective message automatic mode *xAuto*

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

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

#### Operating hours counter - heat generator

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

> **Write access to the counter values**
>
> Via the path ‘InstanceName.\_OperatingHours.udiOperatingHours’ or ‘InstanceName.\_OperatingHours.udiCountFb’, write access to both counter values is possible.
>
> **Requirement for using the Burner3P function block**
>
> For correct operation, the TimeRead2 function block must be used.

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

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

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

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

#### Inactive 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
