Beschreibung
Mit der Anweisung konvertieren Sie die am Eingang IN angegebene ASCII-Zeichenkette in eine Hexadezimalzahl. Das Ergebnis der Konvertierung wird an der vom Parameter OUT angegebenen Adresse abgelegt.
-
Die Anzahl der zu konvertierenden ASCII-Zeichen legen Sie durch den Parameter N fest.
-
Maximal können 65 535 gültige ASCII-Zeichen konvertiert werden.
-
Nur die Ziffern 0 bis 9 und die Großbuchstaben A bis F können interpretiert werden. Alle anderen Zeichen werden in Nullen umgewandelt.
Da ein ASCII-Zeichen 8 Bits benötigt und eine Hexadezimalziffer nur 4 Bits, ist das Ausgabewort nur halb so lang wie das Eingabewort. Die ASCII-Zeichen werden nach dem Umwandeln in dem Ausgang in der gleichen Reihenfolge angeordnet, in der sie eingelesen wurden. Wenn es sich um eine ungerade Anzahl von ASCII-Zeichen handelt, wird die Hexadezimalzahl in dem Halbbyte rechts von der zuletzt umgewandelten Hexadezimalzahl mit Nullen aufgefüllt.
Wenn ein ungültiges ASCII-Zeichen erkannt wird, dann wird es als "0" umgewandelt und eine Fehlermeldung am Parameter RET_VAL ausgegeben.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "ATH":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
IN |
Input |
POINTER |
D, L |
Zeiger auf die Anfangsadresse einer ASCII-Zeichenkette |
|
N |
Input |
WORD |
E, A, M, D, L, P oder Konstante |
Anzahl der zu konvertierenden ASCII-Zeichen |
|
RET_VAL |
Output |
WORD |
E, A, M, D, L, P |
Status der Anweisung |
|
OUT |
Output |
POINTER |
E, A, M, D, L |
Zeiger auf die Adresse des Ergebnisses |
|
* Pointer im Doppelwortformat bei der bereichsübergreifenden, registerindirekten Adressierung |
||||
Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".
Parameter RET_VAL
|
Fehlercode (W#16#....) |
Beschreibung |
|---|---|
|
0000 |
Kein Fehler |
|
0007 |
Ungültiges Zeichen |
Beispiel
Wenn der Signalzustand am Eingang E 0.0 = 1 (aktiviert) ist, dann wird die Anweisung ausgeführt. Der Eingangsparameter N = 5 gibt an, dass fünf ASCII-Zeichen umgewandelt werden sollen. Die ASCII-Zeichen werden in dem Datenbaustein 1 gespeichert, der an der Adresse beginnt, die von dem Pointer IN angegeben wird: DB1.DBX10.0. Die Zeichenkette wird an der Adresse ausgegeben, die von dem Pointer OUT angegeben wird: Beginn bei DB2.DBX0.0 (Datenbaustein 2). Weil es sich hier um eine ungerade Anzahl an ASCII-Zeichen handelt, enthält die letzte Hexadezimalziffer nur Nullen in dem rechten Halbbyte, wodurch der Hexadezimalwert 0xC0 entsteht.
Wurde die Anweisung fehlerfrei ausgeführt wird RET_VAL auf den Wert W#16#0000 gesetzt.
Die folgende Tabelle zeigt Beispiele für die Konvertierung von ASCII-Zeichenketten in Hexadezimalzahl.
|
IN |
N |
OUT |
BIE-Status |
|---|---|---|---|
|
'0123' |
4 |
16#0123 |
1 |
|
'123AFx1a23' |
10 |
16#123AF01023 |
0 |
Die folgende Tabelle zeigt die ASCII-Zeichen und die entsprechenden Hexadezimalwerte.
|
ASCII-Zeichen |
ASCII-codierter Hexadezimalwert |
Hexadezimalziffer |
|---|---|---|
|
"0" |
30 |
0 |
|
"1" |
31 |
1 |
|
"2" |
32 |
2 |
|
"3" |
33 |
3 |
|
"4" |
34 |
4 |
|
"5" |
35 |
5 |
|
"6" |
36 |
6 |
|
"7" |
37 |
7 |
|
"8" |
38 |
8 |
|
"9" |
39 |
9 |
|
"A" |
41 |
A |
|
"B" |
42 |
B |
|
"C" |
43 |
C |
|
D |
44 |
D |
|
E |
45 |
E |
|
F |
46 |
F |