回复内容:
对: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.....,这样的数字不能通过移位实现,你怎么搞出来? 无穷的小数怎么表示都会有积累误差,而这个累计误差积累到一定程度,就会造成实际脉冲计数不准, 那就不要谈控制的误差了!
各家实现的方式不同,没有好与不好之分,只要将来能方便的通过参数设置修改编码器类型和线数就行。
再说这个编码器脉冲计数在驱动器中只算很简单很简单很简单.......的功能,只要计数准确就行,跟控制程序和算法一点关系都没有!本身编码器或电机更换了,控制参数自然需要调整;但是程序和算法等一点都不需要动,这是作为一个通用产品的必须的、基本的要求。
引用 ShowMotion 的回复内容:
编码器的归一化处理确实提高了系统对编码器的兼容性,国内很多厂家已经实现了楼主的想法。
1、其实所有伺服的脉冲当量、周指令脉冲数由用户决定,并不是一件坏事,而是一件有利用户的好事!
2、不管用户怎么选用脉冲当量、周指令脉冲数,所有不同解析度的编码器通过电子齿轮比,都能实现匹配系统的运算,或者说都可以兼容;
3、例如用户根据自己的工艺需要选用脉冲当量为整数且较大的0.1mm,从而确定出一个较小的周指令脉冲数1000,这样系统的解析度要求降低很多,也可以选用解析度低的1000的编码器,这是多好的事!
引用 征 的回复内容:
…… 目前国内厂商、日系、欧系的很多产品都是这么做的! 我觉得这样实现更合适、简单一些。特别是对于那些2500线、1000线的编码器,其处理方式跟2^n线数的编码器完全相同。 如果你把一圈的脉冲凑成65536,对2^n的好处理,左移(16 - n)位就是了,当然n小于16。不是2^n的线数的编码器你怎么凑? 例如3000线,65536/3000 = 21.845333333333333333333333.....,这样的数字不能通过移位实现,你怎么搞出来? 无穷的小数怎么表示都会有积累误差,而这个累计误差积累到一定程度,就会造成实际脉冲计数不准,……
1、征的这一段表述,是非常正确的;
2、伺服如果不是专门用的,脉冲当量、周指令脉冲数由用户决定,是正确的,这并不影响编码器的兼容,而是为选用适宜工艺要求的编码器提供了方便;
3、楼主的周指令脉冲数65536,只是个特例;
你看,还是你看错了。。。你看你的图,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关于不管什么接口类型的编码器,都是有一个精度指标,一旦机械传动比例和脉冲当量确定后,就可以根据这些量确定输入脉冲和反馈脉冲之间的比例关系(电子齿轮),它们之间没有小数的说法。电角度才有小数的说法,我觉得楼主想表达的是脉冲数和电角度、角速度之间的关系,这个确实是可以表达的,至于你是32位表达还是16表达电角度或角速度厂家你自己定,你的Q值是多少可以根据编码器精度来调整设置的,只有满足你控制的性能就行。内容的回复:不是厂家自己定的,是一个普遍的标准使用。。
32位处理器没问题,32位的表达精度和内部的32*32乘法器本身表达的处理能力是没问题;
16位处理器呢?当编码器精度不超过16位时,硬套这个表达方式是不妥的.本来可以采用16*16乘法一次完成的,偏要去凑成高精度处理,增加计算量不说还不能实质性的提高控制精度,个人认为是多此一举。
引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略) 内容的回复: 你看,还是你看错了。。。你看你的图,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,你的图跟我说的不是完全一样么??
你仔细看看是不是一样?
要看仔细啊!
引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略) 内容的回复: 你看,还是你看错了。。。你看你的图,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 是对细分后的脉冲进行累计后自动得到的。
还是先把图看明白了吧!!!!
引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略) 内容的回复: 你看,还是你看错了。。。你看你的图,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采用这种设计方法有点多余了!