Skip to main content

SA0004: Mehrfacher Schreibzugriff auf Ausgang

Ermittelt Ausgänge, die an mehr als einer Position geschrieben werden.

Begründung: Die Wartbarkeit leidet, wenn ein Ausgang an verschiedenen Stellen im Code geschrieben wird. Es ist dann unklar, welcher Schreibzugriff derjenige ist, der tatsächlich Auswirkungen im Prozess hat. Gute Praxis ist es, die Berechnung der Ausgangsvariablen in Hilfsvariablen durchzuführen und an einer Stelle am Ende des Zyklus den berechneten Wert zuzuweisen.

Wichtigkeit: Hoch

PLCopen-Regel: CP12

Tipp

Kein Fehler wird ausgegeben, wenn auf eine Ausgabevariable (VAR_IN_OUT) in verschiedenen Zweigen von IF oder CASE Anweisungen geschrieben wird.

Diese Regel kann nicht über ein Pragma abgeschaltet werden.

Beispiel 17. Beispiel
VAR_GLOBAL
    g_xVar AT %QX0.0 : BOOL ;
    g_iTest AT %QW0 : INT ;
END_VAR
PROGRAM PLC_PRG
IF g_iCondition < INT#0 THEN
    g_xVar := TRUE;
    g_iTest := INT#12;
END_IF

CASE g_iCondition OF
    INT#1:
        g_xVar := FALSE;
    INT#2:
        g_iTest := INT#11;
    ELSE
        g_xVar := TRUE;
        g_iTest := INT#9;
END_CASE

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0004: Mehrfacher Schreibzugriff auf Ausgang '%QX0.0'

  • sa_icon_message.png SA0004: Mehrfacher Schreibzugriff auf Ausgang '%QW0'