SET_ANY¶
Einleitung¶
Der Funktionsblock SET_ANY dient dazu, einen beliebigen Wert vom Eingang IN auf eine als InOut-Parameter deklarierte Variable OUT zu schreiben. Der Vorgang wird durch ein Ereignis am Eingang REQ ausgelöst und nach erfolgreicher Zuweisung mit dem Ausgangsereignis CNF quittiert. Der Baustein ist generisch und kann mit beliebigen Datentypen arbeiten, solange die Typen von IN und OUT kompatibel sind.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Datentyp | Kommentar |
|---|---|---|
| REQ | Event | Normaler Ausführungsanforderung – löst die Zuweisung aus. Verbunden mit den Variablen IN und OUT. |
Ereignis-Ausgänge¶
| Ereignis | Datentyp | Kommentar |
|---|---|---|
| CNF | Event | Bestätigung der erfolgreichen Ausführung. Verbunden mit der Variablen OUT. |
Daten-Eingänge¶
| Name | Datentyp | Kommentar |
|---|---|---|
| IN | ANY | Wert, der auf die Zielvariable geschrieben wird. |
| OUT | ANY | InOut-Parameter – wird gleichzeitig als Eingang und Ausgang verwendet (siehe Daten-Ausgänge). |
Hinweis:
OUTist als InOut deklariert. Es fungiert als Daten-Eingang (die ursprüngliche Variable wird gelesen, falls nötig) und als Daten-Ausgang (überschrieben mit dem Wert vonIN).
Daten-Ausgänge¶
| Name | Datentyp | Kommentar |
|---|---|---|
| OUT | ANY | InOut-Parameter – enthält nach der Ausführung den Wert des Eingangs IN. Die Variable kann auch außerhalb des Bausteins verwendet werden. |
Adapter¶
Keine.
Funktionsweise¶
Der Baustein besitzt einen einzigen verarbeitenden Zustand REQ. Tritt am Ereigniseingang REQ ein Ereignis auf, wird der Algorithmus REQ ausgeführt:
OUT := IN;
Nach der Zuweisung wird das Ausgangsereignis CNF gesendet. Die Ausführung ist atomar – es findet keine weitere Zustandslogik statt.
Technische Besonderheiten¶
- Generischer Datentyp
ANY: Der Baustein kann mit beliebigen IEC 61499-Datentypen (z. B. BOOL, INT, REAL, STRING, Strukturen) verwendet werden. Die Typkompatibilität zwischenINundOUTmuss vom Anwender sichergestellt werden. - InOut-Mechanismus:
OUTist als InOut-Parameter deklariert. Das bedeutet, dass die Variable sowohl als Eingabe (z. B. für Lesevorgänge) als auch als Ausgabe dient. In 4diac-IDE wird InOut typischerweise als Referenz auf eine externe Variable realisiert. - Einfache Zustandsmaschine: Der FB enthält nur einen Zustand, wodurch er sehr leichtgewichtig und ressourcenschonend ist.
Zustandsübersicht¶
| Zustand | Beschreibung |
|---|---|
| REQ | Wartet auf ein REQ-Ereignis. Bei Eintritt wird der Algorithmus ausgeführt, anschließend wird CNF gesendet und der Zustand bleibt aktiv. |
Es gibt keine weiteren Zustände, keine Verzweigungen oder Zeitüberwachungen.
Anwendungsspezifische Szenarien¶
- Initialisierung von Variablen: Einmaliges Setzen eines Anfangswertes auf eine global oder instanzspezifisch verwendete Variable.
- Parameterüberschreibung: Zur Laufzeit wird ein bestehender Wert durch einen neuen überschrieben, z. B. zum Ändern von Sollwerten oder Konfigurationsparametern.
- Punkt-zu-Punkt-Datentransfer: Wenn ein Wert von einer Quelle auf ein direkt verbundenes Ziel kopiert werden soll, ohne dass eine separate Logik erforderlich ist.
Vergleich mit ähnlichen Bausteinen¶
| Baustein | Unterschied |
|---|---|
| SET | Ist auf einen spezifischen Datentyp festgelegt (z. B. SET_BOOL, SET_INT). SET_ANY ist generisch. |
| MOVE | Kopiert ebenfalls einen Wert von einem Eingang auf einen Ausgang, verwendet jedoch normale Ausgänge. SET_ANY nutzt einen InOut-Parameter, der eine persistente Variable referenziert. |
| SELECT | Wählt zwischen zwei Eingangswerten aus und benötigt ein Steuersignal. SET_ANY arbeitet ohne Bedingung. |
Fazit¶
SET_ANY ist ein einfacher, aber flexibler Funktionsblock zum gezielten Überschreiben von Variablen in IEC 61499. Die Verwendung des generischen Typs ANY und des InOut-Parameters macht ihn universell einsetzbar, insbesondere in Szenarien, in denen zur Laufzeit Werte in bestehende Speicherstellen geschrieben werden müssen. Dank seiner minimalen Zustandslogik eignet er sich für zeitkritische Anwendungen oder als Grundbaustein für komplexere Datenflussstrukturen.