“现在,普遍的使用(我不知道是不是标准)是,一周,65536单位粗位(ffffH)和65536单位细分位。高四位叫Coarse Position,低四位叫Fine Position。-------这个是基本单位,比如你的编码器是1024,那么4倍频是4096,那么当你的机器旋转的时候,你的编码计数器里面的数值变化是按照以下跳增,0,16,32,48,64,80,。。(16的倍数,16=65536/4096)。转一周,编码器发4096个脉冲,编码计数器高位里面每一步跳16,一直记到65536。细分位(Fine Position)里面一直是0。如果你的编码器是1000,四倍频4000,编码计数器内计数是按照以下跳增:16.38375, 32.7675, 49.15125, 65.535, 81.91875......(16.38375的倍数,16.38375=65536/4000)....实际计数器是ffff--ffffH,小数点以前的放在高4位(粗位),小数点以后的放在低4位(细分位)。。。。运动控制,是先按照高四位,找到大概位置,然后再根据低四位,进行细调。。。。如果是sincos编码器,低四位可以细分到很精确。。。。这是伺服控制普遍采用的一种细分方法。。。。。这只是其中的很基础的一个概念。。。。。。”
很简单一个问题,16.38375=65536/4000 (计算计算没有问题), 过来一个脉冲怎么跳16.38375?
如果是21.8453333333333333....... = 65536/3000, 首先21.8453333333333333....... 怎么保证精确度,其次过来一个脉冲怎么跳到这个数值?
如果是其他的线数, 如5000, 6000, 7000, 8000......呢?
一个好的设计是用最简单的方法解决所有的问题!
如果你发现一个设计方法在情况1下, 需要添加处理1;情况2下,需要添加处理2;情况3下,需要添加处理3;........
十有八九是设计方法有问题, 还是趁早重新做吧!
我建议仔细看看CT说明书, 到底是不是这样处理的?
不要理解错了, 呵呵
引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 “现在,普遍的使用(我不知道是不是标准)是,一周,65536单位粗位(ffffH)和65536单位细分位。高四位叫Coarse Position,低四位叫Fine Position。-------这个是基本单位,比如你的编码器是1024,那么4倍频是4096,那么当你的机器旋转的时候,你的编码计数器里面的数值变化是按照以下跳增,0,16,32,48,64,80,。。(16的倍数,16=65536/4096)。转一周,编码器发4096个脉冲,编码计数器高位里面每一步跳16,一直记到65536。细分位(Fine Position)里面一直是0。如果你的编码器是1000,四倍频4000,编码计数器内计数是按照以下跳增:16.38375, 32.7675, 49.15125, 65.535, 81.91875......(16.38375的倍数,16.38375=65536/4000)....实际计数器是ffff--ffffH,小数点以前的放在高4位(粗位),小数点以后的放在低4位(细分位)。。。。运动控制,是先按照高四位,找到大概位置,然后再根据低四位,进行细调。。。。如果是sincos编码器,低四位可以细分到很精确。。。。这是伺服控制普遍采用的一种细分方法。。。。。这只是其中的很基础的一个概念。。。。。。” 我建议仔细看看CT说明书, 到底是不是这样处理的? 不要理解错了, 呵呵 内容的回复:就是这样的,呵呵。。。里面的数并不是累加的,而是分配的!!!因为你输入线数是1000,它也会保证你的总数肯定是1000!!!假如说,都取一位小数,16.4, 32.8, 49.2, 65.5, 81.9....如图。。。有误差,就会消化在每一步里面了,总数,肯定保持1000,不会变的!!!并不是你累加的。。。如图,每一个脉冲之间可以有误差,但是一圈下来,肯定是65536.。。这个是不会变的,有误差,也就消化在里面了!不会反映到总的里面去!!
分配的???!!!! 你这种说法太不靠谱了!
怎么分配, 难道过来的脉冲上都有标记,1000个脉冲都能区分开是第几号脉冲? 左转一个脉冲, 然后右转一个脉冲, 计数器的值也分配?
“因为你输入线数是1000,它也会保证你的总数肯定是1000!!!假如说,都取一位小数,16.4, 32.8, 49.2, 65.5, 81.9 ...."
就算你能跳16.4出来, 换成其他线数就是任意的一个数值,有的数据还是无穷小数, 你觉得从设计上可能这样做吗?
就算这样设计了, 举个例子:
电机先在固定位置(假定为零点),通过外面的设备拖动电机让电机严格左转400个脉冲, 再右转300个脉冲;然后左转300个, 在右转400个脉冲;如此循环下去,执行很多次后,最后停下来, 电机还停在原来的零点上,你觉得驱动器的位置计数器还是0吗?
不管采用什么方式记脉冲, 都是计数器一个脉冲一个脉冲对细分后的脉冲进行加减的, 从来没有分配之说!!!!
还有1000线的编码器就一定会得到1000个脉冲吗? 未必, 需要考虑脉冲数丢失、码盘损坏等情况,编码器上会有一个零位标记, 位置计数器要靠旋转一圈看计数是不是1000个脉冲来校正码盘错误!
你这一分配好了,码盘脉冲丢了你也不知道。
要解决这些问题, 又要假定一系列条件然后再分别处理, 你觉得就一个记编码器个数的简单事情都搞得这么复杂,整个产品做出来可靠性能保证吗?
建议你找找CT的框架图去看看怎么实现对编码器脉冲计数的吧!!!
我可以负责任的告诉你CT的位置脉冲计数器绝对不是你理解的这样!
对:征关于 引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略) 内容的回复: 你看,还是你看错了。。。你看你的图,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
引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 引用 通讯网-原创军团 的回复内容:回复内容:对:征关于 回复内容:(省略) 内容的回复: 你看,还是你看错了。。。你看你的图,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都算粗位。说法不同。。。但结果是一样。。无所谓了。。使用起来是一样的。。