SDTs mit überlappenden Elementen

Speicherbelegung:

Alle Elemente vom gleichen Datentyp (BOOL, WORD, INT, DWORD, DINT, REAL und STRING mit derselben Zeichenfolgenlänge) werden jeweils zusammengefasst und beginnend bei einer gemeinsamen Anfangsadresse der Reihe nach zugewiesen. Arrays werden ebenfalls von dieser gemeinsamen Anfangsadresse aus zugeordnet.

Für diese Anfangsadresse gilt Folgendes: Wenn ein SDT aus Elementen vom Typ BOOL oder ARRAY OF BOOL besteht, wird er in einen Bitspeicherbereich gelegt, ansonsten wird er in einem für 16-Bit-Worte reservierten Speicher gelegt.

Um Zweideutigkeiten bei der Initialisierung zu vermeiden, dürfen diese SDTs nicht initialisiert werden. Folgende Default-Initialisierungen werden verarbeitet:

Datentyp

Initialisierungswert

BOOL

FALSE

WORD, INT, UINT, DWORD, DINT, UDINT

0

REAL

0.0

STRING

'' (leere Zeichenfolge)

Anmerkung
  • Die Adresse, die von der größtmöglichen Zeichenfolge verwendet wird, wird initialisiert mit der größtmöglichen Länge derjenigen Zeichenfolge, die größer oder gleich null ist. Der Rest der Zeichenfolge wird mit Nullen initialisiert.

  • Alle Elementvariablen vom Typ STRING müssen am Ende der Deklaration stehen.

  • Generell muss die jeweilige Speicherbelegung der verwendeten Datentypen genauestens beachtet werden.

  • Insbesondere bei Verwendung von STRING-Elementen ist deren spezielle Speicherbelegung zu berücksichtigen, da sie mit Hilfe der anderen Elemente beliebig überschrieben werden können.

  • Außerdem müssen alle Elementvariablen vom Typ String am Ende der Deklaration stehen.

  • Ein SDT kann nicht als Variable eines SDT mit überlappenden Elementen verwendet werden.

Beispiel 1:

SDT ohne Elemente vom Typ BOOL (DUTwithoutBOOLs):

Speicherbelegung von SDTs mit überlappenden Elementen :

16-bit word area

       

DT100

WORD1

DWORD1

INT1

DINT1

REAL1

STRING1

DT101

WORD2

INT2

DT102

DWORD2

DINT2

DT103

STRING2

Anmerkung

Die Variablen STRING1 und STRING2 müssen die gleiche Länge besitzen und am Ende der Deklaration stehen.

SDT (DUTwithBOOLs) mit Elementen vom Typ BOOL (ohne benutzerdefinierte Adressen):

Speicherbelegung von SDTs mit überlappenden Elementen :

Bit area

           

WR10

Bool14

Bools[04]

WORD1

DWORD1

INT1

DINT1

REAL1

STRING1

WR11

WORD2

INT2

WR12

DWORD2

DINT2

WR13

Anmerkung

Die Variable STRING1 muss am Ende der Deklaration stehen.

SDT mit Arrays:

Speicherbelegung von SDTs mit überlappenden Elementen :

16-bit word area

     

DT100

String1_Max

String_Parts[1,1]

String1

StringS[1]

DT101

String1_Act

String_Parts[1,2]

DT102

String1_Char12

String_Parts[1,3]

DT103

String1_Char34

String_Parts[1,4]

DT104

String2_Max

String_Parts[2,1]

String2

StringS[2]

DT105

String2_Act

String_Parts[2,2]

DT106

String2_Char12

String_Parts[2,3]

DT107

String2_Char34

String_Parts[2,4]

Anmerkung

Die Variablen String1, String2 und Strings müssen die gleiche Länge besitzen und am Ende der Deklaration stehen.

Allgemeine SDTs mit überlappenden Elementen sind in der FP tool library bereits vordefiniert.

Verwandte Themen

Letzte Änderung am: 2021-09-27Feedback zu dieser SeitePanasonic Hotline