ATH: ASCII-Zeichenkette in Hexadezimalzahl konvertieren (S7-300, S7-400) - STEP 7

Erweiterte Anweisungen (S7-300, S7-400)

ft:publication_title
Erweiterte Anweisungen (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
ATH: ASCII-Zeichenkette in Hexadezimalzahl konvertieren

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