# FireDamperMot

## `FireDamperMot` (FB)

FUNCTION\_BLOCK FireDamperMot

### 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="https://879424349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2Fgit-blob-a53af7fb53e6d831543b52dc4907e7be64fb9655%2FFireDamperMot_FB.png?alt=media" alt=""><figcaption></figcaption></figure>

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein steuert eine binäre motorische Brandschutzklappe(*xEn* = TRUE), überwacht die Laufzeiten während des Öffnungs- und Schliessvorgangs 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 / Schließung der Brandschutzklappe vor Handübersteuerung *xAB*

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

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

Die Freigabe Öffnung / Schließung der Brandschutzklappe nach Handübersteuerung *xHB* entspricht der Freigabe Öffnung / Schließung 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).<br>
2. Die Störmeldung für die Rückmeldung der Schließung xAlarmClosed ist aktiv (= TRUE).<br>
3. Die Brandschutzklappe ist nicht vollständig geöffnet (xOpen = FALSE).\
   (Hintergrund: Jede nicht vollständig geöffnete Brandschutzklappe stellt einen fehlerhaften Zustand dar).
4. Der Eingang \*xAlarmIn\* 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:\ <br>

1. Die Rückmeldung der vollständigen Öffnung ist nicht aktiv (xOpen = FALSE) (= Regelfall).
2. Die Rückmeldungen **xOpen** bzw. **xClosed** haben denselben Zustand.<br>

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