高速计数器用中断分区间未有办法解决。

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15781
  • 精华

    102
  • 被关注

    985

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

高速计数器用中断分区间未有办法解决。

768

1

2010-12-23 09:15:33

日前看见一个110779037贴高速计数器预置值不能修改,和110780501计数器问题继续请教,两贴。
在这里面用AB相计数,然后通过原点信号便确立了绝对位置(伪)。通常用比较触点可以把计数区间划分成若干个小区间,做类似凸轮开关的用途。
现在两贴的楼主要更深地使用CV=PV中断来判定区间,用中断来划分区间。我正好也在想这个事情。也是计划用中断做。于是把心一横,干脆做个啦。
结果很快做出了第一个程序。用=中断确定下一个中断的当前值,并且标志当前区间的标记。还有用反向中断改变目的预置值变成即将方向的界点预置值。程序基本能过达到目的。用手旋转编码器,可以看见区间标记不断地在变化。变化结果与编码器的绝对位置可以保持一致。
后来发现0位附近几个脉冲不准。程序不能使用。程序就是贴里导出的内容。
然后又把0位的复位信号确定在0和1脉冲之间的分界线上。用输入中断实现在边界上的复位,而并非用Z相的1逻辑复位。因为1逻辑覆盖住4个脉冲。
然而问题依然存在。并且发现当脉冲由1方向向0位边缘经过时,当前值由于过零复位,变成最大值3999。这个时候判断方向是负方向。此时,把编码器改向正方向走。经过0位边缘的时候,问题发生了。当前值不是0,而是4000!
问题是由于在3999位置经过0线时发生了两个中断事件。
1.0位复位中断(事件5)
2.高速计数器反向中断。
两个事件的优先次序是先 复位 然后是 反向。
当产生复位的时候当前值的判断竟然是3999。因为方向信号还没有发生中断。仍然认为是刚才的负方向。所以负方向经过0线就是3999。后面的队列中的反向中断执行了。可当前值已经变成4000了。再继续旋转只有又一次回到0位的时候才能变成正常值。
问题的产生主要是中断执行的优先次序。本来高速计数的Z复位中断在反向中断之后的,可是我没有用,原因上面说了。现在用于复位的却是更高级的输入中断。同理。在另一个方向上也发生类似的情况。
我现在没有办法解决。不知道有没有人能推荐一些解决的办法。
高速计数器用中断分区间未有办法解决。 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33298条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。