# CascadeExtractSupplyAirX

## `CascadeExtractSupplyAirX` (FB)

FUNCTION\_BLOCK CascadeExtractSupplyAirX

### Kurzbeschreibung

> Bildung einer Zuluftsolltemperatur mittels eines Kaskadenreglers (PI-Regler)\
> Zusatzfunktionen: Begrenzung der Zuluftsolltemperatur\
> Typische Anwendung: Zulufttemperaturregelung in einer Lüftungsanlage

### Darstellung

<figure><img src="https://879424349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2Fgit-blob-17533d3513a8accc0c474c1fca7da273d9794e86%2Fimage%20(1)%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein dient zur Bildung der Zuluftsolltemperatur einer Lüftungsanlage aus<br>

1. Aktuelle Solltemperatur (Abluft- oder Raumtemperatur) in °C

\
2\) Aktuelle Isttemperatur (Abluft- oder Raumtemperatur) in °C\
\
unter Berücksichtigung der relativen (rMinSUPTemp bzw. rMaxSUPTemp) und absoluten (rMinSUP bzw. rMaxSUP) Grenzen.\
Zusätzlich werden bei der Bildung der Zuluftsolltemperatur die Sonderbetriebsarten ‘Schnellaufheizung’ und ‘Freie Nachtkühlung’ berücksichtigt.\
Die Bildung der Zuluftsolltemperatur erfolgt zeitverzögert (tDelayControl) nach der Freigabe / Sperrung des Reglers (xEn = TRUE).\
\
Die Freigabe des Kaskadenreglers erfolgt, falls folgende nachfolgend beschriebenen Bedingungen gleichzeitig erfüllt sind:\
\
1\) Die Sonderbetriebsart Schnellaufheizung ist gesperrt (xFastHeatEn = FALSE).\
\
2\) Die Sonderbetriebsart Freie Nachtkühlung ist gesperrt (xFNCEn = FALSE).\
\
3\) Die aktuelle Isttemperatur rActTemp verletzt nicht ihre absoluten Grenzwerte (+5.0 - +50.0 °C).\
\
4\) Die Regelung ist freigegeben (xEn = TRUE) und die Einschaltverzögerung (Zeitdauer = tDelayControl) ist beendet.\
\
In allen übrigen Situationen ist der Kaskadenregler gesperrt.

#### Regelung

Die aktuelle Isttemperatur *rActTemp* wird bei freigegebenem Kaskadenregler (PI-Regler, *xEn* = TRUE, Ablauf der Zeitdauer **tDelayControl**, keine Grenzwerteverletzung am Eingang *rActTemp*) permanent mit der aktuellen Solltemperatur *rSetPtTemp* verglichen und je nach Betrag / Vorzeichen der Differenz bzw. in Abhängigkeit von den Reglereinstellungen (**rPI\_Kp** bzw. **rPI\_Tn**) wird im Kaskadenregler eine Versatztemperatur erzeugt.\
\
Im Heizfall (*rActTemp* < *rSetPtTemp*) entsteht somit eine positive Versatztemperatur im Bereich 0.0 - **rMaxRelativeSUP** K.\
Im Kühlfall (*rActTemp* > *rSetPtTemp*) entsteht  somit eine negative Versatztemperatur im Bereich 0.0 - **rMinRelativeSUP** K.\
Im vollständig ausgeregelten Zustand (*rActTemp* = *rSetPtTemp*) ändert sich die Versatztemperatur nicht.\
\
Diese Versatztemperatur wird anschliessend zur aktuellen Solltemperatur addiert und bei Bedarf auf die berechneten Grenzwerte *rMinSUPTemp* bzw. *rMaxSUPTemp* begrenzt.\
\
Am Ausgang *rMinSUPTemp* wird permanent die berechnete minimale Zuluftsolltemperatur (*rActTemp* + **rMinRelativeSUP**, absolut begrenzt auf **rMinSUP** bzw. **rMaxSUP**) dargestellt.\
Am Ausgang *rMaxSUPTemp* wird permanent die berechnete maximale Zuluftsolltemperatur (*rActTemp* + **rMaxRelativeSUP**, absolut begrenzt auf **rMinSUP** bzw. **rMaxSUP**) dargestellt.\
\
Die aktuelle Isttemperatur *rActTemp* wird auf die Einhaltung von Grenzwerten überwacht.\
Bei jeder Grenzwertverletzung (*rActTemp* < +5.0 °C bzw. *rActTemp* > +50.0 °C) wird der Kaskadenregler deaktiviert.

