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_VARPROGRAM PLC_PRG
VAR_OUTPUT
xVarOut1:BOOL;
xVarOut2:INT;
xVarOut3:INT;
END_VAR
VAR
iCondition : INT;
END_VARiCondition := 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_CASEAusgabe unter Ansicht Meldungen:
SA0038: Lesezugriff auf Ausgangsvariable 'xVarOUT2'
SA0026: SA0038: Lesezugriff auf Ausgangsvariable 'xVarOUT1'