EcoStruxure Machine Expert 中的 意味着,在可以将项目下载到目标系统而不发生生成错误之前,将搜索源代码是否与特定编码标准存在偏差。为此,可以在项目设置中配置要遵循的一组规则。在每次生成代码时均将根据这些定义规则执行自动验证。
分析结果作为错误显示在
视图中,并添加有前缀 。(SA0033): |
检测已编译的程序中已声明但未使用的变量。 |
(SA0028): |
检测两个或更多变量向相同内存位置的分配。
比如,如果存在以下声明,则会出现这种情况: |
(SA0006): |
检测由一个以上任务写入的变量。 |
示例 (SA0006):
FUNCTION_BLOCK ADD_FB
g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG //controlled by MainTask
g_iTemp1 := g_iTemp1 + INT#2;
g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //controlled by SubTask
g_iTemp1 := g_iTemp1 - INT#3;
g_xTemp2 := g_iTemp1 < INT#-10;
(SA0004): |
检测在一个以上位置被写入的输出。 |
VAR_GLOBAL
g_xVar AT %QX0.0 : BOOL ;
g_iTest AT %QW0 : INT ;
END_VAR
PROGRAM PLC_PRG
IF iCondition < INT#0 THEN
g_xVar := TRUE;
g_iTest := INT#12;
END_IF
CASE iCondition OF
INT#1:
g_xVar := FALSE;
INT#2:
g_iTest := INT#11;
ELSE
g_xVar := TRUE;
g_iTest := INT#9;
END_CASE
(SA0027): |
检测变量或对象 (POU) 的名称/标识符在项目范围内的多次使用。 可能检测到以下情况:
|
示例 (SA0027):
PROGRAM PLC_PRG
VAR
ton : INT; // error SA0027
END_VAR
Standard.library 包含在项目中,并提供功能块 TON
,从而导致名称多次使用。
示例 (SA0167):
PROGRAM PLC_PRG
VAR
END_VAR
VAR_TEMP
yafb: AFB;
END_VAR
FUNCTION Fun : INT
VAR_INPUT
END_VAR
VAR
funafb: AFB;
END_VAR
METHOD METH : INT
VAR_INPUT
END_VAR
VAR
methafb: AFB;
END_VAR