SA0006: Schreibzugriff aus mehreren Tasks
Ermittelt Variablen, auf die von mehr als einer Task geschrieben werden.
Begründung: Eine Variable, die in mehreren Tasks geschrieben wird, kann unter Umständen ihren Wert unerwartet ändern. Das kann zu verwirrenden Situationen führen. Stringvariablen und auf einigen 32-Bit-Systemen auch 64-Bit-Integer-Variablen können sogar einen inkonsistenten Zustand bekommen, wenn die Variable gleichzeitig in zwei Tasks geschrieben wird.
Ausnahme: In bestimmten Fällen kann es nötig sein, dass mehrere Tasks eine Variable schreiben. Stellen Sie dann sicher, beispielsweise durch die Verwendung von Semaphoren, dass der Zugriff nicht zu einem inkonsistenten Zustand führt.
Wichtigkeit: Hoch
PLCopen-Regel: CP10
VAR_GLOBAL g_iTemp1: INT; END_VAR
PROGRAM PLC_PRG // Controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2;
PROGRAM PLC_PRG_1 //Controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3;
Ausgabe unter Ansicht Meldungen:
SA0006: Gleichzeitiger Schreibzugriff auf 'g_iTemp1' in Tasks MainTask, SubTask