ASSEMBLE_LWORD_FROM_QUARTERS¶
🎧 Podcast¶
Einleitung¶
Der Funktionsblock ASSEMBLE_LWORD_FROM_QUARTERS kombiniert 32 Byte-Werte (QUARTER_BYTE_00 bis QUARTER_BYTE_31) zu einem 64-Bit LWORD-Wert. Dies ist besonders nützlich, wenn Daten in kleineren Einheiten vorliegen und zu einem größeren Datenwort zusammengesetzt werden müssen.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
REQ: Startet die Verarbeitung und kombiniert die 32 Byte-Eingänge zu einem LWORD.
Ereignis-Ausgänge¶
CNF: Signalisiert die erfolgreiche Zusammenführung der Bytes zu einem LWORD.
Daten-Eingänge¶
QUARTER_BYTE_00bisQUARTER_BYTE_31(32 Eingänge vom TypBYTE): Die einzelnen Byte-Werte, die zu einem LWORD kombiniert werden.
Daten-Ausgänge¶
- (Unbenannt, Typ
LWORD): Der kombinierte 64-Bit-Wert, der aus den 32 Byte-Eingängen zusammengesetzt wird.
Adapter¶
Keine Adapter vorhanden.
Funktionsweise¶
Der Funktionsblock nimmt die 32 Byte-Eingänge entgegen und kombiniert sie zu einem 64-Bit LWORD. Dabei wird jeder Byte-Wert an eine bestimmte Position im LWORD verschoben (mittels SHL-Operation) und dann mit dem aktuellen LWORD-Wert logisch verknüpft (OR-Operation). Die Verschiebung erfolgt gemäß vordefinierter Konstanten (quarterconst::SHIFT_QUARTER_XX), die die genaue Position jedes Bytes im LWORD festlegen.
Technische Besonderheiten¶
- Verwendet bitweise Operationen (
SHL,OR) für die effiziente Kombination der Bytes. - Die Reihenfolge der Kombination ist von
QUARTER_BYTE_31(höchstwertiges Byte) bisQUARTER_BYTE_00(niederwertigstes Byte). - Der Funktionsblock ist in ST (Structured Text) implementiert und nutzt eine Bibliothek (
quarterconst) für die Verschiebungskonstanten.
Zustandsübersicht¶
Der Funktionsblock hat keine internen Zustände. Die Verarbeitung erfolgt direkt bei Empfang des REQ-Ereignisses, und das Ergebnis wird sofort über CNF ausgegeben.
Anwendungsszenarien¶
- Zusammensetzen von Daten, die in kleineren Einheiten (Bytes) übertragen oder gespeichert wurden.
- Verarbeitung von Protokollen oder Datenformaten, die große Werte in segmentierter Form übermitteln.
- Einsatz in Systemen, die mit 64-Bit-Daten arbeiten, aber nur 8-Bit-Schnittstellen zur Verfügung haben.
⚖️ Vergleich mit ähnlichen Bausteinen¶
- Ähnliche Funktionsblöcke könnten z. B.
ASSEMBLE_DWORD_FROM_BYTESsein, die jedoch nur 32-Bit-Werte kombinieren. - Im Gegensatz zu manuellen Implementierungen bietet dieser Baustein eine standardisierte und optimierte Lösung für die Kombination von 32 Bytes zu einem LWORD.
Fazit¶
Der ASSEMBLE_LWORD_FROM_QUARTERS-Funktionsblock bietet eine effiziente und zuverlässige Methode, um 32 Byte-Werte zu einem 64-Bit LWORD zu kombinieren. Durch die Verwendung von bitweisen Operationen und vordefinierten Verschiebungskonstanten ist die Lösung performant und leicht in bestehende Systeme integrierbar. Ideal für Anwendungen, die mit großen Datenwerten in segmentierter Form arbeiten.