Attribute pack_mode
{attribute 'pack_mode' := '<value>'}
占位符 <value>
可以具有以下值:
|
相关的打包方法 |
---|---|
0 |
已分配 |
1 |
1 字节分配 |
2 |
2 字节分配 |
4 |
4 字节分配 |
8 |
8 字节分配 |
根据结构,各模式的内存映射可能没有区别。例如,包含 pack_mode = 4
的结构的内存分配可能与 pack_mode = 8
的内存分配一致。
如果将结构组合成了数组,则会在每个结构的末尾添加字节,以实现下一个结构的对齐。
'pack_mode'
不用于结构或对应于控制器处理器的对齐方式。
在某些控制器上,如 Modicon M262 Logic/Motion Controllers 和 Modicon M241 逻辑控制器,对结构使用非自然对齐方式可能导致在以下情况下出现异常:
访问未对齐的此类结构的元素时(例如,位于不可被 4 整除的地址上的 4 字节变量),使用 POINTER 变量。
使用
共享此类变量时,例如,从 OPC UA 客户端访问这些变量。警告 | |
---|---|
此外,请勿从库中暴露非自然对齐结构。
请勿在视图边框内部使用非自然对齐结构。而是应将这些结构复制到自然对齐的结构中,并将这些结构传递到视图框架。
{attribute 'pack_mode' := '1'}
TYPE myStruct:
STRUCT
Enable: BOOL;
Counter: INT;
MaxSize: BOOL;
MaxSizeReached: BOOL;
END_STRUCT
END_TYPE
数据类型为 myStruct
的变量被实例化为对齐。
如果其组件的地址 Enable
为 0x0100
,则组件 Counter
将跟随地址 0x0101
、MaxSize
位于 0x0103
以及 MaxSizeReached
位于 0x0104
。
当 pack_mode=2
时,可在 0x0102
上找到 Counter
,在 0x0104
上找到 MaxSize
,在 0x0106
上找到 MaxSizeReached
。