Skip to main content

SA0006: Acceso de escritura desde varias tareas

Detecta variables en las que escribe más de una tarea.

Justificación: Una variable que se escribe en múltiples tareas puede cambiar su valor inesperadamente. Esto puede conducir a situaciones confusas. Las variables de cadena (y en algunos sistemas de 32 bits también las variables enteras de 64 bits) pueden incluso alcanzar un estado inconsistente si la variable se escribe en dos tareas simultáneamente.

Excepción: en casos específicos, puede ser necesario que varias tareas escriban una variable. Por ejemplo, utilice semáforos para asegurarse de que el acceso no conduzca a un estado incoherente.

Importancia: Alta

Regla PLCopen: CP10

ejemplo 18. Ejemplo
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;

Salida en el Mensajes vista:

  • sa_icon_message.png SA0006: Acceso de escritura simultáneo a 'g_iTemp1' en Tareas MainTask, SubTask