SET_AT_INDEX

image

Einleitung

Der Funktionsblock SET_AT_INDEX dient dazu, den Wert eines Elements in einem Array an einem bestimmten Index zu setzen. Dabei muss sichergestellt werden, dass die Datentypen des zu setzenden Wertes dem Datentyp des Arrays entsprechen. Das resultierende Ausgabe-Array wird ebenfalls den Datentyp des Eingabe-Arrays aufweisen. Dieser Baustein ist nützlich für die dynamische Manipulation von Array-Daten innerhalb eines Steuerungsprogramms.

SET_AT_INDEX

Schnittstellenstruktur

Ereignis-Eingänge

  • REQ (Event): Ein Anforderungseingang, der die Ausführung des Funktionsblocks initiiert. Mit diesem Ereignis werden die Daten-Eingänge IN_ARRAY, INDEX und VALUE verarbeitet.

Ereignis-Ausgänge

  • CNF (Event): Ein Bestätigungsausgang, der nach erfolgreicher Ausführung des Dienstes ausgelöst wird. Mit diesem Ereignis werden die Daten-Ausgänge QO und OUT_ARRAY aktualisiert.

Daten-Eingänge

  • IN_ARRAY (ANY): Das Eingabearray, dessen Wert an einem bestimmten Index geändert werden soll. Der Datentyp ANY ermöglicht die Verwendung mit verschiedenen Array-Typen.

  • INDEX (UINT): Der nullbasierte Index des Elements im Array, dessen Wert gesetzt werden soll.

  • VALUE (ANY): Der Wert, der an der angegebenen Position im Array gesetzt werden soll. Der Datentyp muss mit dem Datentyp des IN_ARRAY übereinstimmen.

Daten-Ausgänge

  • QO (BOOL): Ein Event-Ausgabe-Qualifizierer, der den Erfolg der Operation anzeigt. TRUE bei Erfolg, FALSE bei einem Fehler (z.B. ungültiger Index).

  • OUT_ARRAY (ANY): Das resultierende Array nach dem Setzen des Wertes am angegebenen Index.

Adapter

Nicht vorhanden.

Funktionsweise

Der SET_AT_INDEX Funktionsblock wartet auf ein REQ-Ereignis. Sobald dieses Ereignis eintrifft, überprüft der Baustein die übergebenen IN_ARRAY, INDEX und VALUE. Er versucht, den VALUE am INDEX des IN_ARRAY zu speichern. Bei erfolgreicher Operation wird ein neues Array erzeugt und an OUT_ARRAY ausgegeben, wobei QO auf TRUE gesetzt wird. Ist der angegebene INDEX außerhalb des gültigen Bereichs des IN_ARRAY oder stimmen die Datentypen von VALUE und den Array-Elementen nicht überein, wird die Operation möglicherweise nicht durchgeführt, und QO könnte FALSE anzeigen.

Technische Besonderheiten

  • Datentyp-Flexibilität: Durch die Verwendung von ANY für die Array- und Wert-Parameter ist der Baustein flexibel in Bezug auf die zu verarbeitenden Datentypen. Es ist jedoch entscheidend, dass der Datentyp von VALUE exakt mit dem Elementdatentyp des IN_ARRAY übereinstimmt, um Laufzeitfehler zu vermeiden.

  • Index-Typ: Der INDEX ist vom Typ UINT (Unsigned Integer), was bedeutet, dass nur positive Indizes zulässig sind.

  • Nullbasierte Indizierung: Der Index beginnt bei 0 für das erste Element des Arrays.

  • Fehlerbehandlung: Die QO-Ausgabe dient als einfacher Indikator für den Erfolg der Operation. Eine erweiterte Fehlerbehandlung (z.B. für Index-Out-Of-Bounds) muss möglicherweise auf Anwendungsebene implementiert oder durch zusätzliche Prüfungen ergänzt werden.

Zustandsübersicht

Der SET_AT_INDEX Baustein ist im Wesentlichen ein ereignisgesteuerter Baustein ohne komplexen internen Zustand. Er wartet auf ein REQ-Ereignis, führt die Aktion aus und gibt ein CNF-Ereignis aus. Seine Funktion ist direkt und reaktiv.

Anwendungsszenarien

  • Dynamische Konfiguration: Ändern von Konfigurationsparametern, die in Arrays gespeichert sind, zur Laufzeit.

  • Datenverarbeitung: Aktualisieren von Sensor- oder Aktuatordaten, die in Arrays gesammelt werden.

  • Algorithmische Anpassung: Modifizieren von Look-Up-Tabellen oder Reglerparametern in Echtzeit.

  • Benutzerinteraktion: Setzen von Array-Werten basierend auf Benutzereingaben.

⚖️ Vergleich mit ähnlichen Bausteinen

Dieser Baustein ist komplementär zum GET_AT_INDEX-Baustein, der Werte aus einem Array an einem bestimmten Index auslesen würde. Er ist eine grundlegende Operation für die Array-Manipulation und bildet die Basis für komplexere Datenstruktur-Algorithmen. Im Gegensatz zu Bausteinen, die ganze Arrays kopieren oder verschieben, konzentriert sich SET_AT_INDEX auf die präzise Manipulation eines einzelnen Elements.

Metadaten

| Attribut | Wert |

| :— | :— |

| Copyright | (c) 2014 Profactor GmbH |

| Lizenz | EPL-2.0 |

| Version | 3.0 (2025-04-14, Patrick Aigner), 1.0 (2014-08-05, Matthias Plasch) |

| 4diac-Paket | eclipse4diac::convert |

Fazit

Der SET_AT_INDEX Funktionsblock ist ein grundlegendes, aber mächtiges Werkzeug zur Manipulation von Array-Daten in 4diac-Applikationen. Seine Flexibilität durch die ANY-Datentypen und die klare ereignisgesteuerte Schnittstelle machen ihn zu einem wertvollen Baustein für viele Anwendungen, die dynamische Datenstrukturen erfordern. Die korrekte Handhabung von Datentypen und Indizes ist entscheidend für seine fehlerfreie Nutzung.