# FanAnalog

## `FanAnalog` (FB)

FUNCTION\_BLOCK FanAnalog

### Kurzbeschreibung

> Steuerung eines drehzahlvariablen Ventilators\
> Zusatzfunktionen: Handübersteuerungen, Reparaturschalter, Betriebsstundenzähler, Luftmangel\
> Typische Anwendung: Ansteuerung eines Ventilators mit Frequenzumrichter

### Darstellung

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

### Schnittstellen

#### Eingänge

| Name       | Datentyp          | Wertebereich                                                              | Initialwert            | Funktion                                                                           |
| ---------- | ----------------- | ------------------------------------------------------------------------- | ---------------------- | ---------------------------------------------------------------------------------- |
| *xEn*      | BOOL              |                                                                           |                        | Anforderung des Ventilators (FALSE = Aus, TRUE = Ein)                              |
| *rY*       | REAL              |                                                                           |                        | Stellsignal - Drehzahl 0.0 - 100.0 %                                               |
| *xForce*   | BOOL              |                                                                           | FALSE                  | Zwangssperrung des Ventilators nach Handübersteuerung (FALSE = Aus, TRUE = Ein)    |
| *xFb*      | BOOL              |                                                                           |                        | Betriebsmeldung des Ventilators (FALSE = Aus, TRUE = Ein)                          |
| *xPFb*     | BOOL              |                                                                           |                        | Rückmeldung der Luftmangelüberwachung (FALSE = Luftmangel, TRUE = kein Luftmangel) |
| *xMSwitch* | BOOL              |                                                                           | TRUE                   | Rückmeldung der Reparaturschalters (FALSE = Schalter Aus, TRUE = Schalter Ein)     |
| *xAlarmIn* | BOOL              |                                                                           |                        | Störmeldung des Ventilators (FALSE = Aus, TRUE = Ein)                              |
| *eAOO*     | HVACTYPES.eManBin | HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn | HVACTYPES.eManBin.Auto | Betriebsart der Handübersteuerung - Hardware für die Freigabe                      |
| *eAO*      | HVACTYPES.eManNum | HVACTYPES.eManNum.Auto, HVACTYPES.eManNum.Man                             | HVACTYPES.eManNum.Auto | Betriebsart der Handübersteuerung - Hardware für das Stellsignal                   |
| *rPoti*    | REAL              |                                                                           |                        | Handwert - Handübersteuerung - Hardware für das Stellsignal                        |
| *rU*       | REAL              |                                                                           |                        | Rückführsignal vom Ventilator in %                                                 |
| *xQuit*    | BOOL              |                                                                           | FALSE                  | Rücksetzung der Störmeldungen (Überwachungen) (FALSE = Aus, TRUE = Ein)            |

#### Ausgänge

| Name                | Datentyp        | Wertebereich | Initialwert | Funktion                                                                                  |
| ------------------- | --------------- | ------------ | ----------- | ----------------------------------------------------------------------------------------- |
| *xHB*               | BOOL            |              |             | Freigabe - Ventilator nach Handübersteuerung (FALSE = Aus, TRUE = Ein)                    |
| *xAB*               | BOOL            |              |             | Freigabe - Ventilator vor Handübersteuerung (FALSE = Aus, TRUE = Ein)                     |
| *rHA*               | REAL            |              |             | Stellsignal - Ventilator nach Handübersteuerung in %                                      |
| *rAA*               | REAL            |              |             | Stellsignal - Ventilator vor Handübersteuerung in %                                       |
| *xAlarmFb*          | BOOL            |              |             | Störmeldung der Betriebsüberwachung (FALSE = Aus, TRUE = Ein)                             |
| *xAlarmPFb*         | BOOL            |              |             | Störmeldung der Luftmangelüberwachung (FALSE = Aus, TRUE = Ein)                           |
| *dtLastFb*          | DATE\_AND\_TIME |              |             | Datum / Uhrzeit des letzten Betriebs des Ventilators                                      |
| *udiOperatingHours* | UDINT           |              |             | Betriebsstunden des Ventilators                                                           |
| *udiCountFb*        | UDINT           |              |             | Anzahl der Einschaltungen des Ventilators                                                 |
| *xAlarm*            | BOOL            |              |             | Sammelstörmeldung (FALSE = Aus, TRUE = Ein)                                               |
| *xAuto*             | BOOL            |              |             | Sammelmeldung - Automatikbetrieb (FALSE = kein Automatikbetrieb, TRUE = Automatikbetrieb) |

