Skip to main content

SA0018:异常位访问

检测对有符号变量的位访问。但是,IEC 61131-3 标准只允许对位域进行位访问和位移操作。另请参阅严格的规则 SA0147SA0148.

另请参阅严格规则 SA0147SA0148

理由:有符号数据类型不应用作位字段,反之亦然。 IEC 61131-3 标准不提供这种访问,因此您在编写可移植代码时应遵守此规则。

重要性:中等

提示

标志枚举的例外:当一个枚举通过 {attribute 'flags'} pragma 属性 SA0018 不发出错误的位访问与 OR, AND 或者 NOT 运营商。

31. 例子
PROGRAM PLC_PRG
VAR
    iTemp1 : INT;
    diTemp3 : DINT;
    uliTemp4 : ULINT;
    siTemp5 : SINT;
    usiTemp6 : USINT;
    byTemp2 : BYTE;
END_VAR
iTemp1.3 := TRUE;    //SA0018
diTemp3.4 := TRUE;    //SA0018
uliTemp4.18 := FALSE;    //no error because this is an unsigned data type
siTemp5.2 := FALSE;    //SA0018
usiTemp6.3 := TRUE;    //no error because this is an unsigned data type
byTemp2.5 := FALSE;    //no error because the byte is a bitfield

输出在 留言 看法:

  • sa_icon_message.png SA0018:异常位访问