Rileva le uscite che vengono scritte in più di una posizione
Giustificazione: La manutenibilità si degrada quando un output viene scritto in posizioni diverse del codice. Non si sa quale sia l'accesso in scrittura che ha effettivamente un effetto sul processo. Una buona pratica consiste nel calcolare le variabili di uscita in variabili ausiliarie e assegnare il valore calcolato in una posizione alla fine del ciclo.
Importanza: Alto
Regola PLCopen: CP12
Non viene emesso un errore quando una variabile di output (VAR_IN_OUT) viene scritta in rami diversi delle istruzioni IF e CASE.
Un pragma non può disattivare questa regola.
Esempio
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'