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
输出在 留言 看法:
SA0167:临时功能块实例:“methafb”