发布于 2013-07-20 22:23:22
3楼
你对比较的两个值之中,其中有一个(或者两个)在前级计算中(或者双重赋值,或者地址重叠)赋上了一个不应该的值,导致比较触点发生比较错误。
这个前级的错误可能是一个周期的扫描次序产生的前后异步,可能是中断赋值与周期异步,可能是外部通讯设备改写产生的扫描异步,产生的瞬间错误,你没有发现。这些变更正好在一些过程计算当中发生了。使得后续的计算再次读取这个值的时候和前面的不同了,
例如一个算式a-a*0.99
先算乘后算减。当a从1变更为2的时候正好在算完了乘之后变更,会使得减法得到了一个异常大的值。当a从2变更为1的时候会使得减法得到了一个负值。这类型的错误无意中会导致一个周期或者扫描局部产生计算错误。
通常情况你总是觉得这个值不会有这些错误,但是实际上就是(有可能)错了。