# Fan2Speed

## `Fan2Speed` (FB)

FUNCTION\_BLOCK Fan2Speed

### Kurzbeschreibung

> Steuerung eines zweistufigen Ventilators\
> Zusatzfunktionen: Luftmangelüberwachung, Betriebsüberwachung, Reparaturschalter, Handübersteuerung, Statusanzeige\
> Typische Anwendung: Steuerung eines Ventilators

### Darstellung

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

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein steuert einen einstufigen Ventilator.\
Es kommen im Wesentlichen folgende Funktionsbausteine zur Anwendung:

* AirShortage
* ManBin
* OperatingHours

#### Freigabe - Ventilator vor Handübersteuerung *xAB*

Die Freigabe - Ventilator vor Handübersteuerung *xAB* wird durch die Anforderung des Ventilators *xEn*, die Sammelstörmeldung *xAlarm*, die Meldung des Reparaturschalters *xMSwitch*, den Parameter **xAlarmControl** und die Luftmangelüberwachung beeinflusst.\
\
Die Freigabe - Ventilator vor Handübersteuerung *xAB* ist aktiv (= TRUE), falls folgende Zustände gleichzeitig vorliegen:\
\
Fall 1:\
\
\&#xNAN;*xEn* = TRUE (Anforderung aktiv)\
\&#xNAN;*xMSwitch* = TRUE (Motorschutzschalter nicht ausgelöst)\
**xAlarmControl** = FALSE (Sammelstörmeldung nicht berücksichtigt)\
\
Fall 2:\
\
\&#xNAN;*xEn* = TRUE (Anforderung aktiv)\
\&#xNAN;*xAlarm* = FALSE (Sammelstörmeldung nicht aktiv)\
\&#xNAN;*xMSwitch* = TRUE (Motorschutzschalter nicht ausgelöst)\
**xAlarmControl** = TRUE (Sammelstörmeldung berücksichtigt)\
\
In allen übrigen Situationen ist die Freigabe - Ventilator vor Handübersteuerung *xAB* nicht aktiv (= FALSE).

#### Freigabe - Ventilator nach Handübersteuerung *xHB*

Die Freigabe - Ventilator vor Handübersteuerung *xHB* entspricht der Freigabe - Ventilator vor Handübersteuerung *xAB*, zusätzlich erweitert um ein Handübersteuermodul und um eine Zwangsübersteuerung.

| *xAB* | **eManModeB**  | *xForce* | **xForceOption** | *xHB* | Hinweise                               |
| ----- | -------------- | -------- | ---------------- | ----- | -------------------------------------- |
| FALSE | eMANBIN.Auto   | FALSE    | X                | FALSE | Handübersteuermodul in Automatik       |
| TRUE  | eMANBIN.Auto   | FALSE    | X                | TRUE  | Handübersteuermodul in Automatik       |
| X     | eMANBIN.ManOn  | FALSE    | X                | TRUE  | Handübersteuermodul in Handbetrieb Ein |
| X     | eMANBIN.ManOff | FALSE    | X                | FALSE | Handübersteuermodul in Handbetrieb Aus |
| X     | X              | TRUE     | FALSE            | FALSE | Zwangsübersteuerung Aus                |
| X     | X              | TRUE     | TRUE             | TRUE  | Zwangsübersteuerung Ein                |

Legende: X = beliebig

#### Meldung des Reparaturschalters *xMSwitch*

*xMSwitch* = TRUE: Reparaturschalter wurde nicht ausgelöst (Normalzustand)\
\&#xNAN;*xMSwitch* = FALSE: Reparaturschalter wurde ausgelöst (Fehlerzustand)

#### Zwangsübersteuerung *xForce*

Die Zwangsübersteuerung wirkt direkt auf den Ausgang *xHB*. Mit dem Parameter **xForceOption** wird festgelegt, welchen Zustand der Ausgang *xHB* bei TRUE am Eingang *xForce* einnimmt.

#### Betriebsstunden und Einschaltvorgänge

