# FireDamperMotSmoke

## `FireDamperMotSmoke` (FB)

FUNCTION\_BLOCK FireDamperMotSmoke

### Kurzbeschreibung

> Steuerung einer motorischen Brandschutzklappe mit zwei Positionsrückmeldungen\
> Zusatzfunktionen: Funktionstest der Brandschutzklappe\
> Typische Anwendung: Steuerung einer Brandschutzklappe in einer RLT-Anlage

### Darstellung

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

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein steuert eine binäre motorische Brandschutzklappe(*xEn* = TRUE), überwacht die Laufzeiten während des Öffnungs- und Schließvorgangs und kann einen vollständigen Brandschutzklappentest durchführen.\
Der Funktionsbaustein kann entweder im Normalbetrieb oder im Testbetrieb betrieben werden.\
Der Testbetrieb ist gegenüber dem Normalbetrieb höher priorisiert und kann durch eine ansteigende Flanke am Eingang *xTestEx* und / oder am Sollwert / Parameter **xRunTest** ausgelöst werden.

#### Freigabe Öffnung / Schliessung der Brandschutzklappe vor Handübersteuerung *xAB*

Die Freigabe Öffnung / Schliessung der Brandschutzklappe vor Handübersteuerung *xAB* wird unverändert von der Anforderung Öffnung / Schliessung der Brandschutzklappe *xEn* übernommen, falls der Brandschutzklappentest nicht aktiv ist.

#### Freigabe Öffnung / Schliessung der Brandschutzklappe nach Handübersteuerung *xHB*

Die Freigabe Öffnung / Schliessung der Brandschutzklappe nach Handübersteuerung *xHB* entspricht der Freigabe Öffnung / Schliessung der Brandschutzklappe vor Handübersteuerung *xAB* zusätzlich erweitert um ein Handübersteuermodul

| *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

#### Sammelstörung *xAlarm*

Die Sammelstörung *xAlarm* wird aktiviert (= TRUE), falls mindestens eine der nachfolgend beschriebenen Bedingungen gegeben ist:

1\) Die Störmeldung für die Rückmeldung der Öffnung *xAlarmOpen* ist aktiv (= TRUE).\
\
2\) Die Störmeldung für die Rückmeldung der Schliessung xAlarmClosed ist aktiv (= TRUE).\
\
3\) Die Brandschutzklappe ist nicht vollständig geöffnet (xOpen = FALSE).\
(Hintergrund: Jede nicht vollständig geöffnete Brandschutzklappe stellt im Normalbetrieb einen fehlerhaften Zustand dar).\
\
4\) Der Eingang \*xAlarmIn\* ist aktiv (= TRUE).\
\
5\) Der Eingang \*xSmokeAlarm\* ist aktiv (= TRUE).\
\
In alle übrigen Fällen ist die Sammelstörung xAlarm nicht aktiviert (= FALSE).

#### Freigabe / Sperrung der Störmeldung für die Rückmeldung der Öffnung *xAlarmOpen*

Die Überwachung der Laufzeit der Klappe während des Öffnungsvorgangs auf einen einstellbaren Maximalwert (**tOpen**) startet, falls im Normalbetrieb mindestens eine der nachfolgend beschriebenen Bedingungen erfüllt ist:

1\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Ausgang *xHB* erkannt (= Regelfall).\
\
2\) Die Anforderung zur Öffnung ist aktiv (xEn = TRUE) und gleichzeitig wird am Eingang **xQuit** eine ansteigende Flanke (FALSE > TRUE) erkannt.\
\
3\) Der Ausgang xHB ist aktiv (= TRUE) und gleichzeitig wird eine abfallende Flanke (TRUE > FALSE) am Eingang **xOpen** erkannt.\
\
Die Störmeldung für die Rückmeldung der Öffnung **xAlarmOpen** wird aktiviert (= TRUE), falls nach dem Ablauf der maximalen Laufzeit **tOpen** bei aktivem Ausgang (xHB = TRUE) mindestens eine der nachfolgenden Bedingungen erfüllt ist:\
\
1\) Die Rückmeldung der vollständigen Öffnung ist nicht aktiv (xOpen = FALSE) (= Regelfall).\
\
2\) Die Rückmeldungen **xOpen** bzw. **xClosed** haben denselben Zustand.\
\
Die Störmeldung für die Rückmeldung der Öffnung **xAlarmOpen** wird deaktiviert (= FALSE), falls am Eingang **xQuit** eine ansteigende Flanke (FALSE > TRUE) erkannt wird.

