Skip to main content

SA0167:临时功能块实例

检查检测声明为临时变量的功能块实例。这会影响在方法或函数中声明的实例,或者 VAR_TEMP,因此在每个处理周期或每个 POU 调用中重新初始化。

理由:

  • 功能块的状态通常在多个 PLC 周期内维持。堆栈上的实例仅在函数调用期间存在。因此,创建实例作为临时变量几乎没有意义。

  • 其次,功能块实例通常很大,并且需要大量堆栈空间(通常仅限于控制器)。

  • 第三,功能块的初始化以及通常的调度可能需要很长时间。

重要性:中等

125. 例子
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;    // SA0167
END_VAR

输出在 留言 看法:

  • sa_icon_message.png SA0167:临时功能块实例:“methafb”