SA0037: Schreibzugriff auf Eingabevariable
Ermittelt Eingabevariablen (VAR_INPUT), auf die innerhalb des Bausteins schreibend zugegriffen wird.
Begründung: Nach der Norm IEC 61131-3 darf eine Eingabevariable nicht innerhalb eines Bausteins verändert werden. Ein solcher Zugriff ist außerdem eine Fehlerquelle und macht den Code schlecht wartbar. Es weißt daraufhin, dass eine Variable als Eingang und gleichzeitig als Hilfsvariable verwendet wird. Eine solche Doppelverwendung sollte vermieden werden.
Wichtigkeit: Mittel
Beispiel 47. Beispiel
VAR_GLOBAL
g_xGlob AT %QX0.0 : BOOL;
END_VARPROGRAM PLC_PRG
VAR_INPUT
xVarIn1 : BOOL;
xVarIn2 : BOOL;
END_VAR
VAR
iCondition : INT;
END_VAR
iCondition := iCondition + INT#1;
CASE iCondition OF
INT#1:
g_xGlob := xVarIn1;
INT#2:
g_xGlob := xVarIn2;
ELSE
g_xGlob := FALSE;
xVarIn1 := FALSE; // SA0037
END_CASEAusgabe unter Ansicht Meldungen:
SA0037: Schreibzugriff auf Eingabevariable 'xVarIn1'