WSTRING Zeichenketten

CODESYS-BLOG WSTRING Zeichenketten

In einem meiner vorherigen Artikel bin ich darauf eingegangen, wo und wie Ihr eure Variablen deklarieren könnt. Im Folgenden möchte ich speziell auf den Datentyp für Zeichenketten eingehen. Wir werden STRINGs und im speziellen WSTRING Zeichenketten behandeln und auf die Unterschiede eingehen.

Wenn Ihr in CODESYS eine Zeichenkette deklarieren wollt, ist zunächst der erste Schritt eine Variable vom Typ STRING anzulegen.

sWelcomeMessage : STRING:= 'Hello CODESYS Users';

Hier habe ich z.B. bei der Deklaration gleich einen Initalwert mit übergeben. Innerhalb der einfachen Hochkommas könnt Ihr nun jede beliebige Zeichenkette übergeben. Wieviel Speicher wird nun für meine Variable reserviert? Ganze einfach: Der Datentyp STRING wird im ASCII Format interpretiert und reserviert pro Zeichen 1Byte + 1Byte zusätzlich. Solltet Ihr nun in meinem Beispiel-String ‚Hello CODESYS User‘ die Zeichen zählen und vermuten, dass ich 20Byte Speicher belege, muss ich euch gleich enttäuschen. Denn in meinem Beispiel habe ich bei der Deklaration keine Größenangabe mit angegeben. Das heißt, hier nimmt der CODESYS Compiler, standardmäßig 80 Zeichen an. Demzufolge reserviert der Compiler hier insgesamt 81Byte.

Um nun den zu reservierenden Speicher zu definieren, müsst Ihr einfach in runden Klammern die Größe mit Übergeben:

sWelcomeMessage : STRING(20):= 'Hello CODESYS Users on codesys-blog.com';

Ich habe gleich den nächsten Stolperstein eingebaut. Mein Beispiel String ist länger als der reservierte Speicherbereich. Was passiert damit? Der String wird hinten abgeschnitten. Das passiert auch mit Zeichenketten, die länger als 255 Zeichen sind. Hier ist der String ebenfalls zu lange für den Datentyp. Besser gesagt, die String-Funktionen sind hier die Limitierende Komponente, da diese nur mit einer Länge von 1-255 Zeichen die String-Verarbeitung durchführen.

Das führt direkt zum:

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.

Beispiel:

wsWelcomeMessage : WSTRING:= "Hello CODESYS Users on codesys-blog.com";

Ganz wichtig ist hier, dass Ihr die Zeichenkette für den WSTRING in doppelten Hochkommas angebt.

Zeichenkettenkonstanten

Die Zeichenkette beinhaltet die Zeichen zwischen den beiden umschließenden Anführungszeichen. Die Zeichen werden in Latin-1, auch ISO-8859-1 genannt, codiert. Das ist ein 8-Bit-Zeichensatz, der von der Internationalen Organisation für Normung (ISO) unterstützt wird und die Alphabete westeuropäischer Sprachen repräsentiert. Allgemein wird die Zeichenkette einfach nur als String bezeichnet.

Beispiel: 'Hello CODESYS!'

Betrachten wir nun einige Sonderfälle. Angenommen Ihr müsst z.B. über TCP/IP mit einem externen Gerät kommunizieren, dann kann es vorkommen dass Ihr z.B. ein CR, LF an da Ende des Strings setzten müsst. Genauso kann es sein, dass Ihr in eurer Zeichenkette ein einfaches Anführungszeichen anzeigen müsst. Dafür gibt es gemäß ISO-8859-1 das Dollarzeichens ($), nachdem die nachfolgenden 2 Zeichen als HEX-Code interpretiert werden.

Hierzu habe ich euch zwei sehr interessante Tabellen aus der CODESYS Online Hilfe kopiert:

Hexadezimalcode
String mit $-Code Interpretation
'$<8-Bit-Code>' 8-Bit-Code: Zweistellige hexadezimale Zahl, die gemäß ISO/IEC 8859-1 interpretiert wird.
'$41' A
'$9A' ©
'$40' @
'$0D' Steuerzeichen Zeilenumbruch, entspricht ‘$R’
'$0A' Steuerzeichen neue Zeile, entspricht ‘$L’ und ‘$N’
Sonderfälle
String mit $-Code Interpretation
'$L', ' $l' Steuerzeichen Zeilenvorschub, entspricht '$0A'
'$N', '$n' Steuerzeichen neue Zeile, entspricht '$0A
'$P', '$p' Steuerzeichen Seitenvorschub
'$R', '$r' Steuerzeichen Zeilenumbruch, entspricht '$0D'
'$T', '$t' Steuerzeichen Tabulator
'$$' Dollarzeichen: §
'$'' Einfaches einfaches Anführungszeichen: '

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website benutzt Cookies und Google Analytics. Wenn du die Website weiter nutzt, gehen wir von deinem Einverständnis aus Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen