SA0161:压缩结构中的未压缩结构
检测在打包结构中使用的未打包结构
理由:编译器通常将解包结构设置为一个地址,该地址允许对结构内的所有元素进行对齐访问。如果您在打包结构中创建此结构,则不再可能进行对齐访问。此外,访问解压缩结构中的元素可能会导致“未对齐异常”。
重要性:高
例 119. 例子
结构 structSingleDataRecord
已打包,但它包含未打包的结构 struct4Byte
和 struct9Byte
.
{attribute 'pack_mode' := '1'} TYPE structSingleDataRecord : STRUCT str9ByteData: struct9Byte; (* 9 BYTE *) str4ByteData: struct4Byte; (* 4 BYTE *) udi1: UDINT; udi2: UDINT; udi3: UDINT; usi4: USINT; END_STRUCT END_TYPE
(* 9 BYTE *) TYPE struct9Byte : STRUCT usiRotorSlots: USINT; (* 1 BYTE *) uiMaxCurrent: UINT; (* 2 BYTE *) usiVelocity: USINT; (* 1 BYTE *) uiAcceleration: UINT; (* 2 BYTE *) uiDeceleration: UINT; (* 2 BYTE *) usiDirectionChange: USINT; (* 1 BYTE *) END_STRUCT END_TYPE
TYPE struct4Byte : STRUCT //udiDummy : UDINT; rRealDummy : REAL; END_STRUCT END_TYPE
输出在 留言 看法:
SA0161:在打包结构“structSingleDataRecord”内声明未打包结构“struct9ByteData”
SA0161:在打包结构“structSingleDataRecord”内声明未打包结构“struct4ByteData”