发布于 2011-05-18 11:18:36
9楼
我试着这样描述100毫秒的定时机制:
时间如流水绵延不绝,流入只能装0.1秒的桶内,而CPU每个扫描周期都到取水处看看装够了多少桶,然后取走并据此决定已经启动的计时器当前计时增加多少桶,那个没装够1桶水的桶让它在那儿接着装,如果扫描周期很长可能就有几个桶在那儿装水反正一滴水也不能漏,然而定时器定时条件产生上沿的当前周期CPU是将当前计时值清0的,要下一个扫描周期执行定时指令时才会累计当前的那几桶水.也许某个定时器很幸运当它被启动后的第二个扫描周期CPU就取到了一桶水这样它只跑两个扫描周期就计时1,虽然它成功偷懒少跑了将近0.1秒却给我们带来了麻烦,0.1秒的误差有时显得太长了!为了保证足够的定时延迟咱只好给这个偷懒的定时器预置值多加1了.
再回过头来看看通过自身常闭触头做定时条件的定时器会发生什么情况:第N个扫描周期计时到CV值>=预置值,N+1周期定时器条件OFF不计时,N+2周期定时器条件ON产生上沿但不计时,N+3周期开始正常计时,如此循环.在时间流逝的过程中我们原本期望的时钟脉冲需要连续不断计时,这里却有两个扫描周期处于不计时的状态,这正是我第二张图片现象的原因.
现在觉得文字工夫不行真是痛苦,不打字了
工控爱好者