# ButtonToggle

## `ButtonToggle` (FB)

FUNCTION\_BLOCK ButtonToggle

### Kurzbeschreibung

> Schaltelement mit Taste und Zentralbedienung.\
> Typischer Einsatz: Lichttaster und Lichtausgang.

### Darstellung

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

### Schnittstellen

#### Eingänge

| Name          | Datentyp | Wertebereich | Initialwert | Funktion              |
| ------------- | -------- | ------------ | ----------- | --------------------- |
| *xButton*     | BOOL     |              |             | Eingang - Bedientaste |
| *xCentralOn*  | BOOL     |              |             | Zentrale Einschaltung |
| *xCentralOff* | BOOL     |              |             | Zentrale Ausschaltung |

#### Ausgänge

| Name   | Datentyp | Wertebereich | Initialwert | Funktion           |
| ------ | -------- | ------------ | ----------- | ------------------ |
| *xOut* | BOOL     |              |             | Freigabe - Ausgang |

#### Sollwerte / Parameter

| Name            | Datentyp | Wertebereich | Initialwert | Funktion               |
| --------------- | -------- | ------------ | ----------- | ---------------------- |
| **xButtonVisu** | BOOL     |              | FALSE       | Funktion wie *xButton* |

### Funktionsbeschreibung

#### Allgemeines

Der Funktionsbaustein dient grundsätzlich zur unmittelbaren Steuerung des Freigabe - Ausgangs *xOut* in Abhängigkeit von den ansteigenden Flanken an den Eingängen *xButton* (= Bedientaste), *xCentralOn* (= Zentrale Einschaltung), *xCentralOff* (= Zentrale Ausschaltung) und dem Sollwert / Parameter **xButtonVisu**.\
Jede ansteigende Flanke am Eingang - Bedientaste *xButton* und / oder am Sollwert / Parameter **xButtonVisu** schaltet den Ausgang *xOut* in den entgegengesetzten Zustand, sofern keine Zentralbedienung stattfindet.\
Werden keine ansteigenden Flanken erkannt, so verändert sich der Zustand des Freigabe - Ausgangs *xOut* nicht.

#### Funktionstabelle

| *xButton* bzw. **xButtonVisu** | *xCentralOn*     | *xCentralOff*    | *xOut*                     | Hinweis                                   |
| ------------------------------ | ---------------- | ---------------- | -------------------------- | ----------------------------------------- |
| FALSE, TRUE, H/L               | FALSE, TRUE, H/L | FALSE, TRUE, H/L | unverändert                | Eingänge nicht aktiv                      |
| L/H                            | FALSE, TRUE, H/L | FALSE, TRUE, H/L | FALSE > TRUE, TRUE > FALSE | Zustandswechsel am Ausgang                |
| FALSE, TRUE, H/L               | L/H              | FALSE, TRUE, H/L | TRUE                       | Zentrale Einschaltung                     |
| FALSE, TRUE, H/L               | FALSE, TRUE, H/L | L/H              | FALSE                      | Zentrale Ausschaltung                     |
| L/H                            | L/H              | FALSE, TRUE, H/L | TRUE                       | Zentrale Einschaltung (höhere Priorität)  |
| L/H                            | L/H              | L/H              | FALSE                      | Zentrale Ausschaltung (höchste Priorität) |

Legende: L/H … ansteigende Flanke, H/L … abfallende Flanke

### CODESYS

InOut:

| Scope       | Name          | Type   | Initial |
| ----------- | ------------- | ------ | ------- |
| Input       | `xButton`     | `BOOL` |         |
| Input       | `xCentralOn`  | `BOOL` |         |
| Input       | `xCentralOff` | `BOOL` |         |
| Input Const | `xButtonVisu` | `BOOL` | FALSE   |
| Output      | `xOut`        | `BOOL` |         |
