# SequenceSUPTemp

## `SequenceSUPTemp` (FB)

FUNCTION\_BLOCK SequenceSUPTemp

### Short description

> Supply air temperature control for a ventilation system with energy recovery (continuous recirculation damper system and energy recovery) including releases for active heating and cooling.\
> \
> Typical application: Supply air temperature control in a ventilation system

### Representation

<figure><img src="/files/f6c8f434798b993b55475eb71927d4036febfa22" alt=""><figcaption></figcaption></figure>

### Function description

#### General

This function block enables, after release (*xOpTCon* = TRUE), the control of the supply air temperature *rSAT* to the setpoint *rReferenceSAT* by generating the control signals *rYDamp* (recirculation damper system 0.0 - 100.0 % outside air fraction) and *rYER*\
(energy recovery 0.0 - 100.0 %).\
After the full use of the energy recovery systems, if necessary the release of active heating (*xEnHeat* = TRUE) or active cooling (*xEnCool* = TRUE).\
The control of the supply air temperature with active heating or active cooling must each be performed via a separate external PI controller. The control signals of these external PI controllers are fed back to the inputs *rHeaterYPISAT* or *rCoolerYPISAT* to ensure energy-economic control of the energy recovery by considering the current outside temperature *rOAT* or exhaust air temperature *rRAT* the optimal energy recovery can be carried out for each operating case.\
When using this block, the spatial arrangement of the components (damper system, energy recovery, heating circuit, cooling circuit, etc.) must be taken into account.\
\
Case 1 - Winter case: Supply air temperature < supply air setpoint, outside temperature < exhaust air temperature, supply air setpoint > exhaust air temperature

<figure><img src="/files/8f4f604db460ecf788b3a673ca658cf7fe0e9c31" alt=""><figcaption></figcaption></figure>

Case 2 - Summer case: Supply air temperature > supply air setpoint, outside temperature > exhaust air temperature, supply air setpoint < exhaust air temperature

<figure><img src="/files/2500c17a40ba95f1754c61022453ba4af985a806" alt=""><figcaption></figcaption></figure>

#### Enable / disable of the controller *xOpTCon*

In the disabled state (*xOpTCon* = FALSE) no control and regulation processes take place, the outputs are fixed to the following signals / states:\
\
\&#xNAN;*rYGen* = 100.0 %\
\&#xNAN;*xEnHeat* = FALSE\
\&#xNAN;*xEnCool* = FALSE\
\&#xNAN;*rYDamp* = 100.0 %\
\&#xNAN;*rYER* = 100.0 %

#### Enable / disable of free night cooling *xFNCEn*

This input signals (*xFNCEn* = TRUE) the active free night cooling and blocks the output for active cooling *xEnCool* regardless of the other requirements.

#### Delayed start of the control *xPRORamp* or *xHHWFrost1*

The internal sequence controller (PI controller) is locked if either the input *xPRORamp* and / or the input *xHHWFrost1* is active (= TRUE).\
The release of the internal sequence controller takes place with a time delay of 5 minutes after both inputs are inactive again (= FALSE).

#### Feedback of the control signals *rHeaterYPISAT* or *rCoolerYPISAT*

The feedback of the control signals for active heating *rHeaterYPISAT* and cooling *rCoolerYPISAT* is monitored internally and evaluated as follows:\
\
Control signal *rHeaterYPISAT* > 8.0 %: Deactivation of the internal sequence controller\
Control signal *rHeaterYPISAT* < 3.0 %: Activation of the internal sequence controller after a time delay of 500 ms\
\
Control signal *rCoolYPISAT* > 8.0 %: Deactivation of the internal sequence controller\
Control signal *rCoolYPISAT* < 3.0 %: Activation of the internal sequence controller after a time delay of 500 ms

#### General control signal from the sequence control *rYGen*

This control signal in the range 0.0 - 100.0 % (0.0% = maximum energy recovery, 100.0 = no energy recovery) is primarily generated by the internal sequence controller and influenced by the input variables *rSAT* (supply air temperature), *rReferenceSAT* (supply air setpoint), *rOAT* (outside air temperature) and *rRAT* (exhaust air temperature).

#### Enable / disable of active heating *xEnHeat*

