Arrays

Themenpunkte:

  1. Array-Grenzen über Konstanten definieren [++]
  2. Array-Untergrenze von 1 [+]

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.

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