# F_INSERT ```{index} single: F_INSERT ``` F_INSERT * * * * * * * * * * ## Einleitung Der Funktionsblock `F_INSERT` dient zur Manipulation von Zeichenketten. Er fügt eine Zeichenkette (`IN2`) in eine andere Zeichenkette (`IN1`) an einer bestimmten Position (`P`) ein. Der Block ist Teil der Standard-Charakter- und String-Funktionen gemäß IEC 61131-3. ![F_INSERT](F_INSERT.svg) ## Schnittstellenstruktur ### **Ereignis-Eingänge** - `REQ`: Dienst-Anfrage. Löst die Ausführung des Funktionsblocks aus. Wird mit den Daten-Eingängen `IN1`, `IN2` und `P` verknüpft. ### **Ereignis-Ausgänge** - `CNF`: Bestätigung der angeforderten Dienstleistung. Wird mit dem Daten-Ausgang `OUT` verknüpft. ### **Daten-Eingänge** - `IN1` (`ANY_STRING`): Die erste Eingabezeichenkette, in die `IN2` eingefügt wird. - `IN2` (`ANY_STRING`): Die zweite Eingabezeichenkette, die in `IN1` eingefügt wird. - `P` (`ANY_INT`): Die Position in `IN1`, an der `IN2` eingefügt werden soll. ### **Daten-Ausgänge** - `OUT` (`ANY_STRING`): Die resultierende Zeichenkette nach dem Einfügevorgang. ### **Adapter** Keine Adapter vorhanden. ## Funktionsweise Bei Auslösung des Ereignisses `REQ` wird die Zeichenkette `IN2` in die Zeichenkette `IN1` an der durch `P` definierten Position eingefügt. Das Ergebnis dieser Operation wird über den Daten-Ausgang `OUT` ausgegeben und das Ereignis `CNF` wird ausgelöst, um die erfolgreiche Bearbeitung zu signalisieren. ## Technische Besonderheiten - Unterstützt alle String-Typen (`ANY_STRING`), was eine flexible Verwendung ermöglicht. - Die Position `P` kann jeder ganzzahlige Wert sein (`ANY_INT`), muss jedoch innerhalb der Länge von `IN1` liegen, um ein definiertes Verhalten zu gewährleisten. ## Zustandsübersicht Der Funktionsblock hat keine internen Zustände. Die Operation wird bei jedem `REQ`-Ereignis neu ausgeführt. ## Anwendungsszenarien - Textverarbeitung in Automatisierungsanwendungen. - Dynamische Erstellung von Log-Nachrichten oder Benachrichtigungen. - Manipulation von Datenstrings vor der Weiterverarbeitung oder Ausgabe. ## ⚖️ Vergleich mit ähnlichen Bausteinen - Ähnlich zu `F_CONCAT`, das jedoch zwei Strings nur aneinanderhängt, ohne eine spezifische Einfügeposition zu berücksichtigen. - Im Gegensatz zu `F_MID`, das Teile eines Strings extrahiert, fügt `F_INSERT` einen String in einen anderen ein. ## Fazit `F_INSERT` ist ein nützlicher Funktionsblock für Anwendungen, die eine präzise Manipulation von Zeichenketten erfordern. Seine einfache, aber effektive Funktionalität macht ihn zu einem wertvollen Werkzeug in der Automatisierungstechnik.