SA0038: Acceso de lectura a la variable de salida
Detecta variables de salida (VAR_OUTPUT
) a los que se accede con permiso de lectura dentro de la POU
Justificación: Según la norma IEC 61131-3, está prohibido leer una salida dentro de una POU. Esta es una indicación de que el producto no solo se utiliza como producto, sino también como una variable temporal para resultados intermedios. Debe evitarse este tipo de doble uso.
Importancia: Baja
ejemplo 48. Ejemplo
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
Salida en el Mensajes vista:
SA0038: Acceso de lectura a la variable de salida 'xVarOUT2'
SA0026: SA0038: Acceso de lectura a la variable de salida 'xVarOUT1'