Skip to main content

SA0006: accesso in scrittura da più attività

Determina le variabili in cui vengono scritte più attività.

Motivo: una variabile scritta in più attività può cambiare il proprio valore in modo imprevisto. Questo può portare a situazioni confuse. Le variabili stringa e su alcuni sistemi a 32 bit anche le variabili intere a 64 bit possono persino ottenere uno stato incoerente se la variabile viene scritta in due attività contemporaneamente.

Eccezione: in alcuni casi può essere necessario che più attività scrivano una variabile. Quindi assicurati, ad esempio utilizzando i semafori, che l'accesso non porti a uno stato incoerente.

Importanza: Alta

Regola PLCopen: CP10

Esempio 18. 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;

Uscita in Messaggi vista:

  • sa_icon_message.png SA0006: Accesso in scrittura simultaneo a 'g_iTemp1' in Tasks MainTask, SubTask