Skip to main content

SA0006 : Accès en écriture à partir de plusieurs tâches

Détecte les variables qui sont écrites par plusieurs tâches.

Justification : Une variable écrite dans plusieurs tâches peut changer de valeur de manière inattendue. Cela peut conduire à des situations confuses. Les variables de chaîne (et sur certains systèmes 32 bits également les variables entières 64 bits) peuvent même atteindre un état incohérent si la variable est écrite simultanément dans deux tâches.

Exception : Dans des cas particuliers, il peut être nécessaire pour plusieurs tâches d'écrire une variable. Par exemple, utilisez des sémaphores pour vous assurer que l'accès ne mène pas à un état incohérent.

Importance : Élevée

Règle PLCopen : CP10

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

Sortie dans le messages voir:

  • sa_icon_message.png SA0006 : accès en écriture simultané à 'g_iTemp1' dans les tâches MainTask, SubTask