SA0004: Accesso multiplo in scrittura sull'uscitaPermalink

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'