TIA TIA V15.1/S7- 1500: Strings, Chars und Sonderzeichen

StGo

Level-1
Beiträge
84
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich habe einen ganzen Sack voll Strings in der SPS, die ich von einem PC bekomme.
Spracheinstellung PG + TIA = deutsch.
Die enthaltenen Umlaute/Sonderzeichen codiert TIA Unicode- in einem Byte! Z.B. "Ü" = TIA 16#DC = Codepage 850 16#9A.
Demzufolge druckt der Zebra, dem ich diese Umlaute schicke, Blödsinn.
Muss ich jetzt wirklich mit der Brechstange durch die Strings laufen und für alle Umlaute und Sonderzeichen die korrekten Ascii-Codes eintragen oder kennt jemand eine elegantere Variante?

Es ist keine Option, auf die Umlaute zu verzichten.

Danke + Gruß
StGo
 
Kann nicht der PC direkt die richtigen Codes zur SPS schicken? Wenn der PC Unicode liefert, dann muß entweder der Zebra-Drucker Unicode richtig interpretieren oder Du mußt die Zeichen gegen den ASCII/ANSI-Code austauschen.

Das Problem wird nichts mit den Spracheinstellungen von TIA zu tun haben. Der Drucker hängt an der SPS oder an einem HMI?

Harald
 
Die enthaltenen Umlaute/Sonderzeichen codiert TIA Unicode- in einem Byte! Z.B. "Ü" = TIA 16#DC = Codepage 850 16#9A.
Bist Du sicher, daß von dem PC der Unicode in nur einem Byte kommt? Vielleicht siehst Du nur nicht das 16#00 davor?
Wenn das Sonderzeichen in nur einem Byte kommt, dann ist es nicht Unicode sondern die Windows Codepage 1252 - dann ist es sehr leicht auszutauschen.
Code:
   CP850 CP1252  Unicode
Ä  16#8E  16#C4  16#00C4
Ö  16#99  16#D6  16#00D6
Ü  16#9A  16#DC  16#00DC
ä  16#84  16#E4  16#00E4
ö  16#94  16#F6  16#00F6
ü  16#81  16#FC  16#00FC
ß  16#E1  16#DF  16#00DF
"Ü" = Codepage 850/437: 0x9A = Codepage 1252/ISO8859-1/ANSI: 0xDC = Unicode U+00DC = UTF-16: 0x00DC = UTF-8: 0xC3 + 0x9C

Harald
 
Zuletzt bearbeitet:
Bist Du sicher, daß von dem PC der Unicode in nur einem Byte kommt? Vielleicht siehst Du nur nicht das 16#00 davor?
Wenn das Sonderzeichen in nur einem Byte kommt, dann ist es sehr leicht auszutauschen.
Harald

Ja, das kriegt man in SCL und TIA schön programmiert. Sind einige Strings, mithin ein bisschen Arbeit für mich und Last für die CPU.

Wenn ich ein CHAR (Byte) in TIA beobachte und da ein großes "Ü" reinschreibe, steht in dem Byte 16#DC. Wieso?

Die Kommunikation + die dahinter liegenden Prozeduren wegen des kleinen Druckerproblems umzustellen ist nicht sinnvoll. Der Drucker hängt an der SPS.

Die Umlaute stehen mitten in einem Array of CHAR (Strings mag der Kommunikationstreiber nicht, in diesem Fall Deltalogic).
Interessant ist wirklich, was die PC-Applikation an den Kommunikationstreiber gibt...

Danke + Gruß
StGo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich ein CHAR (Byte) in TIA beobachte und da ein großes "Ü" reinschreibe, steht in dem Byte 16#DC. Wieso?
Weil Siemens die Zeichencodierungen nach Windows Codepage 1252 (ISO/IEC 8859-1) verwendet. Das ist praktisch, da brauchen Step7/TIA/ProTool/... keine eigene Schriftart, sondern können die Windows-Schriftarten verwenden.
Das wird wohl auch der Grund sein, warum das PC Programm für ein 'Ü' den Code 0xDC (Windows 1252) verwendet, und nicht 0x9A (CP850) wie der Drucker erwartet wenn er auf die (MS-DOS-)Codepage 437 oder 850 eingestellt ist. Kann der Drucker vielleicht auf den Zeichensatz Windows 1252 eingestellt werden?

Harald
 
Weil Siemens die Zeichencodierungen nach Windows Codepage 1252 (ISO/IEC 8859-1) verwendet. Das ist praktisch, da brauchen Step7/TIA/ProTool/... keine eigene Schriftart, sondern können die Windows-Schriftarten verwenden.
Harald

Codepage 1252, wieder was gelernt + Danke Harald.

Kann der Drucker vielleicht auf den Zeichensatz Windows 1252 eingestellt werden?
Harald

Man kann die Codepage einstellen, ob 1252 geht, muss ich am Montag rausfinden.

Stephan

Gesendet von meinem SM-G973F mit Tapatalk
 
Zuletzt bearbeitet:
Zurück
Oben