SA0006: Accesso in scrittura da più attivitàPermalink

Rileva le variabili che sono scritte da più di un task

Giustificazione: Una variabile scritta in più task può cambiare inaspettatamente il suo valore. Questo può portare a situazioni di confusione. Le variabili stringa (e in alcuni sistemi a 32 bit anche quelle intere a 64 bit) possono persino raggiungere uno stato incoerente se la variabile viene scritta su due task contemporaneamente.

Eccezione: In casi specifici, può essere necessario che più compiti scrivano una variabile. Ad esempio, utilizzare le semaforizzazioni per assicurarsi che l'accesso non porti a uno stato incoerente.

Importanza: Alto

Regola PLCopen: CP10

Esempio

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;


--> SA0006: Concurrent write access to 'g_iTemp1' in Tasks MainTask, SubTask