还是高速记数问题 点击:158 | 回复:3



fenghaoyuan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 30回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2008年6月06日
发表于:2008-12-30 11:38:45
楼主

我定义高速HSC0定义了三次,用了三次中断这样可以吗,因为我是三个不同的中断事件,我是计算是通过一圈走多少长度,并通过长度来计算出脉冲数把数值传送给SMD42,当值等于这个数时执行中断。




蓝天月亮

  • 精华:0帖
  • 求助:0帖
  • 帖子:37帖 | 1447回
  • 年度积分:0
  • 历史总积分:3594
  • 注册:2007年10月22日
发表于:2008-12-30 13:41:56
1楼

为什么不可以.........

peter_wjp

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2008年12月13日
发表于:2008-12-30 15:56:59
2楼

应该可以的,如果在同一个时序里面出现(非子程序,非中断),以最新的定义结果为最优先。我最近要编一个通过计数器接受脉冲数来定义输出不同的行程开关信号的程序,用西门子的话如果15个开关就要重新定义15次。我用的三菱的,里面的高速计数器区间比较指令很好用。不用这么麻烦了。

peter_wjp

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2008年12月13日
发表于:2008-12-30 16:23:11
3楼

如果脉冲频率不是很高的话,你可以尝试读取计数器当前值SMD38,然后与你设定值做比较(相等时)调用一个产生中断的程序如定时器中断。中断执行完毕复位定时器。 不过这样会有一定的时间滞后。

仅供参考了。

我感觉最好把你三次定义分为三个顺序的时段,然后在第一次的中断程序里面重新定义计数器就可以了。然后第二次中断再重新定义 的三次再重新,如果时循环的,也可以。


热门招聘
相关主题

官方公众号

智造工程师