#### Freigabe / Sperrung der Störmeldung für die Rückmeldung der Schließung *xAlarmClosed*

Die Überwachung der Laufzeit der Klappe während des Schließvorgangs auf einen einstellbaren Maximalwert (**tclose**) startet, falls im Normalbetrieb mindestens eine der nachfolgend beschriebenen Bedingungen erfüllt ist:

1\) Es wird eine abfallende Flanke (TRUE > FALSE) am Ausgang *xHB* erkannt (= Regelfall).\
\
2\) Die Anforderung zur Schließung ist aktiv (xEn = FALSE) und gleichzeitig wird am Eingang **xQuit** eine ansteigende Flanke (FALSE > TRUE) erkannt.\
\
Die Störmeldung für die Rückmeldung der Schliessung **xAlarmClosed** wird aktiviert (= TRUE), falls nach dem Ablauf der maximalen Laufzeit **tClose** bei nicht aktivem Ausgang (xHB = FALSE) mindestens eine der nachfolgenden Bedingungen erfüllt ist:\
\
1\) Die Rückmeldung der vollständigen Schließung ist nicht aktiv (xClosed = FALSE) (= Regelfall).\
\
2\) Die Rückmeldungen **xOpen** bzw. **xClosed** haben denselben Zustand.\
\
Die Störmeldung für die Rückmeldung der Schließung **xAlarmClosed** wird deaktiviert (= FALSE), falls am Eingang **xQuit** eine ansteigende Flanke (FALSE > TRUE) erkannt wird.

#### Zeitdauer der letzten vollständigen Öffnung *tLastOpen*

Die Messung der Zeitdauer beginnt jeweils, falls mindestens eine der nachfolgend beschriebenen Bedingungen erfüllt ist:

1\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Eingang *xOpen* erkannt.\
\
2\) Es wird eine abfallende Flanke (TRUE > FALSE) am Eingang xOpen erkannt.\
\
3\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Eingang xClosed erkannt.\
\
4\) Es wird eine abfallende Flanke (TRUE > FALSE) am Eingang xClosed erkannt. (Regelfall)\
\
5\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Ausgang xHB erkannt.\
\
6\) Es wird eine abfallende Flanke (TRUE > FALSE) am Ausgang xHB erkannt.\
\
An diesem Ausgang steht nach jeder ansteigenden Flanke an der Rückmeldung der vollständigen Öffnung **xOpen** (FALSE > TRUE) die Laufzeit zur Verfügung.

#### Zeitdauer der letzten vollständigen Schließung *tLastClosed*

Die Messung der Zeitdauer beginnt jeweils, falls mindestens eine der nachfolgend beschriebenen Bedingungen erfüllt ist:

1\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Eingang *xOpen* erkannt.\
\
2\) Es wird eine abfallende Flanke (TRUE > FALSE) am Eingang xOpen erkannt. (Regelfall)\
\
3\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Eingang xClosed erkannt.\
\
4\) Es wird eine abfallende Flanke (TRUE > FALSE) am Eingang xClosed erkannt.\
\
5\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Ausgang xHB erkannt.\
\
6\) Es wird eine abfallende Flanke (TRUE > FALSE) am Ausgang xHB erkannt.\
\
An diesem Ausgang steht nach jeder ansteigenden Flanke an der Rückmeldung der vollständigen Schließung **xClosed** (FALSE > TRUE) die Laufzeit zur Verfügung.

#### Zeitdauer der aktuellen Öffnung / Schließung in *tRunTime*

An diesem Ausgang steht während jeder Laufzeitmessung die aktuelle Laufzeit zur Verfügung.

#### Prüfung der Funktionen der Brandschutzklappe (Testbetrieb)

Der Testbetrieb wird immer generell ausgelöst, falls mindestens eine der nachfolgend beschriebenen Bedingungen gegeben ist:

