# ControlP

## `ControlP` (FB)

FUNCTION\_BLOCK ControlP

### Kurzbeschreibung

> Proportional wirkender Regler (P-Regler)\
> Der Wirksinn (invertiert / direkt) ist ebenfalls einstellbar.\
> Typische Anwendung: Regelstrecken mit Stellgliedern, die speichernden Charakter haben.

### Darstellung

<figure><img src="https://879424349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2Fgit-blob-3a2ad95a726cb6fdfa1032a0d1853fa76e1a0015%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### Schnittstellen

#### Eingänge

| Name  | Datentyp | Wertebereich | Initialwert | Funktion             |
| ----- | -------- | ------------ | ----------- | -------------------- |
| *rX*  | REAL     |              |             | Analoger Istwert     |
| *rW*  | REAL     |              |             | Analoger Sollwert    |
| *xEn* | BOOL     |              |             | Freigabe des Reglers |

#### Ausgänge

| Name           | Datentyp | Wertebereich | Initialwert | Funktion                         |
| -------------- | -------- | ------------ | ----------- | -------------------------------- |
| *rY*           | REAL     |              | 0.0         | Ausgangssignal des Reglers       |
| *rDiff*        | REAL     |              |             | Regelabweichung                  |
| *xLimitActive* | BOOL     |              |             | Status - Grenzwertüberschreitung |

#### Sollwerte / Parameter

| Name           | Datentyp     | Wertebereich | Initialwert           | Funktion                                        |
| -------------- | ------------ | ------------ | --------------------- | ----------------------------------------------- |
| **rMax**       | REAL         |              | 100.0                 | Oberer absoluter Grenzwert des Ausgangssignals  |
| **rMin**       | REAL         |              | -100.0                | Unterer absoluter Grenzwert des Ausgangssignals |
| **rKp**        | REAL         | 0.0 …        | 2.0                   | Verstärkungsfaktor                              |
| **rOffset**    | REAL         |              | 0.0                   | Versatz                                         |
| **rYDisabled** | REAL         |              | 0.0                   | Ausschaltwert                                   |
| **eAction**    | eControlMode |              | eControlMode.Inverted | Wirksinnn des Reglers (Invertiert, Direkt)      |
| **eManModeN**  | eManNum      |              | eManNum.Auto          | Betriebsart für das Ausgangssignal des Reglers  |
| **rManValue**  | REAL         |              |                       | Ausgangssignal im Handbetrieb                   |

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein enthält einen proportional wirkenden Pegler (P-Regler).\
Das Ausgangssignal des Reglers *rY* wird bei freigegebenem Regler (*xEn* = TRUE) und in der Betriebsart Automatik des Reglers (**eManModeN** = eManNum.Auto) wie folgt berechnet:\
\
\
\&#xNAN;*rY* = **rKp** \* ((Istwert + Offset) - (Sollwert))\
\
\
Je nach Wirksinn des Reglers **eAction** werden die Ist- und Sollwerte wie folgt festgelegt:

| **eAction**             | Istwert | Sollwert | Formel                                            | Funktion              |
| ----------------------- | ------- | -------- | ------------------------------------------------- | --------------------- |
| eControlMode.Invertiert | *rW*    | *rX*     | *rY* = **rKp** \* ((*rW* + **rOffset**) - (*rX*)) | Wirksinn - Invertiert |
| eControlMode.Direct     | *rX*    | *rW*     | *rY* = **rKp** \* ((*rX* + **rOffset**) - (*rW*)) | Wirksinn - Direkt     |

#### Freigabeeingang *xEn*

Bei nicht aktivem Freigabeeingang (*xEn* = FALSE) wird der Ausschaltwert **rYDisabled** zum Ausgang *rY* übertragen (Voraussetzung: **eManModeN** = eManNum.Auto) und durch die absoluten Grenzwerte begrenzt.\
\
Bei aktivem Freigabeeingang (*xEn* = TRUE) wird das Ausgangssignal gemäß oben stehender Formel berechnet und zum Ausgang *rY* übertragen (Voraussetzung: **eManModeN** = eManNum.Auto) und durch die absoluten Grenzwerte begrenzt.

#### Regelabweichung *rDiff*

Die Regelabweichung wird gemäß nachfolgender Formel berechnet und zum Ausgang *rDiff* übertragen.\
\
\&#xNAN;*rDiff* = Istwert - Sollwert

#### Absolute Grenzwerte **rMin** und **rMax**

Das Ausgangssignal des Reglers *rY* wird durch die absoluten Grenzwerte **rMin** nach unten und **rMax** nach oben begrenzt.\
Der absolute Grenzwert **rMin** wird auf den aktuellen Wert von **rMax** - 0.1 festgelegt, falls er >= dem aktuellen Wert von **rMax** ist.\
Davon ausgenommen ist lediglich der Handbetrieb für das Ausgangssignal des Reglers (**eManModeN** = eManNum.Man).

#### Status - Grenzwertüberschreitung *xLimitActive*

Der Status der Grenzwertüberschreitung wird aktiviert (*xLimitActive* = TRUE), falls eine Grenzwertüberschreitung vorliegt.\
Der Status der Grenzwertüberschreitung wird nicht aktiviert (*xLimitActive* = FALSE), falls keine Grenzwertüberschreitung vorliegt.\
\
Eine Grenzwertüberschreitung liegt vor, falls das Ausgangssignal des Reglers *rY* den oberen Grenzwert **rMax** erreicht / überschreitet oder den unteren Grenzwert **rMin** erreicht / unterschreitet.

#### Betriebsart für das Ausgangssignal des Reglers **eManModeN**

Der Parameter **eManModeN** erlaubt die Umschaltung des Ausgangssignals *rY* vom Automatik- in den Handbetrieb und umgekehrt.\
Im Handbetrieb übernimmt das Ausgangssignal *rY* das Ausgangssignal im Handbetrieb **rManValue**.\
Der Sollwert / Parameter **rManValue** wird bei jedem Übergang in den Automatikbetrieb mit dem aktuellen Wert des Ausgangssignal *rY* überschrieben.

| **eManModeN** | *rY*                                | Funktion                          |
| ------------- | ----------------------------------- | --------------------------------- |
| eManNum.Auto  | Signal gemäß Formel / Ausschaltwert | Automatikbetrieb - Ausgangssignal |
| eManNum.Man   | **rManValue**                       | Handbetrieb - Ausgangssignal      |

### CODESYS

InOut:

| Scope       | Name          | Type         | Initial               |
| ----------- | ------------- | ------------ | --------------------- |
| Input       | `rX`          | `REAL`       |                       |
| Input       | `rW`          | `REAL`       |                       |
| Input       | `xEn`         | `BOOL`       |                       |
| Input Const | `rYMax`       | `REAL`       | 100                   |
| Input Const | `rYMin`       | `REAL`       | -100                  |
| Input Const | `rKp`         | `REAL`       | 2                     |
| Input Const | `rOffset`     | `REAL`       | 0                     |
| Input Const | `rYDisabled`  | `REAL`       | 0                     |
| Input Const | `eAction`     | eControlMode | eControlMode.Inverted |
| Input Const | `eManModeN`   | eManNum      | eManNum.Auto          |
| Input Const | `rManValue`   | `REAL`       |                       |
| Output      | `rY`          | `REAL`       | 0                     |
| Output      | `rDiff`       | `REAL`       |                       |
| Output      | `xLimitAktiv` | `BOOL`       |                       |
