Skip to main content

SA0038 : Accès en lecture à la variable de sortie

Détecte les variables de sortie (VAR_OUTPUT) auxquels on accède avec une autorisation de lecture dans le POU

Justification : Selon la norme CEI 61131-3, il est interdit de lire une sortie au sein d'une POU. Ceci indique que la sortie n'est pas seulement utilisée comme sortie mais aussi comme variable temporaire pour les résultats intermédiaires. Ce type de double usage doit être évité.

Importance : Faible

Exemple 48. Exemple
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

Sortie dans le messages voir:

  • sa_icon_message.png SA0038 : Accès en lecture à la variable de sortie 'xVarOUT2'

  • sa_icon_message.png SA0026 : SA0038 : Accès en lecture à la variable de sortie 'xVarOUT1'