Die Anzahl der Betriebsstunden und der Einschaltvorgänge werden erfasst (= Zählprozess aktiv), falls die Betriebsmeldung des Ventilators *xFb* aktiv ist und gleichzeitig die Sammelstörmeldung *xAlarm* nicht aktiv ist (= FALSE).\
Die Ergebnisse stehen an den Zählerausgängen **udiOperatingHours** und **udiCountFb** zur Verfügung.

> **Schreibzugriff auf die Zählerstände**
>
> Über den Pfad ‘Instanzname.\_OperatingHours.udiOperatingHours’ bzw. ‘Instanzname.\_OperatingHours.udiCountFb’ ist ein Schreibzugriff auf die beide Zählerstände möglich.

#### Datum / Uhrzeit des letzten Betriebs des Ventilators *dtLastFb*

Am Ausgang *dtLastFb* steht während des Zählprozesses das aktuelle Datum / die aktuelle Uhrzeit zur Verfügung.\
Am Ausgang *dtLastFb* steht ausserhalb des Zählprozesses das Datum / die Uhrzeit am Ende des letzten Zählprozesses zur Verfügung.\
Am Ausgang *dtLastFb* wird vor dem ersten Zählprozess der Initialisierungswert DT#1970-1-1-0.0.0 ausgegeben.

#### Betriebsüberwachung

Die Betriebsüberwachung kann durch den Sollwert / Parameter **xFbControl** freigegeben (= TRUE) oder gesperrt (= FALSE) werden.\
\
Bei gesperrter Überwachung wird die Störmeldung der Betriebsüberwachung *xAlarmFb* immer gesperrt (= FALSE).\
Bei freigegebener Überwachung wird die Störmeldung der Betriebsüberwachung *xAlarmFb* aktiviert (= TRUE), falls gleichzeitig während einer Mindestzeitdauer **udiFbControlTime** folgende Zustände gegeben sind:\
\
\&#xNAN;*xHB* und *xFb* = ungleich (Freigabezustand und Betriebszustand stimmen nicht überein)\
\&#xNAN;*eAOO* = HVACTYPES.eManBin.Auto (Handübersteuerung - Hardware in Automatik)\
\&#xNAN;*xFbControl* = TRUE (Betriebsüberwachung ist freigegeben)\
\
Die Störmeldung der Betriebsüberwachung *xAlarmFb* wird zurück gesetzt (= FALSE), falls mindestens eine der nachfolgenden Bedingungen erfüllt ist:\
\
\&#xNAN;*eAOO* = HVACTYPES.eManBin.Auto (Rückschaltung in den Automatikbetrieb der Handübersteuerung - Hardware)\
\&#xNAN;*xQuit* = TRUE (Rücksetzung der Störmeldungen ist aktiv)\
\&#xNAN;*xFbControl* = FALSE (Betriebsüberwachung gesperrt)

#### Luftmangelüberwachung

Sie dient zur Erkennung einer Luftmangelsituation durch die Auswertung der Signale an den Eingängen Meldung der Luftmangelsituation *xPFb* und der Betriebsmeldung des Ventilators *xFb*.\
Die Luftmangelüberwachung kann durch den Sollwert / Parameter **xPFbControl** freigegeben (= TRUE) oder gesperrt (= FALSE) werden. Im gesperrten Zustand wird der Ausgang - Störmeldung *xAlarmPFb* nicht aktiviert (= FALSE).\
\
Der Ausgang - Störmeldung *xAlarmPFb* wird aktiviert (*xAlarmPFb* = TRUE), falls die unten stehenden Bedingungen 1 und 2 gleichzeitig erfüllt sind.\
\
Bedingung 1: Der Eingang für den Differenzdruckschalter *xPFb* befindet sich mindestens während der Wartezeit *udiPFbControlTime* permanent im Zustand FALSE (= Luftmangelsituation).\
\
Bedingung 2: Die Betriebsmeldung für den Ventilator *xFb* befindet sich mindestens während der Wartezeit *udiPFControlTime* permanent im Zustand TRUE (= Ventilator in Betrieb).\
\
\
Der Ausgang - Störmeldung *xAlarmPFb* wird in folgenden Fällen deaktiviert (*xAlarmPFb* = FALSE):\
\
Fall 1: Die Bedingungen 1 und / oder 2 sind nicht erfüllt und die Rücksetzung der Störmeldung *xQuit* ist aktiv (= TRUE).

