引用 ShowMotion 的回复内容:我感觉原文意思是否是对360度圆周的归一化处理,认为是对脉冲的分配是曲解我基本同意征的观点
1、ShowMotion 所谓“360度圆周的归一化处理”,是错误的,不存在归一化处理的问题;
2、ShowMotion 所谓“编码器的归一化处理确实提高了系统对编码器的兼容性,国内很多厂家已经实现了楼主的想法。”也是错误的,编码器的兼容性不需要归一化!
这不是我的想法,而是我在工作中看到的一家产品,我觉得这种定义方式很好,可以涵盖所有的绝对式和增量式光电,和电磁感应式,以及sincos所有的类型编码器,且分辨率,精度等问题也足够。。我估计别的厂家也是如此处理,我觉得这个应该是个标准。也确实征同学举了同样的例子,其实没什么好争的,观点是一致的,呵呵,只是一些小的失误,大方向没有错,呵呵。。这种设计,编码器设计和控制系统设计可以分开,只要编码器分辨率足够,控制系统的精度也就提高。。。。这是很实用的方法。。。
征同学说的,跟我说的是一个意思,,,只是稍微有些小问题。。。咱们用9位的编码器。。转一圈分成九份。。。就不四倍频了。。。这样好处理些。。。
咱也别65536了。。咱就两位 FFH。。。。256,分成九分,咱四舍五入,并且变成十六进制。。256/9=28.444 取整 28 16进制1CH,
第二256*2/9= 56.88 取整 57 16进制 39H
依此类推:分别是: 55H,72H,8EH,ABH,C7H,E4H
1CH, 39H, 55H, 72H, 8EH, ABH, C7H, E4H, 00H 实际9,一个字节 FH 就可以涵盖, 所以,跟多位的类似,前一byte位(或者前4bit),叫做粗位,后一byte位(或者后4bit)叫做精位。。。吧。。
实际间隔肯定是有误差,第一间隔 39H-1CH=1DH,第二间隔:55H-39H=1CH,
依此类推:1DH,1CH,1DH,1CH,1DH,1CH,1CH.....
间隔并不完全相等。。4个1DH,5个1CH。。但总数加起来必须是100H....
当然,如果选用16位编码器,那么就是 10H,20H,30H,40H,50H,....F0H,00H..粗位有值,精位全是零。。
这样解释对吧??征同学??呵呵。。这样就回答了你累计误差的问题了吧?。。位数再多,也是如此。。。呵呵。
引用 通讯网-原创军团 的回复内容:引用 征 的回复内容: 引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略) 内容的回复: 你看,还是你看错了。。。你看你的图,signal pe(内容省略) 内容的回复:我这里错了。。。。我原来说31,30,29。。。说n=29是错的。。。我是按16进制。。。应该是31----20。。。应该n=20。。你的是二进制表示的。。 FFF0H--0000H = 1111 1111 1111 0000B--0000 0000 0000 0000B蓝色1位置是n 31,30,29,28 27,26,25,24 23,22,21,20呵呵.....n= 20? 看看那个图,继续研究吧! 看明白了,你的图里面,4096已经算是细分了,1024是粗位,后面,21,20算细分位。在你的里面把21位以后算细分了。CT中所有的4096都算粗位。说法不同。。。但结果是一样。。无所谓了。。使用起来是一样的。。
呵呵,你还是没看懂!
“1024是粗位,后面,21,20算细分位。在你的里面把21位以后算细分了”
要看懂的话就应该知道在1024线的光电编码器下,n=2
只要是AB互差90度的光电编码器就只能4倍频,即n =2, 与光电编码器有多少线没有一点关系!
32位的计数器值是由光电编码器的AB信号经硬件四倍频后的输出脉冲 输入到计数器中自动累加得到的, 与编码器原始信号的数值没有直接的联系!
还是费点功夫简单讲解一下, 以光电编码器为例:
1) 左侧的 1 2 图
表示的1 signal period , 表示的是光电编码器的一线输出的AB信号。光电编码器有多少线, 其旋转一周就输出多少个这样的脉冲。这个信号是随着电机转动连续输出的,在一个时刻看AB波形,你不知道电机转在哪个位置上, 只有AB信号的电平情况。
2)multiplication by hardware
图中的x2n, 实际上是错的, 应该是x 2^n, 这属于手册的编写错误
表示的是硬件对AB信号进行倍频, 即细分。对光电编码器就是4倍频, 即n = 2。
光电编码器的AB一个周期即1 signal period 经硬件4倍频后得到4个脉冲,四倍频就是对AB脉冲进行边沿检测。
3)中间的1 2
表示1 signal period 四倍频后得到的信号
4)Free-running position counter
表示的是位置计数器
这个位置计数器是由硬件来实现的, 由硬件根据3)中的脉冲序列来进行加减计数的。
计数方向即 加计数或减计数是由 AB信号的先后顺序决定的。不清楚的可以去百度搜搜, 就清楚了
5) P0410.1
是配置参数, 是否需要对计数器进行取负, 载调试时根据需要选择是否启用。
6) 最右侧32位的计数值部分
4)中的计数器对4倍频后的脉冲计数,一个脉冲一个脉冲进行记录,
Fine resolution 部分: 对4倍频的光电编码器而言,这个位域占用两位
实际的计数过程如下:
电机转动时,1)中的信号高低高低的连续变化, 经2)硬件4倍频后, 得到一系列的边沿检测后输出(即硬件4倍频)的脉冲信号3),这些脉冲由4)的计数器自动从最低位加减计数。最后得到一个计数值。
如果对这个计数值分析, 低2位表示细分的信号, 2~31位表示的编码器的原始信号。
但请注意一点, 2~31的数值是由计数器对倍频的信号自动累加得来的,这一部分表示电机转过的线数。
对1024线编码器, 计数范围最大为 2^30/1024 = 1048576 圈,如果电机以3000rpm转动, 保证电机转动1048576/3000 = 349.52533333333333333333333333333 分钟, 即大于这么长的时间后计数器翻转, 自动从0开始计数
在位置控制时, 需要的是这个32位计数器的整体数值,不会区分那一部分。
以上是对我提供的图的简要分析, 或者是一个我说明!
可能跟CT的不太一样,但是最终都是对倍频的信号计数,所以有些说法在我理解来或者看来是实在不靠谱了!
既然本帖已经“授精”, 所以我要对我提供的数据、图形等做一个简要的说明, 尽量提供一种准确、可靠、负责的说法给每个看帖子的人, 不管懂还是不懂!
实际上,对我来说,解释这些基本的东西我感觉很累,我也觉得没有必要!
但出于慎重考虑,我还是尽量去做了!
这是我对这个帖子的最后回帖!
不存在非要争论出谁对谁错的想法, 只求尽量正确、符合事实!
各位包涵!
征同学说的,跟我说的是一个意思,,,只是稍微有些小问题。。。咱们用9位的编码器。。转一圈分成九份。。。就不四倍频了。。。这样好处理些。。。
咱也别65536了。。咱就两位 FFH。。。。256,分成九分,咱四舍五入,并且变成十六进制。。256/9=28.444 取整 28 16进制1CH,
第二256*2/9= 56.88 取整 57 16进制 39H
依此类推:分别是: 55H,72H,8EH,ABH,C7H,E4H
1CH, 39H, 55H, 72H, 8EH, ABH, C7H, E4H, 00H 实际9,一个字节 FH 就可以涵盖, 所以,跟多位的类似,前一byte位(或者前4bit),叫做粗位,后一byte位(或者后4bit)叫做精位。。。吧。。
实际间隔肯定是有误差,第一间隔 39H-1CH=1DH,第二间隔:55H-39H=1CH,
依此类推:1DH,1CH,1DH,1CH,1DH,1CH,1CH.....
间隔并不完全相等。。4个1DH,5个1CH。。但总数加起来必须是100H....
当然,如果选用16位编码器,那么就是 10H,20H,30H,40H,50H,....F0H,00H..粗位有值,精位全是零。。
这样解释对吧??征同学??呵呵。。这样就回答了你累计误差的问题了吧?。。位数再多,也是如此。。。呵呵。这有什么好争的呢???呵呵。。
例如,过一个脉冲,应该跳到28.44444444444444,但实际就跳到28.。。就是这样,尾数忽略了。。。再一个脉冲应该跳到56.888888888,但实际跳到57.。。。。。。比实际位置稍过些。。。。。就是如此了。。
引用 通讯网-原创军团 的回复内容:征同学说的,跟我说的是一个意思,,,只是稍微有些小问题。。。咱们用9位的编码器。。转一圈分成九份。。。就不四倍频了。。。这样好处理些。。。咱也别65536了。。咱就两位 FFH。。。。256,分成九分,咱四舍五入,并且变成十六进制。。256/9=28.444 取整 28 16进制1CH, 第二256*2/9= 56.88 取整 57 16进制 39H 依此类推:分别是: 55H,72H,8EH,ABH,C7H,E4H 1CH, 39H, 55H, 72H, 8EH, ABH, C7H, E4H, 00H 实际9,一个字节 FH 就可以涵盖, 所以,跟多位的类似,前一byte位(或者前4bit),叫做粗位,后一byte位(或者后4bit)叫做精位。。。吧。。 实际间隔肯定是有误差,第一间隔 39H-1CH=1DH,第二间隔:55H-39H=1CH,依此类推:1DH,1CH,1DH,1CH,1DH,1CH,1CH..... 间隔并不完全相等。。4个1DH,5个1CH。。但总数加起来必须是100H....当然,如果选用16位编码器,那么就是 10H,20H,30H,40H,50H,....F0H,00H..粗位有值,精位全是零。。 这样解释对吧??征同学??呵呵。。这样就回答了你累计误差的问题了吧?。。位数再多,也是如此。。。呵呵。这有什么好争的呢???呵呵。。例如,过一个脉冲,应该跳到28.44444444444444,但实际就跳到28.。。就是这样,尾数忽略了。。。再一个脉冲应该跳到56.888888888,但实际跳到57.。。。。。。比实际位置稍过些。。。。。就是如此了。。
编码器好不容易把刻线给你做的那么准确, 这样处理会不会丧失精度?
我记得笨鸟先飞有个帖子讲这个精度的, 请笨鸟先飞来看看!!