脉冲信号和方向信号的先后顺序问题 点击:3009 | 回复:4



wangyang8765

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 34回
  • 年度积分:0
  • 历史总积分:351
  • 注册:2010年5月14日
发表于:2011-02-22 20:06:47
楼主
请问:两幅图的区别有实际意义吗,Q0.2做方向信号用;
置位或复位Q0.2和调用脉冲输出子程序(图的右半部分)执行的先后顺序有实质性的意义吗?因为CPU为继电器型做不了脉冲的实际测试,请各位发表一下看法!



welfare87

  • 精华:0帖
  • 求助:4帖
  • 帖子:44帖 | 2827回
  • 年度积分:0
  • 历史总积分:25853
  • 注册:2009年2月20日
发表于:2011-02-22 20:52:58
1楼
我一般都是切换方向后延时几毫秒再发脉冲

wangyang8765

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 34回
  • 年度积分:0
  • 历史总积分:351
  • 注册:2010年5月14日
发表于:2011-02-22 21:22:57
2楼
回复内容:
对:welfare87 关于我一般都是切换方向后延时几毫秒再发脉冲 内容的回复:
welfare87的意思就是有实际区别,而且还要可以的加点延迟;问对Q0.2做立即置位或复位相对对其仅作置位或复位要好呢,你的意思呢,welfare87?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-02-22 22:28:08
3楼

楼主你发上来的程序应该两个都没有什么大的区别,结果都是会令你丢失脉冲的。觉得很诧异吧。

因为执行方向指令永远都滞后于脉冲信号。为何我肯定滞后呢?(尽管你放在前面)

原因是你的置位指令没有使用立即输出。所以这个输出一定是等到处理END指令的时候再输出的。而执行PLS指令的话却是执行完了之后(不等END)就开始发脉冲了。

那么刚向前发脉冲发了几个,这个时候遇到了END指令了,方向信号产生了反向作用,把刚发的几个脉冲抵消了……

本来方向信号Q0.2是0表示向前。现在要向后运动30个脉冲。那么执行的结果……

1.执行PLS指令,开始发脉冲了。电机【先】向前运动了3个脉冲。

2.这个时候执行END指令了。方向信号产生作用了。电机换向,向后运动。

3.脉冲再发3个后电机回到原来的位置。然后再发完剩下的24个脉冲。工作结束。

4.最终电机只向后运动了24个脉冲。而不是你想要的30个脉冲。

明白吗?

楼上。一般延时一个周期的话就是最好处理的了。不要多花一个计时器。

wangyang8765

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 34回
  • 年度积分:0
  • 历史总积分:351
  • 注册:2010年5月14日
发表于:2011-02-23 08:28:34
4楼
回复内容:
对:芳季 关于

楼主你发上来的程序应该两个都没有什么大的区别,结果都是会令你丢失脉冲的。觉得很诧异吧。

因为执行方向指令永远都滞后于脉冲信号。为何我肯定滞后呢?(尽管你放在前面)

原因是你的置位指令没有使用立即输出。所以这个输出一定是等到处理END指令的时候再输出的。而执行PLS指令的话却是执行完了之后(不等END)就开始发脉冲了。

那么刚向前发脉冲发了几个,这个时候遇到了END指令了,方向信号产生了反向作用,把刚发的几个脉冲抵消了……

本来方向信号Q0.2是0表示向前。现在要向后运动30个脉冲。那么执行的结果……

1.执行PLS指令,开始发脉冲了。电机【先】向前运动了3个脉冲。

2.这个时候执行END指令了。方向信号产生作用了。电机换向,向后运动。

3.脉冲再发3个后电机回到原来的位置。然后再发完剩下的24个脉冲。工作结束。

4.最终电机只向后运动了24个脉冲。而不是你想要的30个脉冲。

明白吗?

楼上。一般延时一个周期的话就是最好处理的了。不要多花一个计时器。

内容的回复:谢谢,芳季前辈。即使是使用立即复位指令或置位指令,也会产生丢步,还是你的“一般延时一个周期的话就是最好处理的了。不要多花一个计时器。 ”是最好的选择,肯定不会丢步。




热门招聘
相关主题

官方公众号

智造工程师