#### Sammelstörmeldung *xAlarm*

Die Sammelstörmeldung wird aktiviert (= TRUE), falls mindestens eine der nachfolgend beschriebenen Bedingungen erfüllt ist.\
\
\&#xNAN;*xAlarmIn* = TRUE (Störmeldung des Ventilators ist aktiv)\
\&#xNAN;*xAlarmFB* = TRUE (Fehler aus der Betriebüberwachung)\
\&#xNAN;*xAlarmPFb* = TRUE (Fehler aus der Luftmangelüberwachung)\
\&#xNAN;*xMSwitch* = FALSE (Reparaturschalter wurde ausgelöst)\
\
In allen übrigen Fällen ist die Sammelstörung nicht aktiv (= FALSE).

#### Sammelmeldung Automatikbetrieb *xAuto*

Die Sammelmeldung Automatikbetrieb *xAuto* wird aktiviert (= TRUE), falls der Eingang *eAOO* den Wert HVACTYPES.eManBin.Auto und der Sollwert / Parameter **eManModeB** den Wert eMANBIN.Auto enthält.\
In alle übrigen Fällen ist die Sammelmeldung Automatikbetrieb *xAuto* nicht aktiviert (= FALSE).

### CODESYS

InOut:

| Scope       | Name                  | Type    | Initial      |
| ----------- | --------------------- | ------- | ------------ |
| Input       | `xEn1`                | `BOOL`  |              |
| Input       | `xEn2`                | `BOOL`  |              |
| Input       | `xForce`              | `BOOL`  | FALSE        |
| Input       | `xFb1`                | `BOOL`  |              |
| Input       | `xFb2`                | `BOOL`  |              |
| Input       | `xPFb`                | `BOOL`  |              |
| Input       | `xMSwitch`            | `BOOL`  | TRUE         |
| Input       | `xAlarmIn1`           | `BOOL`  |              |
| Input       | `xAlarmIn2`           | `BOOL`  |              |
| Input       | `eAOO1`               | eManBin | eManBin.Auto |
| Input       | `eAOO2`               | eManBin | eManBin.Auto |
| Input       | `xQuit`               | `BOOL`  | FALSE        |
| Output      | `xHB1`                | `BOOL`  |              |
| Output      | `xHB2`                | `BOOL`  |              |
| Output      | `xAB1`                | `BOOL`  |              |
| Output      | `xAB2`                | `BOOL`  |              |
| Output      | `xAlarmFb`            | `BOOL`  |              |
| Output      | `xAlarmPFb`           | `BOOL`  |              |
| Output      | `dtLastFb`            | `DT`    |              |
| Output      | `udiOperatingHours1`  | `UDINT` |              |
| Output      | `udiCountFb1`         | `UDINT` |              |
| Output      | `udiOperatingHours2`  | `UDINT` |              |
| Output      | `udiCountFb2`         | `UDINT` |              |
| Output      | `xAlarm`              | `BOOL`  |              |
| Output      | `xAuto`               | `BOOL`  |              |
| Input Const | `udiMinTime_V1_To_V2` | `UDINT` | 10           |
| Input Const | `udiDelay_V2_V1`      | `UDINT` | 6            |
| Input Const | `udiDelay_V1_V2`      | `UDINT` | 1            |
| Input Const | `udiPFbControlTime`   | `UDINT` | 60           |
| Input Const | `xPFbControl`         | `BOOL`  | TRUE         |
| Input Const | `xAlarmControl`       | `BOOL`  | TRUE         |
| Input Const | `udiFbControlTime`    | `UDINT` | 60           |
| Input Const | `xFbControl`          | `BOOL`  | TRUE         |
| Input Const | `xForceOption`        | `BOOL`  | FALSE        |
| Input Const | `eManModeB2`          | eMANBIN | eMANBIN.Auto |
| Input Const | `eManModeB1`          | eMANBIN | eMANBIN.Auto |

Methods:

> mQuit

> mResetOperatingHours

Structure:

* mQuit (Method)
* mResetOperatingHours (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/fan2speed.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.
