SA0081:上边界不是常数
检测到 FOR 未使用常量值定义上限的语句
理由:如果循环的上限是一个变量值,那么就不再可能看到循环执行的频率。这可能会导致运行时出现严重问题。最坏的情况是无限循环。
重要性:高
例 86. 例子
PROGRAM PLC_PRG
VAR
i:INT;
iBorder1: INT := 10;
iBorder2: INT := 10;
iCounter: INT;
END_VAR
VAR CONSTANT
ciBorder:INT := 10;
END_VAR
FOR i:=0 TO 10 DO //OK
iCounter := i;
END_FOR
FOR i:=0 TO ciBorder DO // OK
iCounter := i;
END_FOR
FOR i:=0 TO iBorder1 DO // SA0081
iCounter := i;
END_FOR
FOR i:=0 TO iBorder2 DO // SA0081
iCounter := i;
IF iCounter = 10 THEN
iBorder2 := 50;
END_IF
END_FOR
输出在 留言 看法:
SA0081:for循环的上边界必须是常量值