Deklaration von STRING-Variablen (inkl. Zugriff)

Syntax
VAR | VAR_INPUT | VAR_IN_OUT | VAR_OUTPUT | VAR_GLOBAL | VAR_EXTERNAL | VAR_TEMP
   name_3, name_4, ..., name_n : STRING[length] := 'initial-value';
   ...
(* Additional pieces of data, such as partial addresses, are also possible for the variables - depending on the section. *)
END_VAR 
 
TYPE
   name_5: ARRAY [x..y] OF STRING[length] := ['initial-value_1', 'initial-value_2', .., 'initial-value_n'];   (* Up to 4 dimensions are possible. *)
   ...
   name_1: STRUCT
      name_e1 : STRING[length] := 'initial-value';  (*  Additional pieces of data, such as partial addresses. are also possible for the structure elements. *)
      ...
   END_STRUCT; 
END_TYPE
Bedeutung

Deklaration einer oder mehrerer Variablen vom →Datentyp STRING (auch als STRING-Variablen oder →Zeichenfolgen-Variablen bezeichnet) mit einer maximalen Länge (length), wobei name_3, name_4 usw. →IEC-Bezeichner sein müssen.
Mit dem optionalen →Initialisierungswert := 'initial-value' weisen Sie der Variable einen Wert zu (Details: siehe "Initialisierung von Variablen in ST").

(Info) Sowohl die Länge als auch der Initialisierungswert dürfen ein →konstanter Ausdruck sein.

  • Neuron Power Engineer erlaubt STRING-Variablen mit einer maximalen Länge von bis zu 32.767 Zeichen.
  • Sonderzeichen, wie z.B. Umlaute, im Initialisierungswert oder im Wert für eine Zuweisung müssen als eine Kombination von 3 Zeichen, beginnend mit dem Dollar-Zeichen ($) und gefolgt von 2 Hexadezimal-Ziffern eingegeben werden. Beispiel: StringVar1 : STRING[10] := '$A3 30.50'; (für den Initialisierungswert £ 30.50) – Siehe →Zeichenfolge-Literal, unter "Beispiele für Zeichenfolge-Literale" für eine Liste mit ausgewählten Sonderzeichen.

Die Deklaration von STRING-Variablen ist innerhalb dieser Abschnitte möglich:
(Informieren Sie sich in der jeweiligen Beschreibung zum Abschnitt über evtl. zusätzliche Möglichkeiten für die Variable.)

Abschnitt

Die Deklaration der STRING-Variable erfolgt als:

VAR ... END_VAR

interne Variable (siehe "Deklaration von internen Variablen")

VAR_INPUT ... END_VAR

Eingangsvariable (siehe "Deklaration von Eingangsvariablen in ST")

VAR_OUTPUT ... END_VAR

Ausgangsvariable (siehe "Deklaration von Ausgangsvariablen in ST")

VAR_IN_OUT ... END_VAR

Ein-/Ausgangsvariable (siehe "Deklaration von Ein-/Ausgangsvariablen in ST")

VAR_GLOBAL ... END_VAR

globale Variable (siehe "Deklaration von externen Variablen in ST")

VAR_EXTERNAL ... END_VAR

externe Variable (siehe "Deklaration von externen Variablen in ST")

VAR_TEMP ... END_VAR

temporäre Variable (siehe "Deklaration von temporären Variablen in ST")

TYPE ... END_TYPE

ein →anwenderdefinierter Datentyp bzw. als ein Element davon (siehe "Deklaration eines Datentyps in ST")

Beispiel
VAR
  var4 : STRING[10];                         (* 'var4' has a maximum length of 10 characters. *)
END_VAR
 
VAR_OUTPUT
  OUT4 : STRING[5] := 'ABC';                 (* 'OUT4' has a maximum length of 5 characters and is initialized with character string 'ABC'. *)
END_VAR
 
TYPE
   myString : ARRAY [1..3] OF STRING[4] := ['ABC', 2('DEF')];
                                             (* 3 ARRAY elements of data type 'STRING' have a maximum length of 4 characters.               *)
                                             (* initialization of the 1st element with 'ABC', initialization of the other 2 elements with 'DEF'. *)
 
   RangeString : STRUCT                      (* structure data type with 2 elements *)
    min : STRING[6];                         (* 1st element of data type 'STRING' has a maximum length of 6 characters, no initialization.          *)
    max : STRING[7] := 'ABCD';               (* 2nd element of data type 'STRING' has a maximum length of 7 characters, initialization with 'ABCD'. *)
   END_STRUCT;
END_TYPE

Zugriff auf STRING-Variablen

Falls Sie auf einzelne Zeichen einer STRING-Variable in →Zuweisungen zugreifen wollen, geben Sie den Namen der Variable (z.B. var4) und die entsprechende Position des Zeichens (z.B. 2) in [] eingeschlossen ein (z.B. var4[2]). Die Positionen starten mit "1".

Zuweisungen von einer STRING-Variable auf eine andere STRING-Variable mit unterschiedlicher maximaler Länge sind möglich. Hat die STRING-Variable, auf die zugewiesen wird, eine kleinere Länge als die STRING-Variable, von der zugewiesen wird, so führt Neuron Power Engineer die Zuweisung nur bis zur maximalen Länge der STRING-Variable durch, auf die zugewiesen wird. Außerdem wird der Ausgang ENO der umfassenden →POE auf den Wert FALSE (bzw. einer Entsprechung) gesetzt.

