GET_STRUCT_VALUE¶
Einleitung¶
Der Funktionsblock (FB) GET_STRUCT_VALUE ist ein Service-Schnittstellen-Baustein, der dafür entwickelt wurde, spezifische Werte aus einer gegebenen Datenstruktur dynamisch auszulesen. Er bietet eine flexible Möglichkeit, auf Strukturmember zuzugreifen, deren Namen oder Pfade zur Laufzeit bestimmt werden.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Name | Typ | Beschreibung | Daten mit |
|---|---|---|---|
REQ |
Event |
Fordert das Auslesen eines Wertes aus der Struktur an. | member, in_struct |
Ereignis-Ausgänge¶
| Name | Typ | Beschreibung | Daten mit |
|---|---|---|---|
CNF |
Event |
Bestätigt den Abschluss des REQ-Ereignisses. |
QO, output |
Daten-Eingänge¶
| Name | Typ | Beschreibung |
|---|---|---|
in_struct |
ANY |
Die Datenstruktur, aus der ein Wert ausgelesen werden soll. |
member |
STRING |
Der Name des Members der Struktur, der abgerufen werden soll. Innere Member werden über den Punkt-Operator (.) angesprochen. |
Daten-Ausgänge¶
| Name | Typ | Beschreibung |
|---|---|---|
QO |
BOOL |
TRUE, wenn keine Fehler aufgetreten sind, andernfalls FALSE. |
output |
ANY |
Der Wert des ausgewählten Members, wenn QO = TRUE. Andernfalls bleibt dieser Wert unverändert. |
Adapter¶
Keine Adapter vorhanden.
Funktionsweise¶
Der GET_STRUCT_VALUE Funktionsblock wird durch ein REQ-Ereignis aktiviert. Bei Aktivierung versucht der Baustein, den Wert eines in member angegebenen Strukturmembers aus der am Eingang in_struct anliegenden Datenstruktur zu extrahieren. Der Pfad zum Member kann dabei auch verschachtelte Member (z.B. "config.port") über den Punkt-Operator (.) spezifizieren. Nach dem Auslesen wird ein CNF-Ereignis ausgelöst, welches den Status (QO) und den extrahierten Wert (output) bereitstellt. Tritt ein Fehler auf (z.B. Member nicht gefunden oder ungültiger Pfad), wird QO auf FALSE gesetzt.
Technische Besonderheiten¶
- Dynamischer Member-Zugriff: Der Baustein ermöglicht den Zugriff auf Strukturmember über einen
STRING-Eingang, was eine hohe Flexibilität bei der Datenverarbeitung bietet. - Verschachtelte Strukturen: Über den Punkt-Operator (
.) in dermember-Zeichenkette können auch Member in verschachtelten Strukturen effizient adressiert werden. - Typunabhängigkeit: Die Ein- und Ausgänge
in_structundoutputsind vom TypANY, was bedeutet, dass der Baustein mit beliebigen Datenstrukturen und Member-Datentypen umgehen kann.
Zustandsübersicht¶
Der GET_STRUCT_VALUE ist ein nicht-zustandsbehafteter Service-Baustein, der eine einfache Anforderungs-Bestätigungs-Logik implementiert (REQ/CNF). Er verarbeitet jede Anforderung individuell und behält keine komplexen internen Zustände bei.
Anwendungsszenarien¶
- Dynamische Konfiguration: Auslesen von Konfigurationsparametern aus einer zentralen Struktur, wobei die benötigten Parameter zur Laufzeit ermittelt werden.
- Generische Datenverarbeitung: Entwicklung von generischen Algorithmen oder Logiken, die basierend auf externen Eingaben oder Regeln auf verschiedene Teile einer Datenstruktur zugreifen müssen.
- Protokollierung und Diagnose: Extrahieren spezifischer Statusinformationen oder Messwerte aus einer komplexen Systemzustandsstruktur für Überwachungs- oder Diagnosezwecke.
- Schnittstellen zu externen Systemen: Anpassung an Datenformate externer Systeme, bei denen die Feldnamen dynamisch übergeben werden.
⚖️ Vergleich mit ähnlichen Bausteinen¶
Es gibt in der Standardbibliothek von 4diac keine direkt vergleichbaren Funktionsblöcke, die einen dynamischen Zugriff auf Strukturmember über einen STRING-Pfad ermöglichen. Dieser Baustein füllt eine Nische für Anwendungsfälle, die eine flexible und zur Laufzeit konfigurierbare Strukturmanipulation erfordern, welche über den statischen Zugriff herkömmlicher FBs hinausgeht.
Metadaten¶
| Attribut | Wert |
| :--- | :--- |
| Copyright | (c) 2018 fortiss GmbH |
| Lizenz | EPL-2.0 |
| Version | 3.0 (2025-04-14, Patrick Aigner), 1.0 (2018-10-16, Jose Cabral) |
| 4diac-Paket | eclipse4diac::convert |
🛠️ Zugehörige Übungen¶
Fazit¶
Der GET_STRUCT_VALUE Funktionsblock ist ein wertvolles Werkzeug für Entwickler, die eine flexible und dynamische Methode zum Auslesen von Werten aus Datenstrukturen in 4diac benötigen. Seine Fähigkeit, auf Member über String-Pfade zuzugreifen, einschließlich verschachtelter Strukturen, macht ihn besonders nützlich in Szenarien, in denen die Struktur der benötigten Daten zur Kompilierzeit nicht vollständig bekannt oder variabel ist.