Skip to main content

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

Beispiel 18. Beispiel
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:

  • sa_icon_message.png SA0006: Gleichzeitiger Schreibzugriff auf 'g_iTemp1' in Tasks MainTask, SubTask