Attribute pack_mode
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.
{attribute 'pack_mode'}
im Programmiercode verwendet wird.
{attribute 'pack_mode' := '<value>'}
Der Platzhalter <value>
kann die folgenden Werte haben:
|
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.
'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
, z. B. für den Zugriff von einem OPC UA-Client aus.WARNUNG | |
---|---|
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.
{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
.