#### Sollwerte / Parameter

| Name                  | Datentyp | Wertebereich                                | Initialwert  | Funktion                                                                          |
| --------------------- | -------- | ------------------------------------------- | ------------ | --------------------------------------------------------------------------------- |
| **udiPFbControlTime** | UDINT    | 0 … 3600s                                   | 60s          | Meldeverzögerung der Luftmangelüberwachung in s                                   |
| **xPFbControl**       | BOOL     |                                             | TRUE         | Freigabe / Sperrung der Luftmangelüberwachung (FALSE = Sperrung, TRUE = Freigabe) |
| **xAlarmControl**     | BOOL     |                                             | TRUE         | Einfluss von *xAlarm* auf *xAB* (FALSE = kein Einfluss, TRUE = Sperrung)          |
| **udiFbControlTime**  | UDINT    | 0 … 300s                                    | 60s          | Meldeverzögerung der Betriebsüberwachung in s                                     |
| **xFbControl**        | BOOL     |                                             | TRUE         | Freigabe / Sperrung der Betriebsüberwachung (FALSE = Sperrung, TRUE = Freigabe)   |
| **rManValue**         | REAL     |                                             |              | Stellsignal im Handbetrieb in %                                                   |
| **eManModeN**         | eManNum  | eManNum.Auto, eManNum.man                   | eManNum.Auto | Betriebsart der Handübersteuerung für das Stellsignal *rHA*                       |
| **eManModeB**         | eMANBIN  | eMANBIN.Auto, eMANBIN.ManOff, eMANBIN.ManOn | eMANBIN.Auto | Betriebsart der Handübersteuerung für den digitalen Ausgang *xHB*                 |

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein steuert einen drehzahlvariablen Ventilator mittels eines stetigen Stellsignals *rHA*, der im Automatikbetrieb (**eManModeN** = eManNum.Auto) unverändert vom Eingang *rY* übernommen wird.\
Die generelle Freigabe des Ventilators erfolgt über die Anforderung *xEn* und das Freigabesignal *xHB*.\
Es kommen im Wesentlichen folgende Funktionsbausteine zur Anwendung:

* ManBin
* ManNum
* AirShortage
* CTime
* OperatingHours

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

Die Freigabe - Ventilator vor Handübersteuerung *xAB* wird aktiviert (= TRUE), falls gleichzeitig folgende Bedingungen erfüllt sind:\
\
Fall 1:\
\
\&#xNAN;*xEn* = TRUE\
\&#xNAN;*xMSwitch* = TRUE\
**xAlarmControl** = FALSE\
\
Fall 2:\
\
\&#xNAN;*xEn* = TRUE\
\&#xNAN;*xMSwitch* = TRUE\
**xAlarmControl** = TRUE\
\&#xNAN;*xAlarm* = FALSE\
\
In allen übrigen Situationen ist die Freigabe - Ventilator vor Handübersteuerung *xAB* nicht aktiviert (= FALSE).

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

Die Freigabe - Ventilator nach Handübersteuerung *xHB* entspricht der Freigabe - Ventilator vor Handübersteuerung *xAB*, zusätzlich erweitert um ein Handübersteuermodul.\
Die Freigabe kann generell nur dann erfolgen, falls die Zwangssperrung des Ventilators nach Handübersteuerung nicht aktiv (*xForce* = FALSE)\
und die Sammelstörmeldung nicht aktiv sind (*xAlarm* = FALSE).

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

Legende: X = beliebig

#### Meldung des Reparaturschalters *xMSwitch*

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

#### Zwangssperrung des Ventilators nach Handübersteuerung *xForce*

*xForce* = FALSE: keine Zwangssperrung (Normalzustand)\
\&#xNAN;*xForce* = TRUE: Zwangssperrung (Ausnahmezustand)

#### 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.
>
> **Voraussetzung für den Einsatz des Funktionsbausteins FanAnalog**
>
> Zur korrekten Funktion ist der Einsatz des Funktionsbausteins TimeRead2 erforderlich.

