SA0046: 可能使用未初始化的接口 检测使用前未初始化的接口的使用情况 理由:接口引用在使用之前应该检查<> 0。否则访问过程中可能会出现访问冲突。 重要性:高 例 114 . 例子 //Declaration of INTERFACE ITF and assigned METH2: METHOD METH2 : BOOL VAR_INPUT iInput2:INT; END_VAR //De
SA0160:递归调用 检测功能块的动作、方法和属性中的递归调用。还检测来自虚拟函数调用和接口调用的可能递归。 理由:递归会导致不确定的行为,因此是错误的来源。 重要性:中等 PLCopen规则:CP13 例 117 . 例子 下面的方法 Call 分配给功能块 FB_Test : FUNCTION_BLOCK FB_Test VAR bParameter: BOOL; END_VAR METHO
SA0115:数据类型为 UNION 的变量 检测 a 的声明 UNION 数据类型和变量声明 UNION 类型 理由:IEC 61131-3 标准不包括工会。该代码在没有联合的情况下更容易移植。 重要性:低 例 99 . 例子 TYPE A_UNION: UNION lrTemp : LREAL; liTemp : LINT; END_UNION END_TYPE PROGRAM PLC_PRG
SA0117:数据类型为 BIT 的变量 检测数据类型的变量声明 BIT (可能在结构定义内) 理由:IEC 61131-3 标准不包含数据类型 BIT 。该代码更容易移植,无需 BIT 。 重要性:低 例 100 . 例子 TYPE Struct1 : STRUCT bitVar : BIT; iVar : INT; bVar : BOOL; END_STRUCT END_TYPE 输出在 留言
SA0119:面向对象的特性 检测面向对象功能的使用,例如功能块声明 EXTENDS 和 IMPLEMENTS ,或属性和接口声明。当您编写旨在移植到其他符合 IEC 61131-3 的系统的代码时,此规则很有用。 理由:并非所有系统都支持面向对象编程。没有面向对象的代码更容易移植。 重要性:低 例 101 . 例子 //Function block extended by another and
SA0120:程序调用 检测程序调用 说明:根据IEC 61131-3标准,程序只能在任务配置中调用。当您不从其他位置调用程序时,代码更容易移植。 重要性:低 例 102 . 例子 PROGRAM prog_control VAR END_VAR ; PROGRAM PLC_PRG VAR END_VAR prog_control(); 输出在 留言 看法: SA0120:不允许程序调用“prg_
SA0148:异常位访问 -strict 检测未对位域数据类型进行的位访问( BYTE , WORD , DWORD , 和 LWORD )。 IEC 61131-3 标准只允许对位域数据类型进行位访问。但是,那 CODESYS 编译器还允许对无符号数据类型进行位访问。 重要性:低 例 108 . 例子 PROGRAM PLC_PRG VAR iTemp1 : INT; diTemp3 : DIN
External Libraries ¶ Like any normal CODESYS library, an external CODESYS library consists of reusable library elements. The difference to normal CODESYS libraries is that some of these library elemen
Working with external optional Libraries ¶ Optional external libraries serve to make optional runtime system components available in IEC. Optional means here that a component cannot be integrated in a
Error Handling ¶ Rule #6: Implement an user friendly Error Handling ( Required ) Return only error codes which are documented within your library. Never simply return the original error code from sub