楼主你发上来的程序应该两个都没有什么大的区别,结果都是会令你丢失脉冲的。觉得很诧异吧。
因为执行方向指令永远都滞后于脉冲信号。为何我肯定滞后呢?(尽管你放在前面)
原因是你的置位指令没有使用立即输出。所以这个输出一定是等到处理END指令的时候再输出的。而执行PLS指令的话却是执行完了之后(不等END)就开始发脉冲了。
那么刚向前发脉冲发了几个,这个时候遇到了END指令了,方向信号产生了反向作用,把刚发的几个脉冲抵消了……
本来方向信号Q0.2是0表示向前。现在要向后运动30个脉冲。那么执行的结果……
1.执行PLS指令,开始发脉冲了。电机【先】向前运动了3个脉冲。
2.这个时候执行END指令了。方向信号产生作用了。电机换向,向后运动。
3.脉冲再发3个后电机回到原来的位置。然后再发完剩下的24个脉冲。工作结束。
4.最终电机只向后运动了24个脉冲。而不是你想要的30个脉冲。
明白吗?
楼上。一般延时一个周期的话就是最好处理的了。不要多花一个计时器。
楼主你发上来的程序应该两个都没有什么大的区别,结果都是会令你丢失脉冲的。觉得很诧异吧。
因为执行方向指令永远都滞后于脉冲信号。为何我肯定滞后呢?(尽管你放在前面)
原因是你的置位指令没有使用立即输出。所以这个输出一定是等到处理END指令的时候再输出的。而执行PLS指令的话却是执行完了之后(不等END)就开始发脉冲了。
那么刚向前发脉冲发了几个,这个时候遇到了END指令了,方向信号产生了反向作用,把刚发的几个脉冲抵消了……
本来方向信号Q0.2是0表示向前。现在要向后运动30个脉冲。那么执行的结果……
1.执行PLS指令,开始发脉冲了。电机【先】向前运动了3个脉冲。
2.这个时候执行END指令了。方向信号产生作用了。电机换向,向后运动。
3.脉冲再发3个后电机回到原来的位置。然后再发完剩下的24个脉冲。工作结束。
4.最终电机只向后运动了24个脉冲。而不是你想要的30个脉冲。
明白吗?
楼上。一般延时一个周期的话就是最好处理的了。不要多花一个计时器。
内容的回复:谢谢,芳季前辈。即使是使用立即复位指令或置位指令,也会产生丢步,还是你的“一般延时一个周期的话就是最好处理的了。不要多花一个计时器。 ”是最好的选择,肯定不会丢步。