Arrays
Themenpunkte:
Array-Grenzen über Konstanten definieren
Die Grenzen eines Arrays sollten Sie mit Hilfe von konstanten Variablen definieren. Wenn innerhalb einer Schleife auf das Array zugegriffen wird, sollten die gleichen konstanten Variablen zur Definition der Schleifengrenzen verwendet werden.
- Untergrenze des Arrays = Untergrenze der Schleife = konstante Variable 1
- Obergrenze des Arrays = Obergrenze der Schleife = konstante Variable 2
Beachten Sie auch den folgenden Themenpunkt der Programmierkonventionen:
Allgemeine Programmelemente für die folgenden Beispiele:
TYPE ST_Object :
STRUCT
sName : STRING;
nID : UINT;
END_STRUCT
END_TYPE
Negatives Beispiel:
VAR
aObjects : ARRAY[1..10] OF ST_Object;
END_VAR
Positives Beispiel:
VAR CONSTANT
cMin : UINT := 1;
cMax : UINT := 10;
END_VAR
VAR
aObjects : ARRAY[cMin..cMax] OF ST_Object;
END_VAR
Array-Untergrenze von 1
Bei Arrays in den Sprachen der IEC 61131 können sowohl die Ober- als auch die Untergrenze explizit definiert werden. Als Untergrenze sollte eine konstante Variable mit dem Wert 1 verwendet werden, sodass sich als Obergrenze die Anzahl an Elementen im Array ergibt. Die Obergrenze sollte ebenfalls über eine konstante Variable definiert werden.
Dies steht der in Hochsprachen üblicherweise implizit vorgegebenen Untergrenze von 0 entgegen. Es wird dennoch empfohlen, eine Untergrenze von 1 zu verwenden, um einen einheitlichen und einfachen Umgang mit Arrays zu ermöglichen.
Abhängig vom konkreten Anwendungsfall können auch andere Grenzwerte sinnvoll sein. Innerhalb eines Bausteins sollte die Verwendungsweise jedoch unbedingt einheitlich sein.
Positives Beispiel:
VAR CONSTANT
cMin : UDINT := 1;
cMax : UDINT := 10;
cMaxObjects : UDINT := 10;
END_VAR
VAR
nIndex : UDINT;
aSample : ARRAY[cMin..cMax] OF REAL;
aObjects : ARRAY[cMin..cMaxObjects] OF ST_Object;
END_VAR
FOR nIndex := cMin TO cMax DO
aSample[nIndex] := 123.456;
END_FOR