Step 7 Wstring von Tia in eine S7-300 wandeln - Unterschied zu String Datentyp

drsnuggles

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

ich muss aktuell ein Projekt von TIA auf Step7 runter wandeln. Ein Großteil ist mit SCL geschrieben und dort wird primär der Datentyp WString genutzt, anstatt der String typ. Ich sehe aber keine Logischen Grund dafür und kann auch nicht wirklich erkennen wo der unterschied zwischen Wstring und String ist. Einziges was man findet ist das String mit 254 Zeichen begrenzt ist, WString eigentlich unbegrenzt (ca. 16000 Zeichen).

Gibt es sonst noch funktionelle unterschiede?

Im C# Umfeld gibt der WString mir Unicode Funktionen frei, die ich aber so bei Siemens nicht finde bzw. nirgends etwas darüber lesen kann.

Gruß und Danke schonmal

Der Doc
 
> Ich sehe aber keine Logischen Grund dafür und kann auch nicht wirklich erkennen wo der unterschied zwischen Wstring und String ist.

Na, weil man halt mehrere Sprachen speichern kann: á é
"Recept má jméno"

--- aus https://www.codesys-blog.com/tipps/wstring-zeichenketten/ --- :
Datentyp „WSTRING“

Während beim Datentyp STRING die Zeichen in ASCII interpretiert werden, nutzten WSTRING Zeichenketten das Unicode-Format.

Unicode ist eine Obermenge von ASCII, und die Zahlen 0-128 haben in ASCII die gleiche Bedeutung wie in Unicode. Zum Beispiel bedeutet die Zahl 65 „A“. Unicode entstand Ende der 80er Jahre mit dem Ziel alle Sprachen der Welt in einem Zeichensatz zu vereinen. Folglich ist der Unicode der größte und umfassendste Zeichensatz. Da Unicode-Zeichen im Allgemeinen nicht in ein 8-Bit-Byte passen, wurde anfangs 16Bit codiert, was auch noch dem benötigten 1 WORD pro Character in CODESYS entspricht. Allerdings kann hier nicht so einfach die Länge des Strings an der Zeichenanzahl festgelegt werden, da manche Zeichen mehrere WORDS für die Codierung benötigen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das bedeutet aber auch, dass ich WString in String wandeln kann solange ich sicher bin das nur Zeichen bis '008F' vorkommen.
Bzw das kann ich ja bei der Wandlung prüfen.
Bin auf dieses Problem bei einem Interface gestoßen und habe eine Funktion zum Wandeln im TIA vermisst.
Muss ich dann wohl selbst schreiben.

Grüße
Gerrit

Edit meint und zur Ergänzung:
'008F' ist natürlich ein Tippfehler.
ACSII hat einen möglichen Gesamtumfang von '00' bis '7F'
Sonderzeichen / Steuerzeichen von '00' bis '1F'
'normale Zeichen von '20' bis '7E'
Sonderzeichen / Steuerzeichen 'DEL' ist '7F' - keine Ahnung ob man das heute noch braucht.
 
Zuletzt bearbeitet:
Auf die ersten beiden Bytes im String Achten!

Byte 0 im String = String Gesamtlänge
Byte 1 im String = Anzahl Zeichen im String

Siehe dazu die Hilfe im Simatic Manager
 
Auf die ersten beiden Bytes im String Achten!

Byte 0 im String = String Gesamtlänge
Byte 1 im String = Anzahl Zeichen im String

Siehe dazu die Hilfe im Simatic Manager
Beim WString sind es dann die beiden ersten Wörter.
Word 0 = Gesamtlänge
Word 1 = Zeichenanzahl.
Funktionen zur Ermittlung der Zeichenanzahl stellt TIA zur Verfügung.

Das Abfangen von Fehlern bei der Übersetzung von WString nach String ist der spannende Teil.

In meinem Bereich kann man die Nutzung von 'nicht ASCII-Zeichen' quasi ausschliessen.
 
Zurück
Oben