# BurnerT

## `BurnerT` (FB)

FUNCTION\_BLOCK BurnerT

### Short description

> Control of a heat generator (temperature setpoint via temperature signal)\
> \
> 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-e8de95292eef3efe31c2b1783f30ba852fecc1f6%2FBurnerT_FB.png?alt=media" alt=""><figcaption></figcaption></figure>

### Function description

#### General

This function block is used to control a heat generator depending on the demand of the heat generator *xEn* and the supply setpoint temperature *rSetPtTemp*.\
The enable / disable of the heat generator is done via the output *xHB* (FALSE = lockout, TRUE = enable).\
The temperature signal is generated from the supply setpoint temperature *rSetPtTemp* by means of a linear characteristic curve defined by two points, if the heat generator is enabled ( *xHB* = TRUE).\
If the heat generator is locked out, the constant 0.0 is output.\
\
The following function blocks are essentially used:

TwoPoint

OperatingHours

ManBin

ManNum

#### Enable / disable of the heat generator *xHB*

The enabling of the heat generator ( *xAB* = TRUE, *xHB* = TRUE (eManModeB = eManBin.Auto)) occurs if the demand of the heat generator is active ( *xEn* = TRUE).\
The lockout of the heat generator ( *xAB* = FALSE, *xHB* = FALSE (eManModeB = eManBin.Auto)) occurs if the demand of the heat generator is not active ( *xEn* = FALSE).

#### Temperature signal for the heat generator *rHA*

The temperature signal for the heat generator is transmitted to the output *rAA* (and *rHA*, if eManModeN = eManNum.Auto) provided the heat generator is enabled ( *xHB* = TRUE).\
If the heat generator is locked out ( *xHB* = FALSE) the constant 0.0 is output.\
The temperature signal is generated from the supply setpoint temperature *rSetPtTemp* by means of a linear characteristic curve defined by two points and is absolutely limited to the range 0.0 - 100.0%.\
The input characteristic is defined by the setpoints / parameters **rTwoPointX1** or **rTwoPointX2** defined.\
The output characteristic is defined by the setpoints / parameters **rTwoPointY1** or **rTwoPointY2** defined.\
The line defined by the points P1 (X1 / Y1) and P2 (X2 / Y2) now allows the mapping of arbitrary supply setpoint temperatures *rSetPtTemp* to a temperature signal *rAA*.\
\
Example:\
\
Characteristic: X1 = 20.0, X2 = 90.0, Y1 = 20.0, Y2 = 100.0\
\
\&#xNAN;*rSetPtTemp* = 55.0 °C\
\
\&#xNAN;*rAA* = 60.0 %

#### 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 temperature signal ( *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 the use of the function block BurnerT**
>
> 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* | *dtLastFb* | *udiOperatingHours* | *udiCountFb* | *xAlarm*            | *xAuto*   | Notes         |
| ---------------------------------- | ----- | ------------------------------ | ----- | ---------- | ------------------- | ------------ | ------------------- | --------- | ------------- |
| FALSE ( eManModeB = eManBin.Auto ) | FALSE | 0.0 (eManModeN = eManNum.Auto) | 0     | 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       | `eAO`               | eManNum | eManNum.Auto |
| Input       | `rPoti`             | `REAL`  |              |
| Output      | `xHB`               | `BOOL`  |              |
| Output      | `xAB`               | `BOOL`  |              |
| Output      | `rHA`               | `REAL`  |              |
| Output      | `rAA`               | `REAL`  |              |
| Output      | `dtLastFb`          | `DT`    |              |
| Output      | `udiOperatingHours` | `UDINT` |              |
| Output      | `udiCountFb`        | `UDINT` |              |
| Output      | `xAlarm`            | `BOOL`  |              |
| Output      | `xAuto`             | `BOOL`  |              |
| Input Const | `rTwoPointY2`       | `REAL`  | 100          |
| Input Const | `rTwoPointX2`       | `REAL`  | 90           |
| Input Const | `rTwoPointY1`       | `REAL`  | 20           |
| Input Const | `rTwoPointX1`       | `REAL`  | 20           |
| Input Const | `rManValue`         | `REAL`  | 0            |
| Input Const | `eManModeN`         | eMANNUM | eMANNUM.Auto |
| Input Const | `eManModeB`         | eMANBIN | eMANBIN.Auto |
