Typ | Funktion |
Beschreibung | Die überladene Funktion TO_DWORD konvertiert den am Eingang anliegenden Wert in einen Ausgangswert des Datentyps DWORD (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, USINT, UINT, UDINT, ULINT
- Gleitkommazahlen: REAL
- STRING, WSTRING
|
Ausgang
OUT
|
Konvertierungsregeln |
- Die Konvertierung erfolgt durch bitweises Kopieren des Eingangswerts in den Ausgangswert, d.h. es erfolgt eine binäre Übertragung vom Eingangsdatentyp in den Ausgangsdatentyp.Die Bit-Reihenfolge/-Bedeutung bei REAL-Werten entspricht der IEC 60559. In der Norm ist das Basis-Gleitkomma-Zahlenformat definiert. Diese Bitreihenfolge wird unverändert in den Ausgang (DWORD) kopiert.
-
REAL-Eingangswerte: Die Konvertierung von REAL nach DWORD entspricht dem aktuellen Stand der IEC 61131-3 (3. Ausgabe). Der Gleitkommawert wird gemäß der Norm IEEE 754 gespeichert.
-
Eingangsgröße > Ausgangsgröße: Ist der Eingangsdatentyp größer als der DWORD-Ausgang, werden nur die Bits 0 bis 31 des Eingangswerts berücksichtigt.
-
Eingangsgröße < Ausgangsgröße: Ist der Eingangsdatentyp kleiner als der DWORD-Ausgang, werden die "ungenutzten" Bits im DWORD auf FALSE gesetzt (z.B. die Bits 8 bis 31 bei BYTE_TO_DWORD oder SINT_TO_DWORD).
- Wenn sowohl der Wertebereich als auch die Genauigkeit des Eingangsdatentyps auf den Wertebereich und die Genauigkeit des Ausgangsdatentyps übertragen (gemappt) werden können, so kann ohne Verwendung dieser Funktion eine implizite Typkonvertierung durchgeführt werden.
Bei der Funktion TO_DWORD trifft dies auf Eingangswerte vom Datentyp BOOL, BYTE und WORD zu.
ANY_STRING-Konvertierung
- Der String-Wert muss ein gültiges Bitliteral des Ausgangsdatentyps sein. Andernfalls liefert die Funktion den Wert 0x00 zurück und der Laufzeitfehler 'Formatstringfehler' wird ausgegeben.
- Zusätzliche Zeichen, Leerzeichen ausgenommen, vor und nach dem String-Wert 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 im Ergebnis 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).
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. Der Wert, den die Funktion im Fehlerfall zurückgibt, hängt vom Eingangswert ab (wenn z.B. der Eingangswert kein gültiges Bitliteral ist, gibt die Funktion den Wert 0x00 zurück).
Fehlerfall | Ausgabewert |
Überlauf: Eingangsbytegröße zu groß | Überlaufwert |
REAL: NaN
Hinweis: ENO bleibt TRUE im Fehlerfall. | Byte-Darstellung |
REAL: Inf+
Hinweis: ENO bleibt TRUE im Fehlerfall. | Byte-Darstellung |
REAL: Inf-
Hinweis: ENO bleibt TRUE im Fehlerfall. | Byte-Darstellung |
String kein gültiges Bitliteral oder ganzzahliges Literal (inkl. Leerzeichen) | 0x00 |
String: Überlauf Bitliteral | Überlaufwert |
|
Beispiele | Beispiele in ST
out := TO_DWORD(LINT#4294967295); (* liefert 16#FFFFFFFF *)
out := TO_DWORD(LINT#4294967296); (* liefert 16#00000000 *)
out := TO_DWORD(INT#-1); (* liefert 16#0000FFFF *)
out := TO_DWORD(SINT#-16); (* liefert 16#000000F0 *)
out := TO_DWORD(LWORD#16#00000000ABABCD00); (* liefert 16#ABABCD00 *)
out := TO_DWORD('LWORD#16#00000000A0A0CA0D'); (* liefert 16#A0A0CA0D *)
|
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.
Hinweis
ENO bleibt TRUE bei einem Eingangswert vom Datentyp REAL, der keine gültige Zahl (NaN), ein PositiveInfinity-Wert (Inf+) oder ein NegativeInfinity-Wert (Inf-) ist. |
|