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;
输出在 留言 看法:
SA0006:对任务 MainTask、SubTask 中的“g_iTemp1”进行并发写入访问