BYTES_TO_ARR08B
Einleitung
Der Funktionsblock BYTES_TO_ARR08B dient der Konvertierung von acht einzelnen BYTE-Werten in ein Array vom Typ BYTE mit acht Elementen. Er ist Teil einer Sammlung von Hilfsfunktionen für Datenkonvertierungen und Array-Operationen.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Dieses Ereignis löst die Verarbeitung des Funktionsblocks aus. Bei seinem Eintreffen werden die Werte an den Daten-Eingängen gelesen und in das Ausgabe-Array geschrieben.
Ereignis-Ausgänge
CNF: Dieses Ereignis wird nach erfolgreicher Verarbeitung und Zuweisung der Werte zum Ausgabe-Array generiert. Es signalisiert die Verfügbarkeit des Ergebnisses.
Daten-Eingänge
IN_00 (
BYTE): Wert für das Array-Element an Index 0.IN_01 (
BYTE): Wert für das Array-Element an Index 1.IN_02 (
BYTE): Wert für das Array-Element an Index 2.IN_03 (
BYTE): Wert für das Array-Element an Index 3.IN_04 (
BYTE): Wert für das Array-Element an Index 4.IN_05 (
BYTE): Wert für das Array-Element an Index 5.IN_06 (
BYTE): Wert für das Array-Element an Index 6.IN_07 (
BYTE): Wert für das Array-Element an Index 7.
Daten-Ausgänge
OUT (
ARRAY[0..7] OF BYTE): Das resultierende Byte-Array. Die Indizes 0 bis 7 enthalten nacheinander die Werte vonIN_00bisIN_07.
Adapter
Dieser Funktionsblock verwendet keine Adapter.
Funktionsweise
Bei Auslösung durch das REQ-Ereignis kopiert der Block die Werte der acht BYTE-Eingänge direkt in die entsprechenden Positionen des Ausgabe-Arrays OUT. Die Zuordnung ist sequenziell: IN_00 → OUT[0], IN_01 → OUT[1], usw. bis IN_07 → OUT[7]. Unmittelbar nach dieser Zuweisung wird das CNF-Ereignis ausgelöst.
Die interne Implementierung erfolgt in Structured Text (ST) und besteht aus einer einfachen Reihe von Zuweisungen.
Technische Besonderheiten
Deterministische Laufzeit: Die Operation hat eine konstante und sehr kurze Ausführungszeit, da sie nur aus direkten Zuweisungen besteht.
Keine Pufferung: Es findet keine Zwischenspeicherung der Eingangswerte statt. Die Verarbeitung erfolgt ausschließlich bei Eintreffen eines
REQ-Ereignisses.Feste Größe: Der Block ist spezifisch für die Kombination von genau acht Bytes ausgelegt.
Zustandsübersicht
Der Funktionsblock ist zustandslos (stateless). Jeder REQ-Aufruf ist unabhängig von vorherigen Aufrufen und verarbeitet ausschließlich die aktuell anliegenden Eingangswerte.
Anwendungsszenarien
Datenaggregation: Zusammenfassen einzelner Byte-Werte (z.B. aus verschiedenen Quellen oder Sensoren) zu einem kompakten Array für die Weiterverarbeitung oder Übertragung.
Protokoll- und Schnittstellenanpassung: Vorbereitung von Datenstrukturen für Kommunikationsprotokolle oder Funktionsblöcke, die ein Byte-Array anstelle einzelner Bytes erwarten.
Datenumstrukturierung: Konvertierung zwischen verschiedenen Darstellungsformen von Daten innerhalb einer Steuerungsanwendung.
⚖️ Vergleich mit ähnlichen Bausteinen
CONCAT-Blöcke: Allgemeine Blöcke zum Verketten von Strings sind nicht direkt vergleichbar, da sie auf den DatentypSTRINGausgelegt sind.Manuelle Zuweisung in ST: Die Funktionalität könnte direkt in einem ST-Programm durch Zuweisungen realisiert werden. Der Funktionsblock kapselt diese Logik jedoch für eine bessere Wiederverwendbarkeit, Lesbarkeit und Wartbarkeit innerhalb von FBD-/LD-Diagrammen.
Individuelle Array-Bausteine: Im Gegensatz zu universellen Array-Bausteinen, die über Indexeingänge verfügen, ist
BYTES_TO_ARR08Bfür eine spezifische, feste Aufgabe optimiert und daher einfacher und schneller in der Anwendung.
🛠️ Zugehörige Übungen
Fazit
Der BYTES_TO_ARR08B ist ein spezialisierter und effizienter Hilfsbaustein für eine häufige Aufgabe in der Datenmanipulation. Er bietet eine klare, ereignisgesteuerte Schnittstelle und erspart dem Anwender die wiederholte manuelle Implementierung der Array-Zuordnung. Seine Stärke liegt in der Einfachheit und Eindeutigkeit für den konkreten Anwendungsfall der Kombination von acht Bytes.