# CrossVentilation\_Sulzer

## `CrossVentilation_Sulzer` (FB)

FUNCTION\_BLOCK CrossVentilation\_Sulzer

### Kurzbeschreibung

> Steuerung der Querlüftung mittels Fensterelementen durch vier getrennt einstellbare Kennlinien\
> \
> Kennlinie 1: Öffnungszeit in Abhängigkeit von der Aussentemperatur\
> Kennlinie 2: Öffnungsgrad in Abhängigkeit von der Aussentemperatur\
> Kennlinie 3: Öffnungsgrad in Abhängigkeit von der Windgeschwindigkeit\
> Kennlinie 4: Wartezeit in Abhängigkeit von der Aussentemperatur\
> \
> Typische Anwendung: Steuerung der Querlüftung durch den Raum-CO2-Istwert

### Darstellung

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

### Schnittstellen

#### Eingänge

| Name                     | Datentyp | Wertebereich | Initialwert | Funktion                                                                                                                                                                                |
| ------------------------ | -------- | ------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *xStartCrossVentilation* | BOOL     |              | FALSE       | Beginn der Querlüftung (bei jeder ansteigenden Flanke)                                                                                                                                  |
| *xAbortCrossVentilation* | BOOL     |              | FALSE       | Abbruch der Querlüftung (bei jeder ansteigenden Flanke)                                                                                                                                 |
| *xEn\_WT*                | BOOL     |              | FALSE       | Freigabe / Sperrung der Wartezeit (TRUE = Freigabe)                                                                                                                                     |
| *xEnComplete\_OT*        | BOOL     |              | FALSE       | Freigabe / Sperrung des Eingangs ‘xComplete\_OT’ (FALSE = Sperrung) (\_OT = Opening Time)                                                                                               |
| *xComplete\_OT*          | BOOL     |              | FALSE       | Freigabe / Sperrung des manuellen Abbruchs der Öffnungsdauer (bei jeder ansteigenden Flanke, falls xEnComplete\_OT = TRUE) (z.B. Abbruch über CO2-Gehalt nach Ablauf der Öffnungsdauer) |
| *rOutsideTemp*           | REAL     |              | 0.0         | Aussentemperatur                                                                                                                                                                        |
| *rOutsideWindSpeed*      | REAL     |              | 0.0         | Windgeschwindigkeit                                                                                                                                                                     |
| *xResError*              | BOOL     |              | FALSE       | Rücksetzung der Ausgänge ‘xError’ und ‘sErrorCode’ (bei jeder ansteigenden Flanke)                                                                                                      |
| *xValidData\_OT*         | BOOL     |              | FALSE       | Gültigkeit der Daten der Kurve ‘Öffnungsdauer - Aussentemperatur’ (\_OT = Opening Time) (TRUE = Gültig)                                                                                 |
| *xValidData\_WDOO\_OT*   | BOOL     |              | FALSE       | Gültigkeit der Daten der Kurve ‘Fensteröffnungsgrad - Aussentemperatur’ (\_WDOO = Windows Degree Of Opening, \_OT = OutsideTemp) (TRUE = Gültig)                                        |
| *xValidData\_WDOO\_WS*   | BOOL     |              | FALSE       | Gültigkeit der Daten der Kurve ‘Fensteröffnungsgrad - Windgeschwindigkeit’ (\_WDOO = Windows Degree Of Opening, \_WS = Wind Speed) (TRUE = Gültig)                                      |
| *xValidData\_WT*         | BOOL     |              | FALSE       | Gültigkeit der Daten der Kurve ‘Wartezeit - Aussentemperatur’ (\_WT = Waiting Time) (TRUE = Gültig)                                                                                     |

#### Ein- und Ausgänge

| Name               | Datentyp            | Wertebereich | Initialwert | Funktion                                                                                                                                     |
| ------------------ | ------------------- | ------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| *arData\_OT*       | stCurve\_Real\_Time |              |             | Array mit den Stützstellen für die Kurve ‘Öffnungsdauer - Aussentemperatur’ (\_OT = Opening Time)                                            |
| *arData\_WDOO\_OT* | stCurve\_Real\_Real |              |             | Array mit den Stützstellen für die Kurve ‘Fensteröffnungsgrad - Aussentemperatur’ (\_WDOO = Windows Degree Of Opening, \_OT = OutsideTemp)   |
| *arData\_WDOO\_WS* | stCurve\_Real\_Real |              |             | Array mit den Stützstellen für die Kurve ‘Fensteröffnungsgrad - Windgeschwindigkeit’ (\_WDOO = Windows Degree Of Opening, \_WS = Wind Speed) |
| *arData\_WT*       | stCurve\_Real\_Time |              |             | Array mit den Stützstellen für die Kurve ‘Wartezeit - Aussentemperatur’ (\_WT = Waiting Time)                                                |