#### 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 für die Freigabe in Automatik)\
**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 Überwachungen ist aktiv)\
**xFbControl** = FALSE (Betriebsüberwachung gesperrt)

#### Luftmangelüberwachung

Die Luftmangelüberwachung erfolgt durch die Auswertung der Zustände an den Eingängen *xPFb* bzw. *xFb*.\
\
Die Störmeldung der Luftmangelüberwachung *xAlarmPFb* wird aktiviert (= TRUE), falls bei freigegebener Überwachung (**xPFbControl** = TRUE) während der Meldeverzögerung der Luftmangelüberwachung **udiPFbControlTime** permanent der Eingang *xPFb* nicht aktiv (= FALSE) und der\
Eingang *xFb* aktiv (= TRUE) sind.\
\
Die Störmeldung der Luftmangelüberwachung *xAlarmPFb* wird deaktiviert (= FALSE), falls die Bedingungen zur Aktivierung nicht mehr gegeben sind und gleichzeitig die Überwachung gesperrt ist (**xPFbControl** = FALSE) und / oder die Rücksetzung der Störmeldungen (Überwachungen) aktiv ist (*xQuit* = 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 in Stellung Aus)\
\
In allen übrigen Fällen ist die Sammelstörung nicht aktiv (= FALSE).

#### Stellsignal Ventilator vor Handübersteuerung *rAA*

Das Stellsignal des Ventilators vor Handübersteuerung *rAA* wird unverändert vom Eingang Stellsignal - Drehzahl *rY* übernommen, falls entweder der Ausgang *xHB* und / oder der Eingang *xFb* aktiv sind.\
In allen übrigen Situationen wird das Stellsignal *rAA* auf den Wert 0.0 % fixiert.

#### Stellsignal Ventilator nach Handübersteuerung *rHA*

Das Stellsignal des Klappenantriebs nach Handübersteuerung *rHA* entspricht dem Stellsignal des Ventilators vor Handübersteuerung *rAA* zusätzlich erweitert um ein Handübersteuermodul.

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

Legende: X = beliebig

#### Sammelmeldung Automatikbetrieb *xAuto*

Die Sammelmeldung Automatikbetrieb *xAuto* wird aktiviert (= TRUE), falls folgende Bedingungen gleichzeitig erfüllt sind:

* Eingang *eAOO* = HVACTYPES.eManBin.Auto
* Eingang *eAO* = HVACTYPES.eManNum.Auto
* Sollwert / Parameter **eManModeB** = eMANBIN.Auto
* Sollwert / Parameter **eManModeN** = eMANNUM.Auto

### CODESYS

InOut:

| Scope       | Name                | Type    | Initial      |
| ----------- | ------------------- | ------- | ------------ |
| Input       | `xEn`               | `BOOL`  |              |
| Input       | `rY`                | `REAL`  |              |
| Input       | `xForce`            | `BOOL`  | FALSE        |
| Input       | `xFb`               | `BOOL`  |              |
| Input       | `xPFb`              | `BOOL`  |              |
| Input       | `xMSwitch`          | `BOOL`  | TRUE         |
| Input       | `xAlarmIn`          | `BOOL`  |              |
| Input       | `eAOO`              | eManBin | eManBin.Auto |
| Input       | `eAO`               | eManNum | eManNum.Auto |
| Input       | `rPoti`             | `REAL`  |              |
| Input       | `rU`                | `REAL`  |              |
| Input       | `xQuit`             | `BOOL`  | FALSE        |
| Output      | `xHB`               | `BOOL`  |              |
| Output      | `xAB`               | `BOOL`  |              |
| Output      | `rHA`               | `REAL`  |              |
| Output      | `rAA`               | `REAL`  |              |
| Output      | `xAlarmFb`          | `BOOL`  |              |
| Output      | `xAlarmPFb`         | `BOOL`  |              |
| Output      | `dtLastFb`          | `DT`    |              |
| Output      | `udiOperatingHours` | `UDINT` |              |
| Output      | `udiCountFb`        | `UDINT` |              |
| Output      | `xAlarm`            | `BOOL`  |              |
| Output      | `xAuto`             | `BOOL`  |              |
| 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 | `rManValue`         | `REAL`  |              |
| Input Const | `eManModeN`         | eMANNUM | eMANNUM.Auto |
| Input Const | `eManModeB`         | 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/fananalog.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.
