发布于 2006-11-14 21:54:48
0楼
你是在主程序或他调用的子程序中进行比较的吧?
这就是因为你使用的高速计数,他是独立于程序的扫描周期的。一个扫描周期可能会有很多个脉冲进来,假设脉冲是10k,扫描周期是1ms,那每个扫描周期会增加10个脉冲,也许某次比较时CV=99,并不停车,下一次检测时CV就是109了,这时发出了停车指令。而另外一次,比较时CV刚好是101,则马上就发出了停车指令。两次的实际发出停车指令时的脉冲数本身就是相差的。
你可以需要停车的脉冲数作为预置值PV,设置PV=CV的中断,在中断程序中用直接输出智力进行停车