#### Ausgänge

| Name                     | Datentyp | Wertebereich | Initialwert | Funktion                                                                                                                                               |
| ------------------------ | -------- | ------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| *tTimeCurve\_OT*         | TIME     |              | T#0s        | Aktuelle Öffnungszeitdauer aus der Kurve (\_OT = Opening Time)                                                                                         |
| *tRemainingTime\_OT*     | TIME     |              | T#0s        | Restzeit der aktiven Öffnungszeitdauer (\_OT = Opening Time)                                                                                           |
| *xActive\_OT*            | BOOL     |              | FALSE       | Rückmeldung - Aktive Öffnungszeitdauer (TRUE = Aktiv) (\_OT = Opening Time)                                                                            |
| *rDegreeCurve\_WDOO\_OT* | REAL     |              | 0.0         | Aktueller Fensteröffnungsgrad \[ % ] in Abhängigkeit von der Aussentemperatur aus der Kurve (\_WDOO = Windows Degree Of Opening, \_OT = OutsideTemp)   |
| *rDegreeCurve\_WDOO\_WS* | REAL     |              | 0.0         | Aktueller Fensteröffnungsgrad \[ % ] in Abhängigkeit von der Windgeschwindigkeit aus der Kurve (\_WDOO = Windows Degree Of Opening, \_WS = Wind Speed) |
| *rDegree\_WDOO*          | REAL     |              | 0.0         | Aktueller Fensteröffnungsgrad \[ % ] (\_WDOO = Windows Degree Of Opening)                                                                              |
| *xActive\_WDOO*          | BOOL     |              | FALSE       | Rückmeldung - Aktive Fensteröffnung (TRUE = Aktiv) (\_WDOO = Windows Degree Of Opening)                                                                |
| *tTimeCurve\_WT*         | TIME     |              | T#0s        | Aktuelle Wartezeit aus der Kurve (\_WT = Waiting Time)                                                                                                 |
| *tRemainingTime\_WT*     | TIME     |              | T#0s        | Restzeit der aktiven Wartezeit (\_WT = Waiting Time)                                                                                                   |
| *xActive\_WT*            | BOOL     |              | FALSE       | Rückmeldung - Aktive Wartezeit (TRUE = Aktiv) (\_WT = Waiting Time)                                                                                    |
| *xError*                 | BOOL     |              | FALSE       | Fehlerzustand (FALSE = kein Fehler, TRUE = Fehler)                                                                                                     |
| *sErrorCode*             | STRING   |              | ‘’          | String mir den Nummern der aktiven Fehler                                                                                                              |

#### Sollwerte / Parameter

| Name                  | Datentyp | Wertebereich | Initialwert | Funktion                                                                                         |
| --------------------- | -------- | ------------ | ----------- | ------------------------------------------------------------------------------------------------ |
| **rOutsideTempLimit** | REAL     |              | -15         | Aussentemperatur-Grenzwert, bei dessen Unterschreitung keine Fensteröffnung mehr gestartet wird. |

### Funktionsbeschreibung

#### Kennlinien

Die insgesamt vier frei einstellbaren Kennlinien (mit jeweils 10 Stützpunkten, FB ‘Curve\_10XY\_Reaö\_Real’ oder FB ‘Curve\_10XY\_Real\_Time’)\
werden mit den zugehörigen Dateneingängen (arData\_XX) verbunden, ebenso die Ausgänge der Kennlinien, die die Gültigkeit\
der Daten signalisieren (xValidData\_XX).\
Die Zuordnung der Kennlinien zu den Eingängen ist dabei fest vorgegeben:

1. Index \_OT (Opening Time): Kennlinie ‘Öffnungszeit in Abhängigkeit von der Aussentemperatur’
2. Index \_WDOO\_OT (\_WDOO = Windows Degree Of Opening, \_OT = Outside Temp): Kennlinie ‘Öffnungszeit in Abhängigkeit von der Aussentemperatur’
3. Index \_WDOO\_WS (\_WDOO = Windows Degree Of Opening, \_WS = Wind Speed): Kennlinie ‘Öffnungszeit in Abhängigkeit von der Aussen-Windgeschwindigkeit
4. Index \_WT (Waiting Time): Kennlinie ‘Wartezeit in Abhängigkeit von der Aussentemperatur’

Wird einer Kennlinie ein Eingangswert (= X-Wert) ausserhalb des durch die Stützstellen 1 und 10 vorgegebenen Bereichs übergeben, so wird der\
Y-Wert der nächstliegenden Stützstelle zurück gegeben (Beispiel: Stützstelle 1 (1, 10), Stützstelle 10 (10, 100), X-Wert = -5 — Y-Wert = 10)

