发一个新帖,谈谈运动控制中编码器定位精度的问题。 点击:16104 | 回复:200



通讯网-原创军团

    
  • 精华:11帖
  • 求助:1帖
  • 帖子:432帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2012-12-27 21:49:55
楼主

发一个新帖,谈谈运动控制中编码器定位精度的问题。

   以前帖子里谈了一些,想一想,又到过节了,可以把这个东西作为新题目单独提出来讲一讲。。。如图。。。。运动控制,都需要把给定值与编码器反馈值求差,然后根据误差大小,反过来调整电机,使之到达准确位置。。。

 




刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 15:07:36
21楼
3、那么这个系统配用的编码器,当然是解析度为65536的编码器最合适,因为编码器的分辨率360°/65536,与系统的要求一致,这时候的电子齿轮比=1;

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 15:13:24
22楼
4、如果配用4096的编码器,它的分辨率只有360°/4096,显然编码器的解析度低,使整个系统的分辨率下降为360°/4096,编码器的分辨率成了系统分辨率高低的关键

  • 精华:2帖
  • 求助:0帖
  • 帖子:10帖 | 2393回
  • 年度积分:1
  • 历史总积分:5804
  • 注册:2006年1月06日
发表于:2012-12-29 15:17:19
23楼

回复内容:
对:ShowMotion关于编码器的归一化处理确实提高了系统对编码器的兼容性,国内很多厂家已经实现了楼主的想法。内容的回复:


国内厂商怎么实现的?不都是对编码器或者正余弦编码器进行细分后,对细分的脉冲进行计数。

当然编码器的线数和细分倍数是可以通过参数设定的,便于更换编码器后修改。

 


 

上面的是欧系某款驱动器的编码器信号处理框图,这个图只是手册中的一张图中的一小部分,而整个两千页的手册中所有的图有几百张之多。

原始信号经硬件的细分后,由计数器记到32位的实际位置脉冲计数器中。

32位的计数器会有两部分, n位的Fine resolution 即细分信号,  32-n 位的No. of signal periods

 

注意:1) 图中1 signal period 代表 1个编码器原始信号周期。

         2) 细分,AB光电编码器  n = 2, 就是4倍频,32位计数器记得就是4倍频后的脉冲数

                正弦余弦编码器:标准 11 位 = 分辨率 2048

 

所有的计数都是按照细分后的脉冲数一个一个累加的,脉冲自动累加。细分位数不同,其在32位数中占的位域就不同。

对驱动器而言,只需要知道实际位置与指令位置的偏差,由偏差形成闭环控制。

 

目前国内厂商、日系、欧系的很多产品都是这么做的!

我觉得这样实现更合适、简单一些。

特别是对于那些2500线、1000线的编码器,其处理方式跟2^n线数的编码器完全相同。

 

如果你把一圈的脉冲凑成65536,对2^n的好处理,左移(16 - n)位就是了,当然n小于16。不是2^n的线数的编码器你怎么凑? 例如3000线,65536/3000 = 21.845333333333333333333333.....,这样的数字不能通过移位实现,你怎么搞出来? 无穷的小数怎么表示都会有积累误差,而这个累计误差积累到一定程度,就会造成实际脉冲计数不准, 那就不要谈控制的误差了!

 

各家实现的方式不同,没有好与不好之分,只要将来能方便的通过参数设置修改编码器类型和线数就行。

再说这个编码器脉冲计数在驱动器中只算很简单很简单很简单.......的功能,只要计数准确就行,跟控制程序和算法一点关系都没有!本身编码器或电机更换了,控制参数自然需要调整;但是程序和算法等一点都不需要动,这是作为一个通用产品的必须的、基本的要求。

 

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 15:18:27
24楼

5、配用4096的编码器,电子齿轮比=1/16,就是说4096×16=65536;

6、这样编码器的反馈脉冲就不是0、1、2、3、……、4096;

7、编码器的反馈脉冲只能是0、16、32、48、……、65526;

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 15:25:32
25楼

8、这样

          1、2、3、…、15,

          16+1、16+2、16+3、…、16+15,

          32+1、32+2、32+3、…、32+15,

          ……

          4095×16+1、4095×16+2、4095×16+3、… 、4095×16+15,

这些脉冲细节就看不到,或者说就无法分辨!

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 15:40:05
26楼
9、4096×16=65536的这种用乘法器倍频获得的65536,实际和4096的分辨率是一样的,倍频的作用只是使4096的编码器与系统计算相适应;

HOTEAM

  • 精华:3帖
  • 求助:0帖
  • 帖子:340帖 | 23748回
  • 年度积分:0
  • 历史总积分:70347
  • 注册:2007年4月05日
发表于:2012-12-29 15:41:00
27楼

墙裂建议给通讯网老兄的此贴受精

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 15:47:23
28楼
10、讨论问题时,要把对方的观点弄明白后说话,征说的 “主要还是机械结构、刀具等做不了。”与楼主的问题是两码事!

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 16:03:39
29楼

引用 ShowMotion 的回复内容:

编码器的归一化处理确实提高了系统对编码器的兼容性,国内很多厂家已经实现了楼主的想法。


