# DamperAnalog

## `DamperAnalog` (FB)

FUNCTION\_BLOCK DamperAnalog

### Kurzbeschreibung

> Steuerung eines stetigen Klappenantriebs mit stetiger Positionsrückmeldung\
> \
> Typische Anwendung: Stetige Umluftklappe 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-4825398b20029ec01a3532b2d60ebf59cc18d334%2FDamperAnalog_FB.png?alt=media" alt=""><figcaption></figcaption></figure>

### Schnittstellen

#### Eingänge

| Name       | Datentyp          | Wertebereich                                  | Initialwert            | Funktion                                     |
| ---------- | ----------------- | --------------------------------------------- | ---------------------- | -------------------------------------------- |
| *rY*       | REAL              |                                               |                        | Sollwert - Position                          |
| *xForce*   | BOOL              |                                               | FALSE                  | Zwangsübersteuerung nach Handebene           |
| *xAlarmIn* | BOOL              |                                               | FALSE                  | Störmeldung des Antriebs                     |
| *rU*       | REAL              |                                               | 0.0                    | Rückführung der Klappenstellung              |
| *eAO*      | HVACTYPES.eManNum | HVACTYPES.eManNum.Auto, HVACTYPES.eManNum.Man | HVACTYPES.eManBin.Auto | Betriebsart der Handübersteuerung - Hardware |
| *rPoti*    | REAL              |                                               | 0.0                    | Handwert der Handübersteuerung - Hardware    |

#### Ausgänge

| Name        | Datentyp | Wertebereich | Initialwert | Funktion                                          |
| ----------- | -------- | ------------ | ----------- | ------------------------------------------------- |
| *rHA*       | REAL     |              |             | Stellsignal Klappenantrieb nach Handübersteuerung |
| *rAA*       | REAL     |              |             | Stellsignal Klappenantrieb vor Handübersteuerung  |
| *xAlarmPos* | BOOL     |              |             | Störmeldung aus Positionüberwachung               |
| *xAlarm*    | BOOL     |              |             | Sammelstörung                                     |
| *xAuto*     | BOOL     |              |             | Sammelmeldung Automatikbetrieb                    |

#### Sollwerte / Parameter

| Name               | Datentyp | Wertebereich              | Initialwert  | Funktion                                                         |
| ------------------ | -------- | ------------------------- | ------------ | ---------------------------------------------------------------- |
| **udiControlTime** | UDINT    | 10s … 600s                | 150s         | Zeitdauer der Positionsüberwachung                               |
| **rControlDiff**   | REAL     |                           | 7.0 %        | maximal zulässige Abweichung zwischen Soll- und Iststellung in % |
| **xControl**       | BOOL     |                           | TRUE         | Freigabe der Positionsüberwachung                                |
| **xForceOption**   | BOOL     |                           | FALSE        | Zustand vom Ausgang *rHA* bei Zwangsübersteuerung                |
| **rManValue**      | REAL     |                           | 0.0          | Handwert                                                         |
| **eManModeN**      | eMANNUM  | eMANNUM.Auto, eMANNUM.Man | eMANBIN.Auto | Betriebsart der Handübersteuerung                                |

### Funktionsbeschreibung

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

Das Stellsignal des Klappenantriebs vor Handübersteuerung *rAA* wird unverändert vom Eingang Sollwert - Position *rY* übernommen.

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

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

| *rAA* | **eManModeN** | *xForce* | **xForceOption** | *rHA*         | Hinweise                           |
| ----- | ------------- | -------- | ---------------- | ------------- | ---------------------------------- |
| X     | eMANNUM.Auto  | FALSE    | X                | *rAA*         | Handübersteuermodul in Automatik   |
| X     | eMANNUM.Man   | FALSE    | X                | **rManValue** | Handübersteuermodul im Handbetrieb |
| X     | X             | TRUE     | FALSE            | 0.0           | Zwangsübersteuerung 0.0            |
| X     | X             | TRUE     | TRUE             | 100.0         | Zwangsübersteuerung 100.0          |

Legende: X = beliebig

#### Positionsüberwachung

Die Positionsüberwachung kann freigegeben (**xControl** = TRUE) oder gesperrt werden (**xControl** = FALSE).\
Bei freigegebener Positionsüberwachung wird permanent der Betrag der Differenz zwischen dem Stellsignal nach Handübersteuerung *rHA* und der Positionsrückmeldung vom Klappenantrieb *rU* ermittelt und mit dem Grenzwert **rControlDiff** verglichen.\
Überschreitet diese Differenz permanent während einer Meldeverzögerung **udiControlTime** den Grenzwert, so wird ein Alarmsignal erzeugt, falls gleichzeitig die Rückmeldung - Automatikbetrieb *eAO* den Automatikbetrieb (*eAO* = HVACTYPES.eManNum.Auto) signalisiert.\
Dieses Alarmsignal wird zum Ausgang *xAlarmPos* übertragen (*xAlarmPos* = TRUE).\
Das Alarmsignal wird wieder deaktiviert (*xAlarmPos* = FALSE), sobald die Differenz den Grenzwert erstmalig wieder unterschreitet.

#### Sammelstörung *xAlarm*

Die Sammelstörung *xAlarm* wird aktiviert (= TRUE), falls *xAlarmPos* oder der Eingang *xAlarmIn* aktiv ist.\
In allen übrigen Fällen ist die Sammelstörung *xAlarm* nicht aktiviert (= FALSE).

#### Sammelmeldung Automatikbetrieb *xAuto*

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

#### Zwangsübersteuerung *xForce*

Die Zwangsübersteuerung wirkt direkt auf den Ausgang *rHA*. Mit dem Parameter **xForceOption** wird festgelegt, welchen Zustand der Ausgang *rHA* bei TRUE am Eingang *xForce* einnimmt.\
\
Bei **xForceOption** = FALSE\
Befindet sich der Eingang *xForce* auf TRUE, dann wird der Ausgang *rHA* auf 0 gesetzt.\
\
Bei **xForceOption** = TRUE\
Befindet sich der Eingang *xForce* auf TRUE, dann wird der Ausgang *rHA* auf 100 gesetzt.

### CODESYS

InOut:

| Scope       | Name             | Type    | Initial      |
| ----------- | ---------------- | ------- | ------------ |
| Input       | `rY`             | `REAL`  |              |
| Input       | `xForce`         | `BOOL`  | FALSE        |
| Input       | `xAlarmIn`       | `BOOL`  | FALSE        |
| Input       | `rU`             | `REAL`  | 0            |
| Input       | `eAO`            | eManNum | eManNum.Auto |
| Input       | `rPoti`          | `REAL`  | 0            |
| Output      | `rHA`            | `REAL`  |              |
| Output      | `rAA`            | `REAL`  |              |
| Output      | `xAlarmPos`      | `BOOL`  |              |
| Output      | `xAlarm`         | `BOOL`  |              |
| Output      | `xAuto`          | `BOOL`  |              |
| Input Const | `udiControlTime` | `UDINT` | 200          |
| Input Const | `rControlDiff`   | `REAL`  | 7            |
| Input Const | `xControl`       | `BOOL`  | TRUE         |
| Input Const | `xForceOption`   | `BOOL`  | FALSE        |
| Input Const | `rManValue`      | `REAL`  | 0            |
| Input Const | `eManModeN`      | eMANNUM | eMANNUM.Auto |
