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_VAR
PROGRAM 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_CASE
Ausgabe unter Ansicht Meldungen:
SA0037: Schreibzugriff auf Eingabevariable 'xVarIn1'