F_ULINT_TO_DINT¶
Einleitung¶
Der Funktionsblock F_ULINT_TO_DINT dient der Konvertierung eines ULINT-Wertes (64-Bit unsignierte Ganzzahl) in einen DINT-Wert (32-Bit signierte Ganzzahl). Diese Konvertierung ist besonders in Szenarien relevant, in denen Daten zwischen Systemen mit unterschiedlichen Datentypen ausgetauscht werden müssen.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
- REQ: Startet die Konvertierung. Der Eingang ist mit dem Daten-Eingang
INverbunden.
Ereignis-Ausgänge¶
- CNF: Signalisiert den Abschluss der Konvertierung. Der Ausgang ist mit dem Daten-Ausgang
OUTverbunden.
Daten-Eingänge¶
- IN (
ULINT): Der unsignierte 64-Bit Wert, der konvertiert werden soll.
Daten-Ausgänge¶
- OUT (
DINT): Das Ergebnis der Konvertierung als signierter 32-Bit Wert.
Adapter¶
Es sind keine Adapter vorhanden.
Funktionsweise¶
Bei Aktivierung des REQ-Ereignisses wird der Algorithmus ausgeführt, der den ULINT-Wert am Eingang IN in einen DINT-Wert konvertiert und das Ergebnis am Ausgang OUT ausgibt. Anschließend wird das CNF-Ereignis ausgelöst, um den Abschluss der Konvertierung zu signalisieren.
Technische Besonderheiten¶
- Die Konvertierung kann zu einem Datenverlust führen, wenn der ursprüngliche
ULINT-Wert außerhalb des darstellbaren Bereichs vonDINTliegt (d.h. größer als 2³¹-1 ist). - Der Funktionsblock ist Teil des
iec61131::conversion-Pakets.
Zustandsübersicht¶
Der Funktionsblock besitzt keine internen Zustände. Die Konvertierung erfolgt unmittelbar bei Eingang des REQ-Ereignisses.
Anwendungsszenarien¶
- Datenkonvertierung in Steuerungssystemen, die unterschiedliche Datentypen verwenden.
- Integration von Systemen, die unterschiedliche Bitbreiten für Ganzzahlen verwenden.
⚖️ Vergleich mit ähnlichen Bausteinen¶
- Im Vergleich zu generischen Konvertierungsblöcken ist
F_ULINT_TO_DINTspezialisiert auf die Konvertierung vonULINTzuDINT. - Andere Konvertierungsblöcke könnten andere Datentypen oder Konvertierungsrichtungen unterstützen.
Fazit¶
Der F_ULINT_TO_DINT-Funktionsblock bietet eine einfache und effiziente Möglichkeit, unsignierte 64-Bit Werte in signierte 32-Bit Werte zu konvertieren. Seine Verwendung ist in Szenarien mit unterschiedlichen Datentypanforderungen sinnvoll, jedoch sollte auf mögliche Datenverluste bei der Konvertierung geachtet werden.