检测由多个任务写入的变量
理由在多个任务中写入的变量可能会意外改变其值。这可能会导致混乱的局面。如果变量同时写入两个任务,字符串变量(在某些 32 位系统中也包括 64 位整数变量)甚至会出现不一致的状态。
例外情况:在特定情况下,可能需要多个任务编写一个变量。例如,使用 semaphores 来确保访问不会导致不一致的状态。
重要性:高
PLCopen 规则:CP10
示例
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