TIA Byte 1:1 in String übernehmen

Bonsai32

Level-1
Beiträge
41
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe mal wieder ein kleines Problemchen.

Ich muss bzw. möchte einen Byte Bereich 1:1 in einen String schreiben.

Da es sich um eine Seriennummer handelt darf diese sich dabei nicht ändern.

Byte 0 03 hex
Byte 1 05 hex
Byte 2 41 hex
Byte 3 2F hex
Byte 4 C8 hex
Byte 5 00 hex
Byte 6 10 hex
Byte 7 32 hex

String 0305412FC8001032

Wenn ich es über Char zu String probiere wird der String immer im ASCII Format dargestellt.

Vielen dank für eure Hilfe



Mit freundlichen Grüßen

Sven
 
welche steuerung? welche software

tia 15
erweiterte anweisungen
HTA: Hexadezimalzahl in ASCII-Zeichenkette konvertieren
 
Kein Wunder daß man keine Lösung findet wenn man schon die Aufgabenstellung nicht eindeutig formulieren kann...

Trotz der Formulierung "Byte Bereich 1:1 in einen String schreiben" und "darf sich nicht ändern" glaube ich, daß Bonsai32 meint, daß da durch Konvertierung zu ASCII-Zeichen ein 16 Zeichen langer String mit dem Inhalt "0305412FC8001032" entstehen soll. Wenn man die Byte-Folge 1:1 in einen String übernehmen würde, dann würde der String nicht druckbare/anzeigbare Zeichen enthalten, wie z.B. das "Byte 5 00 hex"

Sollte dennoch wirklich eine 1:1-Übernahme in einen 8 Zeichen langen String beabsichtigt sein, dann könnte man das evtl. einfach mit BLKMOV und/oder einem AT-Konstrukt machen - kommt drauf an, auf was für einer CPU der Code laufen soll - was Bonsai32 uns noch nicht verraten hat. Und wenn er clever gewesen wäre, dann hätte er auch noch angegeben, in welcher Programmiersprache er das braucht (AWL, FUP, SCL, ...).

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich denke das HTA genau das macht was er haben will



Mit der Anweisung "HTA" konvertieren Sie die am Eingang IN angegebene Hexadezimalzahl in eine ASCII-Zeichenkette. Das Ergebnis der Konvertierung wird an der am Parameter OUT angegebenen Adresse abgelegt.

  • Über den Zeiger am Parameter IN (hexadezimal) können Sie auf die folgenden Datentypen verweisen: Array of CHAR, Array of BYTE, STRING, BYTE, CHAR, WORD, Array of WORD, INT, DWORD, Array of DWORD, DINT, SINT, USINT, UINT, UDINT. Nur bei S7-1500: Array of WCHAR, WSTRING, WCHAR, ULINT, LINT, LWORD, Array of LWORD
  • Über den Zeiger am Parameter OUT (ASCII) können Sie auf die folgenden Datentypen verweisen: STRING, WSTRING, Array of CHAR, Array of WCHAR, Array of BYTE, Array of WORD
....Beispiel

Die folgende Tabelle zeigt Beispiele für die Konvertierung von Hexadezimalzahlen in ASCII-Zeichenketten:



IN N OUT Datentyp von OUT ENO-Status

  • WORD#16#0123
  • UINT#10#291
2 '0123' STRING, WSTRING 1

  • DWORD#16#123AF012
  • INT#10#305852434
4 '123AF012' STRING, WSTRING 1
WORD#16#ABE3 2 CHAR#[‘A’, ‘B’, ‘E’, ‘3’] ArrayOfCHAR, ArrayOfWCHAR 1
oder ich verstehe die frage falsch.
wenn die ausgabe keine string sein soll muss man am format gar nichts ändern und einfach transferieren wie pn/dp das erwähnt hat
 
Zuletzt bearbeitet:
oder ich verstehe die frage falsch.
@Volker
Du konntest die Frage nicht falsch verstehen: Sven hat keine Frage gestellt :ROFLMAO:
@alle
Dies ist nicht der erste und wird auch sicherlich nicht der letzte Thread in diesem Forum sein, bei dem weder der TE noch die aufmerksamen Leser geschweige denn alle Beteiligten bis zuletzt (und länger) nicht wirklich wissen, ob Konvertieren angesagt ist oder nicht.
Wie oft mussten wir schon einem TE, der klar formuliert auf Konvertieren beharrte, das Konvertieren ausreden! Und Sven gehört diesmal zu denen, die eigentlich (ungewöhnlich) klar formuliert haben, dass sie kein Konvertieren anstreben ...
 
String 0305412FC8001032
In welcher Ansicht/Darstellung würde der String so aussehen? Hast Du idealerweise ein Bild davon?
Soll der String so auf einem HMI angezeigt werden? Oder soll die Bytefolge lediglich in einen String gepackt werden, weil eine Folgefunktion einen String erwartet?

Wenn ich es über Char zu String probiere wird der String immer im ASCII Format dargestellt.
Wo wird der String "dargestellt"?
Ein String soll nun mal üblicherweise ASCII-Zeichen enthalten, da ist es eigentlich nicht verwunderlich, wenn der String und/oder dessen einzelne Zeichen standardmäßig im ASCII Format angezeigt wird. Für den Programmcode ist aber unerheblich, wie das Objekt im Engineering System dargestellt wird (die Darstellung/Ansicht kann man meistens auch umstellen). Erheblich ist der Inhalt - die Werte der einzelnen String-Zeichen.

Harald
 
Das klingt irgendwie nach...
HEX to String
Ja, die Ähnlichkeit der Aufgabe ist frappierend - und es hatte sich herausgestellt, daß doch eine Konvertierung von Hex in ASCII-Zeichen gemeint war. Ich hatte damals die Funktion HTA empfohlen, genauso wie volker hier in #2 und #6 ...

Es wäre schön wenn der Fragesteller Bonsai32 sich hier nochmal meldet und seine Aufgabenstellung präzisiert, dann brauchen wir nicht mehr weiter rumrätseln.

Harald
 
Zurück
Oben