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:
SA0038: Lesezugriff auf Ausgangsvariable 'xVarOUT2'
SA0026: SA0038: Lesezugriff auf Ausgangsvariable 'xVarOUT1'