1、其实所有伺服的脉冲当量、周指令脉冲数由用户决定,并不是一件坏事,而是一件有利用户的好事!

2、不管用户怎么选用脉冲当量、周指令脉冲数,所有不同解析度的编码器通过电子齿轮比,都能实现匹配系统的运算,或者说都可以兼容;

3、例如用户根据自己的工艺需要选用脉冲当量为整数且较大的0.1mm,从而确定出一个较小的周指令脉冲数1000,这样系统的解析度要求降低很多,也可以选用解析度低的1000的编码器,这是多好的事!

笨鳥慢飛

  • 精华:3帖
  • 求助:3帖
  • 帖子:15帖 | 2548回
  • 年度积分:0
  • 历史总积分:4928
  • 注册:2005年10月16日
发表于:2012-12-29 16:07:39
30楼

通訊網 你的標題那是寫錯了 這只是伺服內部閉環的概念 跟編碼器的精度無關

哎哎 老劉又在開染房

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 16:19:10
31楼

引用 征 的回复内容:

…… 目前国内厂商、日系、欧系的很多产品都是这么做的! 我觉得这样实现更合适、简单一些。特别是对于那些2500线、1000线的编码器,其处理方式跟2^n线数的编码器完全相同。 如果你把一圈的脉冲凑成65536,对2^n的好处理,左移(16 - n)位就是了,当然n小于16。不是2^n的线数的编码器你怎么凑? 例如3000线,65536/3000 = 21.845333333333333333333333.....,这样的数字不能通过移位实现,你怎么搞出来? 无穷的小数怎么表示都会有积累误差,而这个累计误差积累到一定程度,就会造成实际脉冲计数不准,……


1、征的这一段表述,是非常正确的;

2、伺服如果不是专门用的,脉冲当量、周指令脉冲数由用户决定,是正确的,这并不影响编码器的兼容,而是为选用适宜工艺要求的编码器提供了方便;

3、楼主的周指令脉冲数65536,只是个特例;

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:348帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2012-12-29 16:25:01
32楼

引用 笨鳥慢飛 的回复内容:

通訊網 你的標題那是寫錯了 ……


标题“运动控制中编码器定位精度的问题”,应该为“编码器解析度对系统位移分辨率的影响”就好了!

通讯网-原创军团

  • 精华:11帖
  • 求助:1帖
  • 帖子:432帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2012-12-29 16:31:21
33楼
回复内容:
对:笨鳥慢飛关于 通訊網 你的標題那是寫錯了 這只是伺服內部閉環的概念 跟編碼器的精度無關哎哎 老劉又在開染房 内容的回复:

标题改不了了。。。。不过老刘这个说的还是对的。。。讨论讨论嘛。。。呵呵呵

5、配用4096的编码器,电子齿轮比=1/16,就是说4096×16=65536;

6、这样编码器的反馈脉冲就不是0、1、2、3、……、4096;

7、编码器的反馈脉冲只能是0、16、32、48、……、65526;


通讯网-原创军团

  • 精华:11帖
  • 求助:1帖
  • 帖子:432帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2012-12-29 16:43:43
34楼
回复内容:
对:征关于 回复内容:(省略)              内容的回复:

 

你看,还是你看错了。。。你看你的图,signal period 位置是31---n。。也就是31是固定的,如果你分辨率高,位数多,n就靠后。。。。如果是1024,编码器,4倍频是4096,这里也就只使用前三位,31,30,29位。。。那么这里n就是29.。。。如果你的分辨率高,那么n就可能是28,27,或者26.。。。前对齐的。。

我前面说过的:0000H0000H,0010H0000H,0020H0000H,0030H0000H,0040H0000H,0050H0000H,0060H0000H,.。。。。。。。。FFF0H0000H,

你的图跟我说的不是完全一样么??

ShowMotion

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 459回
  • 年度积分:0
  • 历史总积分:1711
  • 注册:2005年5月14日
发表于:2012-12-29 16:45:20
35楼

不管什么接口类型的编码器,都是有一个精度指标,一旦机械传动比例和脉冲当量确定后,就可以根据这些量确定输入脉冲和反馈脉冲之间的比例关系(电子齿轮),它们之间没有小数的说法。

电角度才有小数的说法,我觉得楼主想表达的是脉冲数和电角度、角速度之间的关系,这个确实是可以表达的,至于你是32位表达还是16表达电角度或角速度厂家你自己定,你的Q值是多少可以根据编码器精度来调整设置的,只有满足你控制的性能就行。

通讯网-原创军团

  • 精华:11帖
  • 求助:1帖
  • 帖子:432帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2012-12-29 16:51:07
36楼
回复内容:
对:ShowMotion关于不管什么接口类型的编码器,都是有一个精度指标,一旦机械传动比例和脉冲当量确定后,就可以根据这些量确定输入脉冲和反馈脉冲之间的比例关系(电子齿轮),它们之间没有小数的说法。电角度才有小数的说法,我觉得楼主想表达的是脉冲数和电角度、角速度之间的关系,这个确实是可以表达的,至于你是32位表达还是16表达电角度或角速度厂家你自己定,你的Q值是多少可以根据编码器精度来调整设置的,只有满足你控制的性能就行。内容的回复:


