# BurnerP

## `BurnerP` (FB)

FUNCTION\_BLOCK BurnerP

### Short description

> Control of a heat generator (temperature control via analog power signal 0.0 - 100.0 %)\
> \
> 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-21d9affcb26a7286c9ae88cc56fcd583a1bc60aa%2FBurnerP_FB.png?alt=media" 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 flow setpoint temperature *rSetPtTemp* and the flow temperature *rFdT*.\
The enable / disable of the heat generator is done via the output *xHB* ( FALSE = lockout, TRUE = enable ).\
The flow temperature control (analog also boiler temperature control) is performed by a power controller (PI controller) via the analog output *rHa* in the range of **rYMin** to **rYMax**.\
The enabling of the controller is delayed (setpoint / parameter **udiWaitControl** ) after the running feedback ( *xFb* = TRUE ) of the heat generator.\
\
The following function blocks are essentially used:

ControlPI

OperatingHours

ManBin

ManNum

#### Enable / disable of the heat generator

The enabling of the heat generator ( *xAB* = TRUE, *xHB* = TRUE ( eManModeB = eManBin.Auto )) occurs if the flow temperature *rFdT* the sum of flow 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 flow temperature *rFdT* the sum of flow setpoint temperature *rSetPtTemp* and setpoint / parameter **rSwitchOffPoint** exceeds and at the same time the general enable *xEn* active ( = TRUE ).\
A minimum off time (duration = **udiTimeMinOff**, display - remaining time: *tOnDelay* ) is always inserted between two consecutive operating cycles.\
The minimum off time always 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 operation message ( *xFb* = TRUE ) of the heat generator.\
The disabling of the temperature control occurs immediately after the inactive running feedback ( *xFb* = FALSE ) of the heat generator (power signal - heat generator before manual override *rAA* in the locked state = **rYDisabled** ).\
The internal power controller (PI controller, output range: **rYMin** to **rYMax** ) is enabled/disabled with the temperature control. (setpoint = flow set temperature *rSetPtTemp*, actual value = flow temperature *rFdT* ).\
\
The parameters of the internal power controller can be configured individually:\
\
Power controller - upper absolute limit of the output signal in % : **rYMax**\
Power controller - lower absolute limit of the output signal in % : **rYMin**\
Power controller - reset time in s : **rTn**\
Power controller - gain factor : **rKp**\
Power controller - offset temperature in °C : **rOffset**\
Power controller - initialization value for the output signal in % : **rInitValue**\
Power controller - switch-off value in % : **rYDisabled**\
\
The output signal of the power controller is fed directly to the output *rAA* supplied.

#### Manual override of the digital output *xHB*

The enable/disable of the heat generator ( *xHB* ) can be operated either in automatic mode ( eMANBIN.Auto ) or in one of the two manual 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 = don't care

#### Manual override of the analog output *rHA*

The output signal of the power controller ( *rHA* ) can be operated either in automatic mode ( eMANNUM.Auto ) or in manual mode ( eMANNUM.Man ).

| *rAA* | eMANNUM      | *rHA*         | Notes                                      |
| ----- | ------------ | ------------- | ------------------------------------------ |
| Value | eMANNUM.Auto | Value         | Manual override module in automatic        |
| X     | eMANNUM.Man  | **rManValue** | Manual override module in manual operation |

Legend: X = don't care

#### Aggregate fault *xAlarm*

The aggregate fault *xAlarm* is active ( = TRUE ) if the fault message 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 set active ( = TRUE ) if the following conditions are met simultaneously:\\

* Input *eAOO* = HVACTYPES.eManBin.Auto
* Input *eAO* = HVACTYPES.eManNum.Auto
* Setpoint / parameter **eManModeB** = eMANBIN.Auto
* Setpoint / parameter **eManModeN** = eMANNUM.Auto

#### Operating hours counter - heat generator

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

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

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

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

#### Feedback of the manual value for the power signal from the manual override - hardware *rPoti*

The feedback of the manual value can be at the input *rPoti* .\
This input is currently not used for control and regulation purposes.

#### Inactive state ( *xEn* = FALSE )

| *xHB*                              | *xAB* | *rHA*                                       | *rAA*          | *tOnDelay* | *tOnControlDelay* | *dtLastFb* | *udiOperatingHours* | *udiCountFb* | *xAlarm*            | *xAuto*   | Notes         |
| ---------------------------------- | ----- | ------------------------------------------- | -------------- | ---------- | ----------------- | ---------- | ------------------- | ------------ | ------------------- | --------- | ------------- |
| FALSE ( eManModeB = eManBin.Auto ) | FALSE | **rYDisabled** ( eManModeN = eManNum.Auto ) | **rYDisabled** | old value  | old value         | old value  | old value           | old value    | State of *xAlarmIn* | old value | *xEn* = FALSE |

Legend: X = don't care

### 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       | `eAO`               | eManNum | eManNum.Auto |
| Input       | `rPoti`             | `REAL`  |              |
| Input       | `rFdT`              | `REAL`  |              |
| Output      | `xHB`               | `BOOL`  |              |
| Output      | `xAB`               | `BOOL`  |              |
| Output      | `rHA`               | `REAL`  |              |
| Output      | `rAA`               | `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 | `rYMax`             | `REAL`  | 100          |
| Input Const | `rYMin`             | `REAL`  | 0            |
| Input Const | `rTn`               | `REAL`  | 200          |
| Input Const | `rKp`               | `REAL`  | 2            |
| Input Const | `rOffset`           | `REAL`  | 0            |
| Input Const | `rInitValue`        | `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 | `rManValue`         | `REAL`  | 0            |
| Input Const | `eManModeN`         | eMANNUM | eMANNUM.Auto |
| Input Const | `eManModeB`         | eMANBIN | eMANBIN.Auto |