#### Auswahl der Zuluftsolltemperatur

Die Auswahl der Zuluftsolltemperatur erfolgt gemäß der nachfolgenden Funktionstabelle.

| *xFastHeatEn* | *xFNCEn* | *rActTemp* innerhalb Grenzwert | *xEn* | Zuluftsolltemperatur             | Hinweise                               |
| ------------- | -------- | ------------------------------ | ----- | -------------------------------- | -------------------------------------- |
| TRUE          | X        | X                              | X     | **rMaxSUP**                      | Sonderbetriebsart ‘Schnellaufheizung’  |
| FALSE         | TRUE     | X                              | X     | **rMinSUP**                      | Sonderbetriebsart ‘Freie Nachtkühlung’ |
| FALSE         | FALSE    | FALSE                          | X     | *rSetPtTemp*                     | Grenzwertverletzung Isttemperatur      |
| FALSE         | FALSE    | X                              | FALSE | *rSetPtTemp*                     | Sperrung der Regelung                  |
| FALSE         | FALSE    | TRUE                           | TRUE  | *rSetPtTemp* + Versatztemperatur | Normalbetrieb                          |

Legende: X = beliebig

#### Bildung der aktuellen Zuluftsolltemperatur *rSetPtSUPTemp*

Die aktuelle Zuluftsolltemperatur *rSetPtSUPTemp* wird aus der Zuluftsolltemperatur, erweitert um ein Handübersteuermodul, gebildet.

| Zuluftsolltemperatur | **eManModeN** | *rSetPtSUPTemp*      | Hinweise                           |
| -------------------- | ------------- | -------------------- | ---------------------------------- |
| X                    | eMANNUM.Auto  | Zuluftsolltemperatur | Handübersteuermodul in Automatik   |
| X                    | eMANNUM.Man   | **rManValue**        | Handübersteuermodul in Handbetrieb |

Legende: X = beliebig

### CODESYS

InOut:

| Scope       | Name            | Type    | Initial      |
| ----------- | --------------- | ------- | ------------ |
| Input       | `xEn`           | `BOOL`  |              |
| Input       | `rActX`         | `REAL`  | 9            |
| Input       | `rSetPtHum`     | `REAL`  | 55           |
| Input       | `rSetPtTemp`    | `REAL`  | 21           |
| Input       | `rSUPTemp`      | `REAL`  | 20           |
| Output      | `rSetPtSUPX`    | `REAL`  |              |
| Output      | `rMinSUPX`      | `REAL`  |              |
| Output      | `rMaxSUPX`      | `REAL`  |              |
| Output      | `rSetPtX`       | `REAL`  |              |
| Input Const | `rPI_Tn`        | `REAL`  | 400          |
| Input Const | `rPI_Kp`        | `REAL`  | 1.4          |
| Input Const | `rMaxHumSUP`    | `REAL`  | 80           |
| Input Const | `rMinHumSUP`    | `REAL`  | 30           |
| Input Const | `tDelayControl` | `TIME`  | TIME#5m0s0ms |
| Input Const | `rP`            | `REAL`  | 980.0        |
| Input Const | `rManValue`     | `REAL`  |              |
| Input Const | `eManModeN`     | eManNum | eManNum.Auto |
