GET_STRUCT_VALUE

image

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.

GET_STRUCT_VALUE

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 der member-Zeichenkette können auch Member in verschachtelten Strukturen effizient adressiert werden.

  • Typunabhängigkeit: Die Ein- und Ausgänge in_struct und output sind vom Typ ANY, 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.