检测写入一个以上位置的输出
理由当输出写在代码的不同位置时,可维护性就会降低。那么,就无法确定哪个写入访问才是真正对进程产生影响的访问。好的做法是在辅助变量中计算输出变量,并在循环结束时将计算值分配到一个位置。
重要性:高
PLCopen 规则:CP12
在IF
和CASE
语句的不同分支中写入输出变量 (VAR_IN_OUT
) 时,不会出错。
pragma 不能停用此规则。
示例
VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW0 : INT ; END_VAR PROGRAM PLC_PRG IF g_iCondition < INT#0 THEN g_xVar := TRUE; g_iTest := INT#12; END_IF CASE g_iCondition OF INT#1: g_xVar := FALSE; INT#2: g_iTest := INT#11; ELSE g_xVar := TRUE; g_iTest := INT#9; END_CASE --> SA0004: Multiple write access on output '%QX0.0' --> SA0004: Multiple write access on output '%QW0'