首页 上一页 1 2 下一页 尾页

单圈绝对值编码器如何实现多圈应用 点击:8636 | 回复:37



lhjc51

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2015年12月07日
发表于:2015-12-07 11:38:34
楼主

    单圈绝对值编码器可以记录设备在运转一周内的位置,当设备进行多圈运转时单圈编码器无法记录位置。我通过程序对编码器数据进行处理,可以得到多圈计数的功能。但是程序会经常出错,希望知道的高手可以给一个程序,并稍加说明,谢谢!




芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2015-12-22 15:52:23
21楼

0123刻度,四个刻度都可以认为是发生过零。4刻度就不行了。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2015-12-22 15:57:06
22楼

过去是7刻度,那么现在是0刻度和1刻度两个刻度可以认为过零。

过去是543210刻度,那么不可能发生过零。因为如果还能过零,那么这个就走了超过半圈了。是吗?

咱想一想,从4走到11要走那个方向可以到达?

lhjc51

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2015年12月07日
发表于:2015-12-22 16:45:40
23楼

回复内容:

对:芳季 过去是7刻度,那么现在是0刻度和1刻度两个刻度可以认为过零。过去是543210刻度,那么不可能发生过零。因为如果还能过零,那么这个就走了超过半圈了。是吗?咱想一想,从4走到11要走那个方向可以到达?     内容的回复:

正向旋转是么,如果反向旋转就过圈了。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2015-12-22 17:05:56
24楼

对了。对了。

这个事实说明了

当前值在前半圈是不会发生反向过零的,

当前值在后半圈是不会发生正向过零的。


检测原理决定了两次检测之间最多只能走小于半圈。正半圈或者负半圈。


以上两个条件叠加就已经完事了。

lhjc51

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2015年12月07日
发表于:2015-12-22 17:15:19
25楼

回复内容:

对:芳季 对了。对了。这个事实说明了当前值在前半圈是不会发生反向过零的,当前值在后半圈是不会发生正向过零的。检测原理决定了两次检测之间最多只能走小于半圈。正半圈或者负半圈。以上两个条件叠加就已经完事了。     内容的回复:

芳季老师我还是不明白你的意思,能用具体的程序说明一下么?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2015-12-22 22:39:41
26楼

首先判断<当前值>是否在前半圈。

    是前半圈,<上次值>是否在负半圈。

        是负半圈,正向过零加一。(在正半圈,没有发生过零)

    是后半圈,<上次值>是否在正半圈。

        是正半圈,反向过零加一。(在负半圈,没有发生过零)

名词解释:

前半圈,0到6点。

后半圈,6到12点。

正半圈,当前位置正向的半圈以内。

负半圈,当前位置反向的半圈以内。


可以这么跟你说。看程序更加不明白。几条加减几条比较指令根本看不出什么思路。

看你是要明白还是要程序了。要明白,我还可以跟你再研究研究。要程序的。我稍后上程序。

lhjc51

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2015年12月07日
发表于:2015-12-24 08:34:25
27楼

芳季老师在么,昨天我按照您的说法修改了程序,在实际调试时还是会丢圈。您能帮助我指正一下么。

lhjc51

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2015年12月07日
发表于:2015-12-24 08:38:47
28楼

昨天调试了一整天,发现在计数器加减时出现了错误,过圈的时候是每次都能扑捉到的,不知道错在哪里。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2015-12-24 10:56:40
29楼

过零可以捕捉到,但是加减错,是什么个错法啊?

我想你不要用计数器了。用一个加一指令一个减一指令还更好。指令量还更少。

还有一个事情,比较中为何失去了等于的比较?

先回复你这么多。因为条理分析需要时间,上面只是一眼能看见的东西。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2015-12-24 11:13:09
30楼

第一个比较指令。小于就加,大于就减。为何后面的比较是无条件执行呢?你第一个比较的结果是小于的时候,连大于的比较都做了。那么结果就会影响了M12。

第n个扫描周期比较结果为小。M0接通,M2不接通,所以D2的值没有刷新。执行了两个比较之后一个没有刷新的D2就参与了比较了。你说这个时候M12出来的结果是不是你要的结果?

你把后两个比较指令紧密跟在两个加减指令之后应该没问题了。

改过之后你有没有发现D1和D2是紧需要一个的存在?D1和D2可以使用同一个地址。那么比较指令就只需要一条。程序又简单了一大截。

ly897771817

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2016年5月18日
发表于:2017-10-23 22:57:33
31楼

回复内容:

对:芳季 第一个比较指令。小于就加,大于就减。为何后面的比较是无条件执行呢?你第一个比较的结果是小于的时候,连大于的比较都做了。那么结果就会影响了M12。第n个扫描周期比较结果为小。M0接通,M2不接通,所以D2的值没有刷新。执行了两个比较之后一个没有刷新的D2就参与了比较了。你说这个时候M12出来的结果是不是你要的结果?你把后两个比较指令紧密跟在两个加减指令之后应该没问题了。改过之后你有没有发现D1和D2是紧需要一个的存在?D1和D2可以使用同一个地址。那么比较指令就只需要一条。程序又简单了一大截。     内容的回复:

还能联系到你吗

小辉辉辉

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 186回
  • 年度积分:85
  • 历史总积分:2527
  • 注册:2017年5月21日
发表于:2017-10-31 22:04:38
32楼

我最棒,加油啊

一冬无雪

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 29回
  • 年度积分:0
  • 历史总积分:207
  • 注册:2016年5月25日
发表于:2017-11-02 15:41:35
33楼

这个做 ,要到掉电保存

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:136
  • 注册:2018年3月19日
发表于:2021-06-01 20:21:39
34楼

最后的结果呢,楼主拿出来大家学习学习啊

olove83

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 404回
  • 年度积分:844
  • 历史总积分:1593
  • 注册:2008年6月17日
发表于:2021-06-02 09:58:44
35楼

曾经有一个项目,那老板说用485通信读取伺服的多圈绝对值(只会了省个原点感应器),PLC还是发脉冲控制伺服,TMD脑残想法,他自已摸了半个月没搞定(每次回零点的位置都不一样),后面还是按我的方法加个原点感应器解决了!

豆子蓝蓝

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 32回
  • 年度积分:0
  • 历史总积分:120
  • 注册:2009年8月13日
发表于:2022-02-17 09:39:11
36楼

"芳季" 的回复,发表在26楼
        对内容: 【首先判断<当前值>是否在前半圈。    是前半圈,<上次值>是否在负半圈。        是负半圈,正向过零加一。(在正半圈,没有发生过零)    是后半圈,<上次值>是否在正半圈。        是...】进行回复:

        -----------------------------------------------------------------

是后半圈,<上次值>是否在正半圈。

        是正半圈,反向过零加一。(在负半圈,没有发生过零)

如果是顺时针转动了,当前值11点【是后半圈】,上次值1点【是正半圈】没有发生过零啊,为何说是反向过零?

芳季

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

从1点逆时针走到11点不是反向过零吗。


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页