1\) Es wird eine ansteigende Flanke (FALSE > TRUE) am Eingang *xTestEx* erkannt.\
\
2\) Es wird der aktive Zustand (= TRUE) am Sollwert / Parameter **xRunTest** erkannt. Der aktive Zustand wird unmittelbar nach der Erkennung zurück (= FALSE) gesetzt.\
\
Der tatsächliche Testbetrieb erfolgt jedoch nur, falls die Rückmeldung des Automatikbetriebs **eAOO** (0 = Automatik, >0 = Handbetrieb) den Wert 0 enthält und gleichzeitig die Betriebsart der Handübersteuerung für den digitalen Ausgang **xHB** den Automatikbetrieb signalisiert (eMANBIN = eMANBIN.Auto).\
\
Im Testbetrieb erfolgt eine Schließung und anschließende Öffnung der Brandschutzklappe, jeweils mit Laufzeitüberwachung. Am Anfang des Testbetriebs werden die Ausgänge **xAlarmOpen**, **xAlarmClosed**, **tTestOpen**, **tTestClosed** und **xTestOK** zurück gesetzt (= FALSE).\
\
Nun wird der Steuerbefehl für die Schließung ausgelöst und die Laufzeit hinsichtlich einer Überschreitung des Maximalwerts **tClosed** überwacht. Wird die korrekte Rückmeldesituation (xClosed = TRUE und xOpen = FALSE) ohne Überschreitung des Maximalwerts erreicht, so wird der Ausgang **xAlarmClosed** nicht aktiviert (= FALSE). In allen übrigen Situationen wird der Ausgang **xAlarmClosed** aktiviert (= TRUE).\
\
Nun wird der Steuerbefehl für die Öffnung ausgelöst und die Laufzeit hinsichtlich einer Überschreitung des Maximalwerts **tOpen** überwacht. Wird die korrekte Rückmeldesituation (xOpen = TRUE und xClosed = FALSE) ohne Überschreitung des Maximalwerts erreicht, so wird der Ausgang **xAlarmOpen** nicht aktiviert (= FALSE). In allen übrigen Situationen wird der Ausgang **xAlarmOpen** aktiviert (= TRUE).\
\
Die Ergebnisanzeige für den Brandschutzklappentest **xTestOK** wird aktiviert (= Prüfung erfolgreich), falls keiner der beiden Ausgänge **xAlarmOpen** bzw. **xAlarmClosed** aktiv (= TRUE) ist. Die erreichten Werte **tLastOpen** und **tLastClosed** werden jeweils auf die Ausgänge **tTestOpen** und **tTestClosed** gelegt und bis zum nächsten Brandschutzklappentest gespeichert.\
\
Der Testbetrieb endet automatisch, sobald die Prüfung der Brandschutzklappe beendet ist.

#### Voraussetzungen

> **Voraussetzung für den Einsatz des Funktionsbausteins FireDamperMot**
>
> Zur korrekten Funktion ist der Einsatz des Funktionsbausteins TimeRead2 erforderlich.

### CODESYS

InOut:

| Scope       | Name           | Type     | Initial      |
| ----------- | -------------- | -------- | ------------ |
| Input       | `xEn`          | `BOOL`   |              |
| Input       | `xAlarmIn`     | `BOOL`   | FALSE        |
| Input       | `eAOO`         | eManBin  | eManBin.Auto |
| Input       | `xOpen`        | `BOOL`   |              |
| Input       | `xClosed`      | `BOOL`   |              |
| Input       | `xQuit`        | `BOOL`   | FALSE        |
| Input       | `xTestEx`      | `BOOL`   | FALSE        |
| Input       | `xSmokeAlarm`  | `BOOL`   | FALSE        |
| Output      | `sLine1`       | `STRING` |              |
| Output      | `sLine2`       | `STRING` |              |
| Output      | `sText`        | `STRING` |              |
| Output      | `xHB`          | `BOOL`   |              |
| Output      | `xAB`          | `BOOL`   |              |
| Output      | `xAlarm`       | `BOOL`   |              |
| Output      | `xAlarmOpen`   | `BOOL`   |              |
| Output      | `xAlarmClosed` | `BOOL`   |              |
| Output      | `xTestOK`      | `BOOL`   |              |
| Output      | `tLastOpen`    | `TIME`   |              |
| Output      | `tLastClosed`  | `TIME`   |              |
| Output      | `tTestOpen`    | `TIME`   |              |
| Output      | `tTestClosed`  | `TIME`   |              |
| Output      | `tRunTime`     | `TIME`   |              |
| Output      | `xAuto`        | `BOOL`   |              |
| Input Const | `udiOpen`      | `UDINT`  | 150          |
| Input Const | `udiClose`     | `UDINT`  | 25           |
| Input Const | `eManModeB`    | eMANBIN  | eMANBIN.Auto |
| Input Const | `xRunTest`     | `BOOL`   | FALSE        |
| Input Const | `sEditLine2`   | `STRING` | ‘’           |
| Input Const | `sEditLine1`   | `STRING` | ‘Raum’       |


---

# 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/firedampermotsmoke.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.
