SA0168:不必要的分配 检测对代码没有任何影响的变量的赋值。 理由:当值被多次赋值给一个变量而没有在赋值之间评估变量时,第一次赋值对程序没有任何影响。 重要性:低 例 125 . 例子 PROGRAM PLC_PRG VAR dwVal1 : DWORD; dwVal2 : DWORD; END_VAR // unnecessary assignment dwVal1 := 1; IF dwV
SA0171:枚举应具有“strict”属性 检测未提供的枚举声明 {attribute 'strict'} 属性。 理由: {attribute 'strict'} 如果代码违反了严格的枚举编程规则,属性会导致编译器错误。默认情况下,创建新枚举时,声明会自动分配 'strict' 属性。 有关更多信息,请参阅: 数据类型:枚举 重要性:高 例 128 . 例子 TYPE COLOR : ( re
SA0040:可能被零除 检测可能被零除的代码位置 理由:除以 0 导致错误。应始终首先检查要除法的变量是否为 0。 重要性:高 例 48 . 例子 VAR_GLOBAL g_iVar AT %QW1 : INT; END_VAR PROGRAM PLC_PRG VAR iCounter : INT; iSumme:INT; iMid:INT; iVal1:INT := INT#2; iVal2:
SA0121:缺少 VAR_EXTERNAL 声明 检测功能块中全局变量的使用,而无需将其声明为 VAR_EXTERNAL 理由:根据 IEC 61131-3 标准,只有通过显式导入才允许访问全局变量 VAR_EXTERNAL 宣言。 重要性:低 PLCopen规则:CP18 例 103 . 例子 VAR_GLOBAL iGlob1 : INT; END_VAR PROGRAM PLC_PRG V
SA0122:数组索引定义为表达式 检测数组索引声明中表达式的使用 理由:并非所有系统都允许将表达式作为数组限制。 重要性:低 例 105 . 例子 PROGRAM PLC_PRG VAR CONSTANT c_iValue : INT := INT#15; END_VAR VAR arr : ARRAY [0..c_iValue + 1] OF INT; END_VAR 输出在 留言 看法: S
SA0123:INI、ADR 或 BITADR 的用法 检测使用 CODESYS Static Analysis - 特定的运算符 INI , ADR , 和 BITADR . 理由: CODESYS - 特定的运算符会阻止代码的可移植性。 重要性:低 例 106 . 例子 PROGRAM PLC_PRG VAR uiTemp : UINT; TempVarInFUNC : DWORD; END_
CODESYS Development System
属性:conditionalshow_all_locals pragma 的效果是所有 所有本地 用 pragma 修饰的库 POU 的变量对应用程序程序员是隐藏的。集成编译库的 POU <library name>.compiled-library 可以调用,但变量在 Basic Level 用户界面。 . 影响功能: 图书馆管理 调试 输入助手 “列出组件”功能 监控 符号配置 这在您开发库时
CODESYS Development System
属性:noinit 该 pragma 应用于不应被隐式初始化的变量。 句法 : {attribute 'no_init'} {attribute 'no-init'} {attribute 'noinit'} 插入位置:声明部分相关变量的声明行上方的行。 例 259 . 例子 PROGRAM PLC_PRG VAR iA : INT; {attribute 'no_init'} iB : INT;
CODESYS Development System
属性:no_virtual_actions pragma 用于派生自 SFC 中实现的功能块的功能块,并使用该基类的基本 SFC 序列。从中调用的操作表现出与方法相同的虚拟行为。这意味着基类中操作的实现可以由具有自己特定实现的派生类替换。 如果将 pragma 应用于基类,则其操作会受到保护以防止重载。 句法 : {attribute 'no_virtual_actions'} 插入位置:功能块声
CODESYS Development System
编译器错误 C0243 信息 : 签名中使用的名称与对象名称不同 可能的错误原因 :对象名称与代码中使用的名称不同。 错误修正 : 确保名称相同。 例 435 . 错误示例: 本节内容如下 :