Skip to main content

SA0006:来自多个任务的写访问

检测由多个任务写入的变量。

理由:在多个任务中写入的变量可能会意外更改其值。这可能会导致混乱的情况。如果同时将变量写入两个任务,则字符串变量(在某些 32 位系统上还有 64 位整数变量)甚至会达到不一致的状态。

例外:在特定情况下,可能需要多个任务编写一个变量。例如,使用信号量来确保访问不会导致不一致的状态。

重要性:高

PLCopen规则:CP10

18. 例子
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;

输出在 留言 看法:

  • sa_icon_message.png SA0006:对任务 MainTask、SubTask 中的“g_iTemp1”进行并发写入访问