SA0038: Accesso in lettura alla variabile di uscitaPermalink

Rileva le variabili di output (VAR_OUTPUT) a cui si accede con autorizzazione di lettura all'interno del POU.

Giustificazione: Secondo la norma IEC 61131-3, è vietato leggere un'uscita all'interno di una POU. Questo indica che l'output non viene utilizzato solo come output, ma anche come variabile temporanea per i risultati intermedi. Questo tipo di doppio uso dovrebbe essere evitato.

Importanza: Basso

Esempio

VAR_GLOBAL
	g_xGlob AT %QX0.0 : BOOL ; 
	g_iGlob AT %QW1 : INT ; 		
END_VAR

PROGRAM PLC_PRG
VAR_OUTPUT
	xVarOut1:BOOL;
	xVarOut2:INT;
	xVarOut3:INT;
END_VAR
VAR
	iCondition : INT;
END_VAR

iCondition := iCondition + INT#1;
CASE iCondition OF
	INT#1:
		xVarOut1 := g_xGlob;
		xVarOut2 := g_iGlob;
	INT#2:
		xVarOut3 := xVarOut2;  // SA0038
	ELSE     
		xVarOut1 := FALSE;	
		g_xGlob := xVarOut1;	 // SA0038
		xVarOut2 := INT#0;
		xVarOut3 := INT#-1;
END_CASE

--> SA0038: Read access to output variable 'xVarOUT2'
--> SA0038: Read access to output variable 'xVarOUT1'