#### Ablauf

Die Querlüftung wird mit einer ansteigenden Flanke am Eingang ‘xStartCrossVentilation’ gestartet. Die Öffnungszeitdauer wird aus der Kennlinie 1 berechnet.\
Aus den Kennlinien 2 und 3 wird der Öffnungsgrad bestimmt und ausgegeben. Nach dem Abschluss der Fensteröffnung wird die Wartezeit, errechnet aus Kennlinie 4,\
gestartet, die temporär eine erneute Querlüftung verhindert.

#### Start der Querlüftung

Die Querlüftung wird mit einer ansteigenden Flanke am Eingang ‘xStartCrossVentilation’ gestartet, falls alle nachfolgenden Bedingungen erfüllt sind:

1. Die Wartezeit ist nicht aktiv (xActive\_WT = FALSE)
2. Die Öffnungszeit ist nicht aktiv (xActive\_OT = FALSE)
3. Alle vier Kennlinien enthalten gültige Daten (xValidData\_XX = TRUE)
4. Die Aussentemperatur überschreitet die absolute Minimal-Grenze (rOutsideTemp > rOutsideTempLimit)

#### Öffnungsdauer

Nach dem erfolgreichen Start der Querlüftung wird die Öffnungszeitdauer einmalig aus der Kennlinie 1 in Abhängigkeit von der aktuellen\
Aussentemperatur errechnet. Während der Öffnungszeitdauer ist die Statusanzeige ‘xActive\_OT’ aktiv und am Ausgang ‘tRemainingTime\_OT’ wird die\
verbleibende Restzeitdauer ausgegeben.

#### Abbruch

Die aktive Querlüftung kann zu jedem beliebigen Zeitpunkt durch eine ansteigende Flanke am Eingang ‘xAbortCrossVentilation’ abgebrochen werden.

#### Öffnungsgrad

Nach dem erfolgreichen Start der Querlüftung wird der Öffnungsgrad einmalig aus den beiden Kennlinien 2 und 3 in Abhängkeit von der aktuellen Aussentemperatur\
bzw. der aktuellen Aussen-Windgeschwindigkeit bestimmt:\
\
Variable Z = ((Wert aus Kennlinie 2) X (Wert aus Kennlinie 3)) / 100\
Die Variable Z wird nun mit fest vorgegebenen Bereichsgrenzen verglichen und der dem jeweiligen Bereich zugeordnete Öffnungsgrad ausgegeben:\
\
0 <= Z < 15: Öffnungsgrad = 0%\
15 <= Z < 25: Öffnungsgrad = 25%\
25 <= Z < 50: Öffnungsgrad = 50%\
50 <= Z < 75: Öffnungsgrad = 75%\
Z > 75 : Öffnungsgrad = 100%\
\
Der so bestimmte Öffnungsgrad wird am Ausgang ‘rDegree\_WDOO’ ausgegeben, der Ausgang ‘xActive\_WDOO’ signalisiert dabei eine aktive Fensteröffnung (= TRUE).

#### Wartezeit

Direkt nach dem Abschluss der Öffnungsdauer beginnt eine eventuelle Wartezeit bis zur nächsten Aktivierung der Querlüftung. Hierzu muss die Wartezeitdauer\
generell freigegeben sein (xEn\_WT = TRUE). Am Anfang der Wartezeit wird die Zeitdauer einmalig aus der kennlinie 4 in Abhängigkeit von der Aussentemperatur bestimmt.\
Während der aktiven Wartezeit ist die Statusanzeige ‘xActive\_WT’ aktiv und am Ausgang ‘tRemainingTime\_WT’ wird die verbleibende Restzeitdauer ausgegeben.\
Die Wartezeit endet mit dem Ablauf der Zeitdauer oder mit der Sperrung der Wartezeit (xEn\_WT = FALSE).

#### Beendigung der Öffnungszeit

Die Öffnungszeit endet unmittlbar mit dem Ablauf der Zeitdauer (xEnComplete\_OT = FALSE).\
Die Öffnungszeit endet nach dem Ablauf der Zeitdauer (xEnComplete\_OT = TRUE), falls am Eingang ‘xComplete\_OT’ eine ansteigende Flanke erkannt wurde.\
Die dient der Verlängerung der Öffnungsdauer bis zum Erreichen eines akzeptablen CO2-Gehalts.

#### Sperrung der Querlüftung über die Aussentemperatur

Die Querlüftung wird nur dann gestartet, wenn die aktuelle Aussentemperatur zum Startzeitpunkt den einstellbaren Grenzwert ‘rOutsideTempLimit’ überschreitet.

#### Eingang ‘xResError’

