Attribute pack_mode

Descripción general

El pragma {attribute 'pack_mode'} define el modo en que se agrupa una estructura de datos mientras se asigna. Defina el atributo en la parte superior de una estructura de datos. Influye en la agrupación de toda la estructura.

NOTA: No seleccione la opción Diseño de compatibilidad en el editor de Configuración de símbolos si se utiliza el pragma {attribute 'pack_mode'} en el código de programación.

Sintaxis

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

El marcador de posición <value> puede contener los siguientes valores:

'pack_mode'

Método de agrupación asociado

0

Adaptado

1

Adaptado a 1 byte

2

Adaptado a 2 byte

4

Adaptado a 4 bytes

8

Adaptado a 8 byte

En función de la estructura, es posible que no exista diferencia alguna en la asignación de memoria de las diferentes modalidades. Por ejemplo, la asignación de memoria de una estructura con pack_mode = 4 puede corresponder a la de pack_mode = 8.

Si las estructuras se combinan en matrices, se añadirán bytes al final de cada estructura para conseguir que se adapte la estructura siguiente.

NOTA: Nos referimos a la alineación "natural" cuando 'pack_mode' no se utiliza para una estructura o corresponde a la alineación del procesador del controlador.

En algunos controladores, como Modicon M262 Logic/Motion Controllers y Controladores lógicos Modicon M241, el uso de una alineación no natural para las estructuras puede dar lugar a una excepción en los siguientes casos:

  • Al tener acceso a elementos de estructuras no alineadas (por ejemplo, una variable de 4 bytes ubicada en una dirección no divisible por 4) con un POINTER variable.

  • Al compartir dichas variables mediante la Configuración de símbolos, por ejemplo, para acceder a ellas desde un cliente OPC UA.

 ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
Use variables alineadas "naturalmente" para controladores Modicon M262 y M241.
Si no se siguen estas instrucciones, pueden producirse lesiones graves, muerte o daños en el equipo.

No exponga tampoco estructuras alineadas de forma no natural procedentes de bibliotecas.

No utilice estructuras alineadas de forma no natural dentro de las tramas de visualización. En su lugar, copie esas estructuras en estructuras alineadas de forma natural y transmita esas estructuras a las tramas de visualización.

Ejemplo

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

Se crea una instancia alineada de la variable de tipo de datos myStruct.

Si la dirección de su componente Enable es 0x0100, el componente Counter seguirá la dirección 0x0101, MaxSize la dirección 0x0103 y MaxSizeReached la dirección 0x0104.

Con pack_mode=2, Counter se encontraría en 0x0102, MaxSize en 0x0104 y MaxSizeReached en 0x0106.