Skip to main content

SA0038: Lesezugriff auf Ausgabevariable

Ermittelt Ausgangsvariablen (VAR_OUTPUT), auf die innerhalb der Bausteins lesend zugegriffen wird.

Begründung: Nach 61131-3 ist es verboten, einen Ausgang innerhalb eines Bausteins zu lesen. Es weist darauf hin, dass der Ausgang nicht nur als Ausgang sondern gleichzeitig als temporäre Variable für Zwischenergebnisse verwendet wird. Eine solche Doppelverwendung sollte vermieden werden.

Wichtigkeit: Niedrig

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

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0038: Lesezugriff auf Ausgangsvariable 'xVarOUT2'

  • sa_icon_message.png SA0026: SA0038: Lesezugriff auf Ausgangsvariable 'xVarOUT1'