Typ | Funktion |
Beschreibung | Die überladene Funktion TO_USINT konvertiert den am Eingang anliegenden Wert in einen Ausgangswert vom Datentyp USINT (siehe Beschreibung des Eingangs für die unterstützten Datentypen). |
Parameter | Eingang
IN
Datentyp: | Die Funktion unterstützt folgende Datentypen:
- BOOL, BYTE, WORD, DWORD, LWORD
- Integer: SINT, INT, DINT, LINT, UINT, UDINT, ULINT
- Gleitkommazahlen: REAL, LREAL
- STRING, WSTRING
|
Ausgang
OUT
|
Konvertierungsregeln | ANY_BIT-Konvertierung
Die Konvertierung erfolgt durch bitweises Kopieren des Eingangswerts in den Ausgangswert, d.h. es erfolgt eine binäre Übertragung vom Eingangsdatentyp in den Ausgangsdatentyp.
Ist der Eingangsdatentyp größer als der USINT-Ausgang (> 8 Bit), werden nur die Bits 0 bis 7 des Eingangswertes in den Ausgangswert kopiert.
ANY_INT-Konvertierung
Für die Datentypkonvertierung gilt folgendes:
- Der Quelldatentyp wird auf den größten Datentyp derselben Kategorie von Datentypen erweitert. Beispiel: ein USINT-Wert wird in einen ULINT-Wert konvertiert oder ein SINT-Wert in einen LINT-Wert). Der Quellwert bleibt dabei erhalten.
- Das Ergebnis wird auf den größten Datentyp der Kategorie von generischen Datentypen konvertiert, zu der der Zieldatentyp gehört. Beispiel: ein LINT-Wert wird bei einer ANY_UNSIGNED-Konvertierung in einen ULINT-Wert konvertiert.
- Das Ergebnis wird zum Zieldatentyp konvertiert.Eingangsgröße <= Ausgangsgröße: Ist der Eingangsdatentyp kleiner oder gleich groß wie der Zieldatentyp ist, werden alle Bits in den Ausgangswert kopiert. Bei einem Eingangswert vom Typ ANY_UNSIGNED (Ganzzahl ohne Vorzeichen), werden die "nicht verwendeten" Bits im Zieldatentyp auf 0 gesetzt. Bei einem Eingangswert vom Typ ANY_SIGNED (Ganzzahl mit Vorzeichen) wird das höchstwertige Bit (MSB) nicht weiter als Vorzeichenbit interpretiert.Eingangsgröße > Ausgangsgröße: Wenn der Wert der Quellvariable nicht in den Zieldatentyp passt, werden nur die Bits des Eingangswerts in den Zieldatentyp kopiert, die in den Zieldatentyp passen. Beispiel: bei einer TO_UDINT-Konvertierung werden nur die Bits 0 bis 31 des Eingangswerts in die Zielvariable kopiert und bei einer TO_USINT-Konvertierung nur die Bits 0 bis 7.
Beispiel: out := TO_USINT(INT#-5);
- Der INT-Wert INT# -5 wird in den LINT-Wert LINT# -5 konvertiert.
- Der LINT-Wert LINT#-5 wird in den ULINT-Wert ULINT#18446744073709551611 konvertiert.
- Der ULINT-Wert ULINT#18446744073709551611 wird in den USINT-Wert USINT#251 konvertiert.
ANY_REAL-Konvertierung
Die Typkonvertierung erfolgt in zwei Schritten. Zuerst wird die Gleitkommazahl auf die nächst größere ganze Zahl gemäß den Standard-Rundungsregeln gerundet (Bsp.: 2,5 wird auf 3 aufgerundet und -2,5 auf -3). Im zweiten Schritt wird der gerundete Eingangswert in die niederwertigsten Bits des Ausgangswerts geschrieben.
Hinweis
Aufgrund des Signifikanzverlustes von REAL-Werten sollten nur REAL-Werte kleiner als LINT_MAX angelegt werden. |
ANY_STRING-Konvertierung
- Der String-Wert muss ein gültiges numerisches Literal des Ausgangsdatentyps sein. Andernfalls liefert die Funktion den Wert 0 zurück und der Laufzeitfehler 'Formatstringfehler' wird ausgegeben (siehe Hinweis unten).
- Zusätzliche Zeichen, Leerzeichen ausgenommen, vor und nach dem numerischen Literal sind nicht erlaubt. Die Funktion liefert den Wert 0 zurück und gibt den Laufzeitfehler 'Formatstringfehler' aus, wenn der String-Wert nicht erlaubte Zeichen enthält.
- Alle führenden und nachfolgenden Leerzeichen im Eingangsstring werden ignoriert.Als Leerzeichen betrachtete ASCII-Codes:
Zeichen | Wert |
Horizontal-Tabulator | 9 (09h) |
Zeilenvorschub | 10 (0Ah) |
Vertikal-Tabulator | 11 (0Bh) |
Seitenvorschub | 12 (0Ch) |
Zeilenumbruch | 13 (0Dh) |
Leerzeichen | 32 (20h) |
- Wenn der Eingangswert den Wertebereich des Ausgangsdatentyps überschreitet, liefert die Funktion den Überlaufwert und der Laufzeitfehler 'Formatstringfehler' wird ausgegeben (siehe Hinweis unten).
- Binäre, oktale, hexadezimale und dezimale Ganzzahlen sind erlaubt. Beispiel:INT#2#0101 (binäre Darstellung des Werts 5)INT#8#606 (oktale Darstellung des Werts 390)INT#10#100 (dezimale Darstellung des Werts 100)INT#16#00FA (hexadezimale Darstellung des Werts 250)
Hinweis
Steuerungstopp bei String-Fehler: Sie können einstellen, ob die Steuerung bei einem String-Fehler automatisch gestoppt werden soll. Dies gibt Ihnen im Fehlerfall die Möglichkeit, den Fehler in Ihrem Projekt zu lokalisieren. Um bei einem String-Fehler die Steuerung automatisch zu stoppen, aktivieren Sie das Symbol in der Symbolleiste des Cockpits. |
|
Fehlerverhalten | Fehlerverhalten
Die folgende Tabelle zeigt die Fehler, die bei der Ausführung der Funktion auftreten können, und den von der Funktion im entsprechenden Fehlerfall zurückgegebenen Wert.
Fehlerfall | Ausgabewert RFC/NFC/AXC F 3152 | Ausgabewert AXC F 2152 |
Überlaufwert | Überlaufwert | Überlaufwert |
REAL/LREAL-Wert >= LINT_MAX | 0 | 0
|
REAL/LREAL-Wert <= LINT_MIN | 0 | 0 |
REAL/LREAL-Wert > ULINT_MAX | 0 | LIMIT (Maximalwert) |
REAL/LREAL-Wert < -ULINT_MAX | 0 | 1 |
REAL/LREAL: NaN | 0 | 0 |
REAL/LREAL: Inf+ | 0 | LIMIT (Maximalwert) |
REAL/LREAL: Inf- | 0 | 1 |
Nicht-literaler String (Ganzzahl, Binärliteral, Oktett, Hex, Dez) | 0 | 0 |
String-Überlauf (Ganzzahl, Binäroktett, Hex, Dez) | Überlaufwert | Überlaufwert |
|
Beispiele | Beispiele in ST
out := TO_USINT(16#7F); (* liefert 127 *)
out := TO_USINT(16#FFFF); (* liefert 255 *)
out := TO_USINT(16#AFFFFFF0); (* liefert 240 *)
out := TO_USINT(INT#127); (* liefert 127 *)
out := TO_USINT(INT#32767); (* liefert 255 *)
out := TO_USINT(INT#-32768); (* liefert 0 *)
out := TO_USINT(SINT#-128); (* liefert 128 *)
out := TO_USINT(REAL#2.55E+002); (* liefert 255 *)
out := TO_USINT(REAL#2.56E+002); (* liefert 0 *)
out := TO_USINT('123'); (* liefert 123 *)
|
Zusätzliche Informationen | EN/ENO-Verhalten
Die POE wird nur dann ausgeführt, wenn TRUE am Eingang EN anliegt. Wenn EN = FALSE ist, wird die POE nicht ausgeführt und ENO auf FALSE gesetzt (FU/FB inaktiv).
Wenn bei der Ausführung der Funktion einer der unter "Fehlerverhalten" aufgeführten Fehler auftritt, wird ENO auf FALSE gesetzt.
|