Attribut 'pack_mode'

Dieses Attribut-Pragma legt fest, wie eine Datenstruktur während der Allozierung gepackt wird. Das Attribut muss oberhalb der Datenstruktur eingefügt werden und wirkt sich auf das Packen der gesamten Struktur aus.

Syntax: {attribute 'pack_mode' := '<Value>'}

Beispiel

{attribute 'pack_mode' := '0'}
TYPE str_Test :
STRUCT
      byTest1    : BYTE;
      iTest      : DINT;
      byTest2    : BYTE;
      nValue     : INT;
END_STRUCT
END_TYPE

In diesem Beispiel wurde der Pack-Modus auf 0 gestellt. Wenn Sie die Größe der Struktur im Beispiel mit SIZEOF bestimmen, dann erhalten Sie den Wert 8.

1 Byte + 4 Byte (DINT) + 1 Byte + 2 Byte (INT) = 8 Byte

Wenn Sie den Pack-Modus auf 2 stellen (WordAlignment), erhalten Sie den Wert 10, weil nach jedem Byte noch ein Füllbyte eingefügt wird. Wenn Sie den Pack-Modus auf 4 stellen (DWordAlignment), dann erhalten Sie den Wert 12, weil diesmal nach jedem Byte drei Füllbytes eingefügt werden. Beim einem Pack-Modus von 8 (LWordAlignment) verändert sich nichts, da in dem Beispiel keine Variablen verwendet werden, die 8 Byte benötigen.

Der CX7031 arbeitet mit dem DWordAlignment (Pack-Modus 4), wenn Sie das Attribut nicht verwenden.

Weitere Informationen zum Attribut 'pack_mode' finden Sie unter: Attribut 'pack_mode'