-

SIZEOF

TypFunktion
BeschreibungErmittelt die Anzahl an Bytes, die für die Eingangsvariable im Speicher der Steuerung reserviert ist, und gibt diese als UDINT-Wert aus. Die Funktion ist besonders hilfreich, um die Größe anwenderdefinierter ARRAYs, STRUCTs oder STRINGS zu bestimmen.

Beispiel: Bei einem Array aus DINT-Elementen belegt jedes Element 4 Bytes. Die Gesamtanzahl der Bytes, die für die Eingangsvariable reserviert ist, berechnet sich in diesem Beispiel dann wie folgt:

    Anzahl der Array-Elemente x Anzahl der von einem Array-Element belegten Bytes

Daraus ergibt sich für Array-Elemente vom Datentyp DINT: Anzahl an Array-Elementen x Faktor 4 (siehe auch nachfolgendes Beispiel).
HinweiseDie Größe des am Eingang anliegenden ARRAY, STRUCT oder STRING hängt vom verwendeten Typ der Steuerung ab.
ParameterEingang

IN

Ausgang

OUT
BeispielBeispiel in ST
Besonderheiten für STRUCTsEine STRUCT wird im Speicher der Steuerung wie folgt abgelegt:

  • Die Anfangsadresse jedes einzelnen Elements der STRUCT ist immer durch seine Größe teilbar. Im unten gezeigten Beispiel beginnt die MyDINT-Variable nicht an Adresse 14 (obwohl dies der nächste freie Speicherplatz wäre), sondern an Adresse 16, da 16 durch die DINT-Größe 4 (Bytes) teilbar ist.

    Und:

  • Die Größe der gesamten STRUCT ist immer durch die Größe des größten enthaltenen generischen Datentyps teilbar (im Beispiel unten ist dies LINT = 8 Bytes). Dadurch ist sichergestellt, dass die Anfangsadresse der gesamtem STRUCT auch durch die STRUCT-Größe teilbar ist.
Das bedeutet, je nach Zusammensetzung der STRUCT liefert die SIZEOF-Funktion einen größeren Wert zurück, als dies durch einfache Addition der Größen aller enthaltenen Elemente der Fall ist.

Beispiel