F_ULINT_TO_INT
Einleitung
Der Funktionsblock F_ULINT_TO_INT dient der Konvertierung eines 64-Bit vorzeichenlosen Integer-Werts (ULINT) in einen 16-Bit vorzeichenbehafteten Integer-Wert (INT). Diese Konvertierung ist insbesondere dann notwendig, wenn Daten zwischen Systemen mit unterschiedlichen Datentypen ausgetauscht werden müssen.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Dieser Eingang löst die Konvertierung aus. Beim Eintreffen dieses Ereignisses wird der Wert am Daten-Eingang
INgelesen und konvertiert.
Ereignis-Ausgänge
CNF: Dieses Ereignis signalisiert den Abschluss der Konvertierung. Es wird zusammen mit dem konvertierten Wert am Daten-Ausgang
OUTausgegeben.
Daten-Eingänge
IN (ULINT): Hier wird der 64-Bit vorzeichenlose Integer-Wert bereitgestellt, der konvertiert werden soll.
Daten-Ausgänge
OUT (INT): Dieser Ausgang liefert den konvertierten 16-Bit vorzeichenbehafteten Integer-Wert.
Adapter
Dieser Funktionsblock verfügt über keine Adapter.
Funktionsweise
Der Funktionsblock führt die Konvertierung von ULINT zu INT durch, sobald das Ereignis REQ eintrifft. Die Konvertierung erfolgt mittels der Funktion ULINT_TO_INT(IN), die den Wert von IN in den Zieltyp INT umwandelt. Nach erfolgreicher Konvertierung wird das Ereignis CNF ausgelöst, und der konvertierte Wert wird an OUT ausgegeben.
Technische Besonderheiten
Datentyp-Konvertierung: Die Konvertierung von ULINT (64-Bit) zu INT (16-Bit) kann zu Datenverlust führen, wenn der ursprüngliche Wert außerhalb des darstellbaren Bereichs von INT liegt (d.h., größer als 32767 oder kleiner als -32768 ist).
Einfache Implementierung: Der Funktionsblock ist als SimpleFB implementiert und verwendet einen einfachen ST-Algorithmus für die Konvertierung.
Zustandsübersicht
Idle-Zustand: Der Funktionsblock wartet auf das Ereignis
REQ.Konvertierungszustand: Bei Eintreffen von
REQwird die Konvertierung durchgeführt.Bestätigungszustand: Nach der Konvertierung wird
CNFausgelöst, und der Funktionsblock kehrt in den Idle-Zustand zurück.
Anwendungsszenarien
Datenkompatibilität: Wird verwendet, wenn Systeme mit unterschiedlichen Datentypen kommunizieren müssen.
Datenreduktion: Kann eingesetzt werden, um Speicherplatz zu sparen, wenn die höhere Präzision von ULINT nicht benötigt wird.
⚖️ Vergleich mit ähnlichen Bausteinen
F_ULINT_TO_DINT: Konvertiert ULINT zu DINT (32-Bit), bietet einen größeren Wertebereich als INT.
F_ULINT_TO_LINT: Konvertiert ULINT zu LINT (64-Bit), behält die volle Präzision bei.
Fazit
Der Funktionsblock F_ULINT_TO_INT ist ein einfaches, aber effektives Werkzeug zur Konvertierung von 64-Bit vorzeichenlosen Integer-Werten in 16-Bit vorzeichenbehaftete Integer-Werte. Er ist besonders nützlich in Szenarien, wo Speichereffizienz oder Kompatibilität mit älteren Systemen erforderlich ist. Beachten Sie jedoch die möglichen Datenverluste bei der Konvertierung großer Werte.