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.
VAR_GLOBAL
g_xVar AT %QX0.0 : BOOL ;
g_iTest AT %QW0 : INT ;
END_VARPROGRAM 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:
SA0004: Mehrfacher Schreibzugriff auf Ausgang '%QX0.0'
SA0004: Mehrfacher Schreibzugriff auf Ausgang '%QW0'