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
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
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 --> SA0004: Mehrfacher Schreibzugriff auf Ausgang '%QX0.0' --> SA0004: Mehrfacher Schreibzugriff auf Ausgang '%QW0'