不是厂家自己定的,是一个普遍的标准使用。。

ShowMotion

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 459回
  • 年度积分:0
  • 历史总积分:1711
  • 注册:2005年5月14日
发表于:2012-12-29 17:03:11
37楼

引用 通讯网-原创军团 的回复内容:回复内容:对:ShowMotion关于不管什么接口类型的编码器,都是有一个精度指标,一旦机械传动比例和脉冲当量确定后,就可以根据这些量确定输入脉冲和反馈脉冲之间的比例关系(电子齿轮),它们之间没有小数的说法。电角度才有小数的说法,我觉得楼主想表达的是脉冲数和电角度、角速度之间的关系,这个确实是可以表达的,至于你是32位表达还是16表达电角度或角速度厂家你自己定,你的Q值是多少可以根据编码器精度来调整设置的,只有满足你控制的性能就行。内容的回复:不是厂家自己定的,是一个普遍的标准使用。。



32位处理器没问题,32位的表达精度和内部的32*32乘法器本身表达的处理能力是没问题;

16位处理器呢?当编码器精度不超过16位时,硬套这个表达方式是不妥的.本来可以采用16*16乘法一次完成的,偏要去凑成高精度处理,增加计算量不说还不能实质性的提高控制精度,个人认为是多此一举。

  • 精华:2帖
  • 求助:0帖
  • 帖子:10帖 | 2393回
  • 年度积分:1
  • 历史总积分:5804
  • 注册:2006年1月06日
发表于:2012-12-29 17:26:57
38楼

引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略)              内容的回复: 你看,还是你看错了。。。你看你的图,signal period 位置是31---n。。也就是31是固定的,如果你分辨率高,位数多,n就靠后。。。。如果是1024,编码器,4倍频是4096,这里也就只使用前三位,31,30,29位。。。那么这里n就是29.。。。如果你的分辨率高,那么n就可能是28,27,或者26.。。。前对齐的。。我前面说过的:0000H0000H,0010H0000H,0020H0000H,0030H0000H,0040H0000H,0050H0000H,0060H0000H,.。。。。。。。。FFF0H0000H,你的图跟我说的不是完全一样么??


 你仔细看看是不是一样?

要看仔细啊!



 

  • 精华:2帖
  • 求助:0帖
  • 帖子:10帖 | 2393回
  • 年度积分:1
  • 历史总积分:5804
  • 注册:2006年1月06日
发表于:2012-12-29 17:31:11
39楼

引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略)              内容的回复: 你看,还是你看错了。。。你看你的图,signal period 位置是31---n。。也就是31是固定的,如果你分辨率高,位数多,n就靠后。。。。如果是1024,编码器,4倍频是4096,这里也就只使用前三位,31,30,29位。。。那么这里n就是29.。。。如果你的分辨率高,那么n就可能是28,27,或者26.。。。前对齐的。。我前面说过的:0000H0000H,0010H0000H,0020H0000H,0030H0000H,0040H0000H,0050H0000H,0060H0000H,.。。。。。。。。FFF0H0000H,你的图跟我说的不是完全一样么??


“如果是1024,编码器,4倍频是4096,这里也就只使用前三位,31,30,29位。。。那么这里n就是29”

 

你怎么理解的啊?!!!!!

对于1024线, 4倍频, n是2,怎么是29呢?

n是细分的位数! 4倍频就是2^2, n = 2!!!!!!


这个32位计数器是记的是细分后的脉冲数,不管你是多少位的细分,计数器只管对细分后的脉冲从最低位一个一个的累加!No. of signal periods 是对细分后的脉冲进行累计后自动得到的。

还是先把图看明白了吧!!!!

  • 精华:2帖
  • 求助:0帖
  • 帖子:10帖 | 2393回
  • 年度积分:1
  • 历史总积分:5804
  • 注册:2006年1月06日
发表于:2012-12-29 17:46:05
40楼

引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略)              内容的回复: 你看,还是你看错了。。。你看你的图,signal period 位置是31---n。。也就是31是固定的,如果你分辨率高,位数多,n就靠后。。。。如果是1024,编码器,4倍频是4096,这里也就只使用前三位,31,30,29位。。。那么这里n就是29.。。。如果你的分辨率高,那么n就可能是28,27,或者26.。。。前对齐的。。我前面说过的:0000H0000H,0010H0000H,0020H0000H,0030H0000H,0040H0000H,0050H0000H,0060H0000H,.。。。。。。。。FFF0H0000H,你的图跟我说的不是完全一样么??


这种方法是对细分后的脉冲进行计数,跟你所说的凑到65536不是一个方法!

你的凑到65536的方法只对2^n的编码器适用,对3000或者5000等编码器实现不了,从最低位进行细分后脉冲技术的方法则没有你的那些问题。

 

我有点怀疑你对CT的说明书没有看明白,建议你再仔细确认一下。我觉得CT采用这种设计方法有点多余了!


热门招聘
相关主题

官方公众号

智造工程师