Jede ansteigende Flanke an diesem Eingang setzt die Ausgänge ‘xError’ bzw. ‘sErrorCode’ auf den jeweiligen nicht fehlerhaften Zustand zurück.

#### Ausgang ‘xError’

Der Ausgang ist aktiv (= TRUE), falls mindestens ein Fehler erkannt wurde (‘sErrorCode <> ‘’).

#### Ausgang ‘sErrorCode’

Dieser Ausgang signalisiert den aktuellen Fehlerstatus. Ein Leerstring ‘’ zeigt an, das kein Fehler vorliegt.\
Aktuell sind folgende Fehlerzustände festgelegt:\
‘1’: xValidData\_OT = FALSE (Kennlinie 1 ohne gültige Daten)\
‘2’: xValidData\_WDOO\_OT = FALSE (Kennlinie 2 ohne gültige Daten)\
‘3’: xValidData\_WDOO\_WS = FALSE (Kennlinie 3 ohne gültige Daten)\
‘4’: xValidData\_WT = FALSE (Kennlinie 4 ohne gültige Daten)

#### Typische Anwendung

Der Ausgang ‘xActive\_WDOO’ (= TRUE) signalisiert die Anforderung zur Öffnung der Fenster durch die Querlüftung, der Ausgang ‘rDegree\_WDOO’\
den Fensteröffnungsgrad im Bereich 0.0 - 100.0% (0.0% = geschlossen).\
Dieser Funktionsbaustein kann wie folgt angewendet werden:

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

### CODESYS

InOut:

| Scope       | Name                     | Type                           | Initial  |
| ----------- | ------------------------ | ------------------------------ | -------- |
| Input       | `xStartCrossVentilation` | `BOOL`                         | FALSE    |
| Input       | `xAbortCrossVentilation` | `BOOL`                         | FALSE    |
| Input       | `xEn_WT`                 | `BOOL`                         | TRUE     |
| Input       | `xEnComplete_OT`         | `BOOL`                         | FALSE    |
| Input       | `xComplete_OT`           | `BOOL`                         | FALSE    |
| Input       | `rOutsideTemp`           | `REAL`                         | 0.0      |
| Input       | `rOutsideWindSpeed`      | `REAL`                         | 0.0      |
| Input       | `xResError`              | `BOOL`                         | FALSE    |
| Input       | `xValidData_OT`          | `BOOL`                         | FALSE    |
| Input       | `xValidData_WDOO_OT`     | `BOOL`                         | FALSE    |
| Input       | `xValidData_WDOO_WS`     | `BOOL`                         | FALSE    |
| Input       | `xValidData_WT`          | `BOOL`                         | FALSE    |
| Input       | `arData_OT`              | POINTER TO stCurve\_Real\_Time |          |
| Input       | `arData_WDOO_OT`         | POINTER TO stCurve\_Real\_Real |          |
| Input       | `arData_WDOO_WS`         | POINTER TO stCurve\_Real\_Real |          |
| Input       | `arData_WT`              | POINTER TO stCurve\_Real\_Time |          |
| Output      | `tTimeCurve_OT`          | `TIME`                         | TIME#0ms |
| Output      | `tRemainingTime_OT`      | `TIME`                         | TIME#0ms |
| Output      | `xActive_OT`             | `BOOL`                         | FALSE    |
| Output      | `rDegreeCurve_WDOO_OT`   | `REAL`                         | 0.0      |
| Output      | `rDegreeCurve_WDOO_WS`   | `REAL`                         | 0.0      |
| Output      | `rDegree_WDOO`           | `REAL`                         | 0.0      |
| Output      | `xActive_WDOO`           | `BOOL`                         | FALSE    |
| Output      | `tTimeCurve_WT`          | `TIME`                         | TIME#0ms |
| Output      | `tRemainingTime_WT`      | `TIME`                         | TIME#0ms |
| Output      | `xActive_WT`             | `BOOL`                         | FALSE    |
| Output      | `xError`                 | `BOOL`                         | FALSE    |
| Output      | `sErrorCode`             | `STRING`                       | ‘’       |
| Input Const | `rOutsideTempLimit`      | `REAL`                         | -15.0    |

Methods:

> mCalculateCurveSectionValue\_Real\_Real

> mCalculateCurveSectionValue\_Real\_Time

> mCalculateCurveValue\_Real\_Real

> mCalculateCurveValue\_Real\_Time

> mResData

Structure:

* mCalculateCurveSectionValue\_Real\_Real (Method)
* mCalculateCurveSectionValue\_Real\_Time (Method)
* mCalculateCurveValue\_Real\_Real (Method)
* mCalculateCurveValue\_Real\_Time (Method)
* mResData (Method)


---

# 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/hvac-library/functionblocks/components/crossventilation_sulzer.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.
