F_LINT_TO_INT¶
Einleitung¶
Der Funktionsblock F_LINT_TO_INT dient zur Konvertierung eines 64-Bit Integer-Werts (LINT) in einen 16-Bit Integer-Wert (INT). Diese Konvertierung ist nützlich, wenn Daten zwischen Systemen mit unterschiedlicher Wortbreite ausgetauscht oder verarbeitet werden müssen.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
- REQ: Startet die Ausführung der Konvertierung. Der Eingang ist mit dem Daten-Eingang
INverknüpft.
Ereignis-Ausgänge¶
- CNF: Signalisiert die erfolgreiche Beendigung der Konvertierung. Der Ausgang ist mit dem Daten-Ausgang
OUTverknüpft.
Daten-Eingänge¶
- IN (LINT): Der 64-Bit Integer-Wert, der konvertiert werden soll.
Daten-Ausgänge¶
- OUT (INT): Der resultierende 16-Bit Integer-Wert nach der Konvertierung.
Adapter¶
- Keine Adapter vorhanden.
Funktionsweise¶
Der Funktionsblock führt die Konvertierung von einem LINT- zu einem INT-Wert durch, sobald das Ereignis REQ empfangen wird. Die Konvertierung erfolgt durch die Funktion LINT_TO_INT(IN), die den Wert von IN in einen INT-Wert umwandelt und das Ergebnis an OUT ausgibt. Anschließend wird das Ereignis CNF ausgelöst, um die erfolgreiche Konvertierung zu signalisieren.
Technische Besonderheiten¶
- Die Konvertierung kann zu einem Datenverlust führen, wenn der ursprüngliche LINT-Wert außerhalb des darstellbaren Bereichs eines INT-Werts (-32.768 bis 32.767) liegt.
- Der Funktionsblock ist einfach aufgebaut und enthält nur einen Algorithmus für die Konvertierung.
Zustandsübersicht¶
- Idle-Zustand: Wartet auf das Ereignis
REQ. - Konvertierungszustand: Führt die Konvertierung durch und gibt das Ergebnis aus.
- Bestätigungszustand: Sendet das Ereignis
CNFund kehrt in den Idle-Zustand zurück.
Anwendungsszenarien¶
- Datenkommunikation zwischen Systemen mit unterschiedlicher Wortbreite.
- Reduzierung der Speicherbelegung, wenn die volle 64-Bit-Präzision nicht benötigt wird.
- Integration in Steuerungssysteme, die nur 16-Bit-Integer verarbeiten können.
⚖️ Vergleich mit ähnlichen Bausteinen¶
- F_LINT_TO_DINT: Konvertiert LINT zu DINT (32-Bit Integer).
- F_LINT_TO_UDINT: Konvertiert LINT zu UDINT (32-Bit vorzeichenloser Integer).
- F_LINT_TO_ULINT: Konvertiert LINT zu ULINT (64-Bit vorzeichenloser Integer).
Fazit¶
Der F_LINT_TO_INT Funktionsblock bietet eine einfache und effiziente Möglichkeit, 64-Bit Integer-Werte in 16-Bit Integer-Werte umzuwandeln. Er ist besonders nützlich in Szenarien, wo die Reduzierung der Datenbreite notwendig ist, jedoch sollte die Möglichkeit eines Datenverlusts bei der Konvertierung beachtet werden.