Falls die Zeichenkombination '$00' einem einzelnen Zeichen einer STRING-Variable zugewiesen wird, endet die Zeichenfolge der STRING-Variable an dieser Position. Solche Zeichenfolge werden auch in der Sicht Variablenwerte bei $00 beendet.
In Zuweisungen wird jedoch die vollständige Zeichenfolge übernommen. So ist es möglich, dass die Sicht Variablenwerte einzelne Zeichen hinter $00 darstellt, falls Sie auf zugewiesenen Zeichen hinter $00 zugreifen.

Bei einer kleineren Länge der zugewiesenen STRING-Variable und der Zeichenkombination '$00' darin führt Neuron Power Engineer die Zuweisung nur bis zur maximalen Länge der STRING-Variable durch, auf die zugewiesen wird. In diesem Fall wird der Ausgang ENO der umfassenden POE nicht auf den Wert FALSE (bzw. einer Entsprechung) gesetzt.

Beispiele
VAR
  var4, var5 : STRING[10];    (* 'var4' and 'var5' have a maximum length of 10 characters. *)
  var6 : STRING[5];           (* 'var6' has a maximum length of 5 characters. *)
  Char1 : CHAR;
END_VAR
 
VAR_OUTPUT
  OUT4 : STRING[5] := 'ABC';             (* 'OUT4' has a maximum length of 5 characters and is initialized with character string 'ABC'. *)
  OUT5 : STRING[10] := '1234567890';     (* 'OUT5' has a maximum length of 10 characters and is initialized with character string '1234567890'. *)
END_VAR
 
(* assignments: accessing single characters of a STRING variable *)
Char1       := OUT4[3];     (* The character of the 3rd position of 'OUT4' , i.e. 'C', is assigned to 'Char1'. Result: Char1 := 'C' *) 
OUT4[2]     := 'D';         (* The character 'D' is assigned to the 2nd position of 'OUT4'. Result for 'OUT4' := 'ADC' *) 
var4[1]     := 'A';         (* The character 'A' is assigned to the 1st position of 'var4'. Result for 'var4' := 'A' *)
var4[2]     := OUT4[2];     (* The character 'D' is assigned to the 2nd position of 'var4'. Result for 'var4' := 'AD' *) 
 
(* assignments: STRING variable to STRING variable *)
var5     := OUT4;           (* OK, because max. length of 'OUT4' = 5 and max. length of 'var5' =  10. Result for 'var5' := 'ADC' and ENO of the embracing POU := TRUE *)
var6     := OUT5;           (* OK, but assignment only to max. length of 'var6', i.e. to the character position '5'. Result for 'var6' := '12345' and ENO of the embracing POU := FALSE *)
 
(* special case: character strings with $00 *)
VAR
  varA, varB : STRING[10] := '1234567890'; (* 'varA' and 'varB' are initialized with character string '1234567890'. *)
  varC, varD : STRING[10];
  varE       : STRING[10] := '1234567890'; (* 'varE' is initialized with character string '1234567890'. *) 
  varF       : STRING[5];
  CharA, CharB : CHAR;
END_VAR
VarA[6] := '$00';  (* Due to these assignments, 'varA' and 'varB' are now terminated at the 6th position. Displayed value in 'Values of Variables' view: '12345' *)
VarB[6] := '$00';
VarE[4] := '$00';  (* Due to this assignment, 'varE' is now terminated at the 4th position. Displayed value in 'Values of Variables' view: '123' *)  
 
varC := varA;              (* Inspite of $00, the complete character string is copied for 'varC'. Result for 'varC' := '12345$007890' - but displayed value in 'Values of Variables' view: '12345' - and ENO of the embracing POU := TRUE *)
varD := MOVE(IN := varB);  (* Inspite of $00, the complete character string is copied for 'varD'. Result for 'varC' := '12345$007890' - but displayed value in 'Values of Variables' view: '12345' - and ENO of the embracing POU := TRUE *)
varF := varE;              (* Inspite of $00, the complete character string is copied until the max. length of 'varF'. Result for 'varF' := '123$005' - but displayed value in 'Values of Variables' view: '123' - and ENO of the embracing POU := TRUE *)
 
CharA := varC[8];   (* Result for 'CharA' := '8' - inspite of $00 on the 6th position of 'varC' *)
CharB := varF[5];   (* Result for 'CharB' := '5' - inspite of $00 on the 4th position of 'varF' *)

Deklaration und Zugriff auf STRING-Variablen vom ARRAY-Datentyp

Falls Sie eine STRING-Variable basierend auf einem ARRAY-Datentyp deklarieren wollen, geben Sie den STRING-Datentyp mit der maximalen Länge als Datentyp bei der Deklaration des ARRAY-Datentyps ein.

Beispiel für Deklaration
TYPE
    myArray : ARRAY [1..3] OF STRING[4];   (* declaring 3 STRING elements, each element has a maximum length of 4 characters *)
END_TYPE

Auf einzelne Zeichen einer solchen Variable können Sie mit Hilfe des folgenden Konstrukts zugreifen:

Beispiel für den Zugriff
VAR
  var2 : myArray;
  accessA, accessB : CHAR;        (* variables for the access *)
  accessC : STRING[4];            (* auxiliary variable for the alternate access *)
END_VAR
 
accessA := var2[1][2];    (* accessing the 2nd character of the 1st ARRAY element *)
 
(* alternate access *)
accessC := var2[1];       (* accessing the 1st ARRAY element *)
accessB := accessC[2];    (* accessing the 2nd character of the 1st ARRAY element *)