Attribute pack_mode

Überblick

Das pragma {attribute 'pack_mode'} definiert den Modus, in dem eine Datenstruktur während der Zuweisung gebündelt wird. Das Attribut muss oberhalb der Datenstruktur eingefügt werden. Es wirkt sich auf das Packen der gesamten Struktur aus.

HINWEIS: Wählen Sie die Option Kompatibilitätslayout im Editor der Symbolkonfiguration nicht aus, wenn das pragma {attribute 'pack_mode'} im Programmiercode verwendet wird.

Syntax

{attribute 'pack_mode' := '<value>'}

Der Platzhalter <value> kann die folgenden Werte haben:

'pack_mode'

Verknüpfte Packmethode

0

Ausrichtung

1

1-Byte-Ausrichtung

2

2-Byte-Ausrichtung

4

4-Byte-Ausrichtung

8

8-Byte-Ausrichtung

Je nach der Struktur besteht unter Umständen kein Unterschied in der Speicherzuordnung der einzelnen Modi. Beispielsweise die Speicherzuordnung einer Struktur mit pack_mode = 4 kann derjenigen von pack_mode = 8 entsprechen.

Wenn Strukturen zu Arrays zusammengefügt werden, werden am Ende jeder Struktur Bytes hinzugefügt, um die Ausrichtung der nächsten Struktur zu erreichen.

HINWEIS: Wir sprechen von „natürlicher“ Ausrichtung, wenn 'pack_mode' nicht für eine Struktur verwendet wird oder der Ausrichtung des Prozessors der Steuerung entspricht.

Bei einigen Steuerungen, z. B. Modicon M262 Logic/Motion Controllers und Modicon M241 Logic Controller, kann die Verwendung einer nicht natürlichen Ausrichtung für Strukturen in den folgenden Fällen zu einer Ausnahme führen:

  • Wenn auf Elemente solcher Strukturen, die nicht ausgerichtet sind (z. B. eine 4-Byte-Variable an einer Adresse, die nicht durch 4 teilbar ist), mit einer POINTER-Variable zugegriffen wird.

  • Bei der Freigabe solcher Variablen über die Symbolkonfiguration, z. B. für den Zugriff von einem OPC UA-Client aus.

 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
Verwenden Sie „natürlich“ ausgerichtete Variablen für Steuerungen der Baureihe Modicon M262 und M241.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.

Legen Sie außerdem nicht natürlich ausgerichtete Strukturen aus Bibliotheken nicht frei.

Verwenden Sie keine nicht natürlich ausgerichteten Strukturen innerhalb von Visualisierungsframes. Kopieren Sie stattdessen diese Strukturen in natürlich ausgerichtete Strukturen und übergeben Sie sie an Visualisierungsframes.

Beispiel

{attribute 'pack_mode' := '1'}
TYPE myStruct:
STRUCT
 Enable: BOOL;
 Counter: INT;
 MaxSize: BOOL;
 MaxSizeReached: BOOL;
END_STRUCT
END_TYPE

Eine Variable des Datentyps myStruct wird instanziiert ausgerichtet.

Wenn die Adresse der Enable-Komponente 0x0100 ist, dann folgt die Komponente Counter an Adresse 0x0101, MaxSize an 0x0103 und MaxSizeReached an 0x0104.

Mit pack_mode=2 finden Sie Counter an 0x0102, MaxSize an 0x0104 und MaxSizeReached an 0x0106.