Skip to main content

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:

  • sa_icon_message.png SA0037: Schreibzugriff auf Eingabevariable 'xVarIn1'