The release of active heating is active (= TRUE) if the following conditions are met simultaneously:\
\
\&#xNAN;*xOptCon* = TRUE\
(Outside temperature > exhaust air temperature AND *rYGen* > 99%) OR (Outside temperature < exhaust air temperature AND *rYGen* < 1%)\
\
In all other situations active heating is disabled (= FALSE).

#### Enable / disable of active cooling *xEnCool*

The release of active cooling is active (= TRUE) if the following conditions are met simultaneously:\
\
\&#xNAN;*xOptCon* = TRUE\
(Outside temperature > exhaust air temperature AND *rYGen* < 1%) OR (Outside temperature < exhaust air temperature AND *rYGen* > 99%)\
\&#xNAN;*xFNCEn* = FALSE\
\&#xNAN;*rAverage2h* > **rSetpoint\_CoolOAT** (Locking of active cooling at low outside temperatures)\
\
In all other situations active cooling is disabled (= FALSE).

#### Control signal for the damper system *rYDamp*

The control signal for the damper system (0.0 - 100.0 %, 0.0 % = no outside air fraction, 100.0 % maximum outside air fraction) is generated depending on the general control signal from the sequence control *rYGen* as follows:\
\
The control signal *rYGen* is in the range *r1Damp* to *r2Damp* linearly converted into a signal in the range 0.0 - 100.0 and limited.

#### Control signal for the energy recovery system *rYER*

The control signal for the energy recovery (0.0 - 100.0 %, 0.0 % = no energy recovery, 100.0 % maximum energy recovery) is generated depending on the general control signal from the sequence control *rYGen* as follows:\
\
The control signal *rYGen* is in the range *r1Er* to *r2Er* linearly converted into a signal in the range of 100.0 - 0.0 and limited.

### CODESYS

InOut:

| Scope       | Name                | Type    | Initial      |
| ----------- | ------------------- | ------- | ------------ |
| Input       | `rSAT`              | `REAL`  |              |
| Input       | `rReferenceSAT`     | `REAL`  |              |
| Input       | `xOpTCon`           | `BOOL`  |              |
| Input       | `xFNCEn`            | `BOOL`  | FALSE        |
| Input       | `rOAT`              | `REAL`  |              |
| Input       | `rRAT`              | `REAL`  |              |
| Input       | `rAverage2h`        | `REAL`  |              |
| Input       | `xPRORamp`          | `BOOL`  | FALSE        |
| Input       | `xHHWFrost1`        | `BOOL`  | FALSE        |
| Input       | `rHeaterYPISAT`     | `REAL`  | 0.0          |
| Input       | `rCoolerYPISAT`     | `REAL`  | 0.0          |
| Output      | `rYGen`             | `REAL`  |              |
| Output      | `xEnHeat`           | `BOOL`  |              |
| Output      | `xEnCool`           | `BOOL`  |              |
| Output      | `rYDamp`            | `REAL`  |              |
| Output      | `rYER`              | `REAL`  |              |
| Output      | `xAuto`             | `BOOL`  |              |
| Input Const | `rSetpoint_CoolOAT` | `REAL`  | 14.0         |
| Input Const | `r2ER`              | `REAL`  | 100.0        |
| Input Const | `r1ER`              | `REAL`  | 30.0         |
| Input Const | `r2Damp`            | `REAL`  | 30.0         |
| Input Const | `r1Damp`            | `REAL`  | 0.0          |
| Input Const | `rTn`               | `REAL`  | 200.0        |
| Input Const | `rKp`               | `REAL`  | 3.5          |
| Input Const | `rManValueYER`      | `REAL`  |              |
| Input Const | `eManModeYER`       | eMANNUM | eMANNUM.Auto |
| Input Const | `rManValueYDamp`    | `REAL`  |              |
| Input Const | `eManModeYDamp`     | eMANNUM | eMANNUM.Auto |
| Input Const | `eManModeCool`      | eMANBIN | eMANBIN.Auto |
| Input Const | `eManModeHeat`      | eMANBIN | eMANBIN.Auto |
| Input Const | `rManValueYGen`     | `REAL`  |              |
| Input Const | `eManModeYGen`      | eMANNUM | eMANNUM.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/sequencesuptemp.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.
