一、上面的是征提供的欧系某款驱动器的编码器信号处理框图;
二、我从伺服工作的基本原理来解析编码器信号处理的过程:
引用 东山脚下-骑士军团 的回复内容:这就是典型的闭环控制系统的基本原理
1、这就是典型的闭环控制系统的基本原理 ;
2、通常我们说编码器的刻线数,是指一条刻线的刻线数,例如说,这个编码器的刻线数是1024;
3、那我们会马上意识到,这个编码器的解析度最大就是1024×4=4096;
4、我们还会知道,这个编码器周反馈脉冲数有三种可以由用户选用1024、2048、4096;
5、这个图中有两个计数器,一个是编码器反馈脉冲的计数器,也是伺服当前实际位置的计数器,即图中Free-running position counter,他的读数就是伺服当前的实际位置;
6、另一个计数器就是最右边的N0.of signal period,这个计数器就是指令脉冲计数器,用户输入的指令脉冲数就储存在这个计数器中,伺服运行中,它的读数就是距离目标控制位置或者简单说距离终点的指令脉冲数;
7、这两个计数器的读数是互补的,就是说他们的读数的和,等于伺服运行全程的指令脉冲数;
8、这个典型的闭环控制系统中,还有一个非常重要的乘法器multiplication by hardware ;
9、乘数x 2^n,,它的倒数I/2^n就是我们平时说的电子齿轮比;
10、它是联系两个计数器的纽带,就是人民币与美元的换算率;
11、编码器周反馈脉冲数×2^n=周指令脉冲数
电子齿轮比=1/2^n=编码器周反馈脉冲数/周指令脉冲数
12、伺服的一个控制过程,就是当前位置反馈脉冲计数器的读数,由零到终点位置的读数;
13、伺服的一个控制过程,就是目标位置指令脉冲计数器的读数,由起点指令脉冲数到终点位置的零读数;
14、关于 Fine resolution 高分辨率高解析度脉冲数,它是1个n位数,等于n-1、n-2、…、0;
15、这个n位数的脉冲数等于指令脉冲数÷2^n的余数,例如
1)周指令脉冲数65536;
2)编码器周脉冲数=4096;
3)2^n=16,即 周指令脉冲数65536=编码器周脉冲数4096×2^n
4)指令脉冲数=65536λ
5)Fine resolution脉冲数=65536λ÷16的余数,是1~15个,n=4;
14、关于 Fine resolution 高分辨率高解析度脉冲数,它是1个n位数,等于n-1、n-2、…、0;
15、这个n位数的脉冲数等于指令脉冲数÷2^n的余数,例如
1)周指令脉冲数65536;
2)编码器周脉冲数=1024;
3)2^n=64,即 周指令脉冲数65536=编码器周脉冲数1024×64
4)指令脉冲数=65536λ
5)Fine resolution脉冲数=65536λ÷64的余数,是1~63个,n=6;
16、征说“Fine resolution 部分: 对4倍频的光电编码器而言,这个位域占用两位”,是不懂装懂,压根就不知道是怎么回事!
17、征说“2~31的数值是由计数器对倍频的信号自动累加得来的,这一部分表示电机转过的线数。对1024线编码器, 计数范围最大为 2^30/1024 = 1048576 圈”;
18、这个计算用1024就是错误的,应该用4096×16=65536,去除2~31的数值,即
2^30/65536 = …… 圈;
19、就这个伺服位置闭环图,征从前到后,犯了多少错?表现出对控制原理完全不懂,表现出数量关系不清楚,征得表述就是胡说八道!
三、同时转征对该图的解析如下:
还是费点功夫简单讲解一下, 以光电编码器为例:
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位计数器的整体数值,不会区分那一部分。
以上是对我提供的图的简要分析, 或者是一个我说明!
4、在伺服控制运动过程中:
1)指令脉冲计数器的读数是距离目标位置的位移指令脉冲数,不断减小;
2)编码器的反馈脉冲计数器读数是从起点到当前位置的反馈脉冲数,不断增加;
5、在伺服控制运动过程中:
1)指令脉冲计数器的读数是距离目标位置的位移指令脉冲数,不断减小,在终点目标位置处,读数为零;
2)编码器的反馈脉冲计数器读数是从起点到当前位置的反馈脉冲数,不断增加,在终点目标位置处,读数为用户需要的位移脉冲数=用户输入的指令脉冲数;
6、编码器反馈脉冲计数器的读数+指令脉冲计数器的读数=定值,即两个读数互补:
1)起点(零位置)
0+指令脉冲数=指令脉冲数
2)运动过程中
编码器反馈脉冲计数器的读数增加+指令脉冲计数器的读数减小=指令脉冲数
3)终点(目标位置处)
指令脉冲数+0=指令脉冲数
4)运动控制过程中还可以写作
编码器反馈脉冲计数器对编码器反馈脉冲加计数+指令脉冲计数器对反馈脉冲减计数=指令脉冲数
1、图中的《5》,是针对编码器脉冲计数器输出的脉冲,经过p0410设置为1时,进入指令脉冲计数器减计数,就是我们平常说的位置环,编码器反馈脉冲与指令脉冲比较的过程;
2、两个计数器的读数,恰好是互补的,就是一个是另一个的补集,编码器脉冲计数器的读数,是伺服转过了多少脉冲,指令脉冲数计数器的读数是距离目标位置还剩余多少脉冲,它们的和就是用户输入的指令脉冲数;
3、”Generating the two‘s complement“生成二个补码“的说明,正好说明了这个减计数的比较原理和过程;
4、可是,有人就要歪解释,非要说成是计数器溢出的说明;
5、可是,有人就要歪解释,非要说成是计数器溢出的说明;而且要把编码器的计数器输出的反馈负锯齿波计数脉冲波形,说成是计数器读数溢出的波形!
6、讨论问题,本来是为了把问题说明白,而我们讨论问题有人故意要把问题说乱、说糊涂;
7、讨论问题,本来是爲了把问题说正确,而我们讨论问题有人故意给歪的说,歪的没法理解就达到他的目的;
1、在讨论这个伺服位置环的脉冲信号处理过程时,是不涉及计数器的溢出问题的,就是说计数器的计数位满足控制过程的需要,不会发生溢出的情况下讨论;
2、也就是说,讨论计数器溢出本来就是些废话!
3、关于粗位、细位控制的问题:
1)对于计数器来说,一个计数脉冲,计数1次;
2)对于计数器来说,一个计数脉冲,计数1次,这个计数脉冲是电机转1个圈的1个脉冲,还是电机转360°/65536的1个脉冲,计数器是不知道的;
3)这就是一个指令脉冲数的编制技巧的问题,编码器的反馈脉冲有相应的计数脉冲配合才行,所以编码器反馈脉冲计数器和给定指令脉冲数计数器的粗位、细位是对应关系;
4)仔细分析215楼、216楼的图吧!
5)当然,与一个解析度的脉冲计数与比较,有难度、有技巧、更有意义!
引用 五代重歼 的回复内容:
……连起码的常识都没有:
1.对一个真值求补只能得到唯一的一个补码,一个真值没有两个补码之说。……
1、这里说的是编码器的反馈脉冲计数的问题,没有“对一个真值求……补码”的问题;
2、这里说的互补,就是两个数集的互补,就是编码器计数器与指令脉冲计数器的读数互补;
3、这里要说一个常识:
1)在说两个角互补时,就是两个角得和是180°;
2)当两个数的和一定,一个增大,另一个减小,说这两个数互补;
3)在数的集合里,有一个集合是另一个集合的补集,或者两个集合互补;
4)在直角三角形中,两个锐角大小之间的关系,也是互补的关系,叫一个是另一个的余角;
5)色有补色,三基色,红的补色是绿、蓝,绿的补色红、蓝,蓝的补色是红、绿;
6)照相时的底片与洗出来的相片是黑、白或明、暗互补;
……
引用 五代重歼 的回复内容:
……那个注解写的是补码,不管你要把它认为是几个补码(你说的:生成二个补码!),是补码就是数据!是数据就不是你说的什么尖脉冲、锯齿波!……
1、五代认为注解是关于溢出波形的注解,那么注解写的是“补码”,请问“溢出”与“补码”有什么关系?这里有你说的真值吗?溢出要求真值的“补码”吗?
2、我从来都没有说,它有什么说明,《5》是针对这一部分“功能”的说明;
3、这个编码器反馈负锯齿波脉冲,在编码器脉冲计数器里加计数,在指令脉冲计数器里减计数,两个计数器的读数互补,这就是Generating the two‘s complement“生成二个补码“的说明所表述的意义;
4、这里有:
1)生成Generating ,一个加计数,一个减计数,是生成的过程;
2)补码 complement,编码器脉冲计数器的读数与指令脉冲计数器的读数之和一定,为互补的读数关系;
3)两个two,两个计数器的读数;
5、这个说明《5》,就是位置环的工作原理,就是反馈脉冲与指令脉冲的比较的过程,简单说,位置环就是指令脉冲数对编码器反馈脉冲减计数的过程!
引用 五代重歼 的回复内容:
你先说“补码”一词是胡说八道,现在又自己弄出个“两个补码”的概念出来,到底还有没有点底线,知不知道害臊?
1、这里是编码器反馈脉冲计数器,是对反馈脉冲计数的,说白了就数数;
2、不存在字节,以及构成字节的数码、原码、补码、真值的问题;
3、在计算机里,总是用一定长度的字节来表示一定的信息;
4、这个字节在运算、传输时,常常需要这个字节的补码:
1)例如,字节是00101,那么它的补码就是,各数位取反即11010;
2)就好像照相时,先照的是一个底片,然后用底片洗出照片来,照片与底片是黑白互补的,照片白的地方,对应底片是黑的地方;
3)数字运算、传输时,也需要字节的补码,相对补码的字节就是原码;
5、把不是计算机的英语,放到计算机英语专业词典里,翻译的结果是“二进制补码”的结果,这本来是个笑话;
6、如果你放到三基色的专业词典里,还会得到两补色;
7、放到集合里,两补集;
8、放到几何里,两补角; ……
9、到底怎么翻译,要看英语出现的背景,它出现在编码器脉冲计数器与指令脉冲计数器之间的一个功能解释,这里明显有
1)两个计数器的两个读数互补;
2)生成的过程是编码器负反馈脉冲在编码器脉冲计数器中的加计数和在指令脉冲计数器中的减计数,生成的结果;
3)这样Generating the two‘s complement的英文意思不是很明确的表达了上述功能吗!还有什么值得质疑的地方?
10、还要用“二进制补码”来歪解释,还问别人“到底还有没有点底线,知不知道害臊?”,真是不知天高地厚!
1、这是这张图上的几个功能的说明;
2、我们把它们翻译一下
1)《3》For “En Dat encoders”,these parameters are read out autom atically
“En数据编码器”,这些参数自动读出;
2)《4》For SIMOD RIVE –compatible functions: Set p0418 = 11.
通道–兼容功能:集p0418 = 11。
3)《5》Generating the two‘s complement
生成的2的补码
4)《6》Gn_XIST1 is a Free-running position value
gn_xist1是一个自由运行的位置值。
The external control must process the overflows
引用 ShowMotion 的回复内容:
…… process 是处理,应对,表示这种情况会出现,你必须进行应对,而不是禁止出现。
1、在伺服控制中,用户在设定参数、给定参数时,要避免计数器溢出;
2、在故障情况下,伺服电机失控,计数器故障溢出,系统一般用限位控制措施进行保护;
3、例如“一个带65536编码分辨率的伺服电机,需要旋转65537转后停止,计数值超过32位了,”,用户在给定指令脉冲时,可以将系统的解析度由65536降到32768,这样电机的转数范围可以扩大到131072转,这样就避免了计数器的溢出;
4、用户这样做,就是这句话的意思The external control must process the overflows!
引用 ShowMotion 的回复内容:
……按刘老师的概念英文原文应该是:The external control must avoid the overflows process 是处理,应对,表示这种情况会出现,你必须进行应对,而不是禁止出现。
1、当然,所谓处理,指的是“外部”即用户的处理,用户的应对,用户应对的方法,就是上边说的方法;
2、伺服里边会设计一个,处理溢出的一个电路吗?ShowMotion说的内部处理,会是个什么样?
3、下面我来说说,内部怎么处理溢出,或者怎么应对溢出:
1)举例说吧,一个三位十进制计数器,最小是 000,最大是 999;
2)如果再+1,这个三位十进制计数器读数就是 000,溢出1次;
3)如果再+999,再+1,这个三位十进制计数器的读数又是000,溢出2次;
……
4)只要将溢出的次数2与当前三位数相加,就可以得到实际读数;
5)所以你只要记录溢出的次数2就可以了;
4、聪明的人会问,那干脆设计成4位十进制数多好,你记录溢出的次数不就是一个计数器吗?为什么要脱了裤子放屁呢?
5、所以处理所谓计数器溢出,或者应对计数器溢出的方法,都是无稽之谈;
6、要么增加计数器的数位,要么不允许溢出,没有处理、应对溢出的方法问题!
7、The external control must process the overflows!就是告诉用户不能溢出,在设计、给定参数时,保证伺服正常运行不会出现计数器溢出的情况;
8、例如上边已经说得方法,“一个带65536编码分辨率的伺服电机,需要旋转65537转后停止,计数值超过32位了,”,用户可以将系统的解析度由65536降到32768,这样电机的转数范围可以扩大到131072转,这样就避免了计数器的溢出。
9、这就是The external control must process the overflows!
10、如果伺服运行允许溢出,那还要这个英文说明吗?
引用 ShowMotion 的回复内容:
……你说不溢出就不溢出?你说位置走多远就走多远?溢出是不受您控制的,您不可能限制说:伺服是不能朝一个方向转多久的,否则溢出我就乱套了。那就要解决溢出后进位或修改溢出计数变量对吧?……
1、ShowMotion的这句话,说明了ShowMotion对伺服控制过程外部用户如何处理计数器溢出的基本方法不懂;
2、ShowMotion说,“你说不溢出就不溢出?你说走多远就走多远?溢出是不受你控制的”,大家想一想溢出是不受控制的吗?
3、我来讨论下用户如何控制计数器溢出的问题:
1)一个32为计数器,可以记65536×65536转个脉冲;
2)那么用户确定脉冲当量、确定周指令脉冲、电子齿轮比时,指令脉冲数就有一个范围,就是
指令脉冲数<65536×65536
3)如果用户确定
周指令脉冲数=65536,那么电机的转数要<65536转
周指令脉冲数=32768,那么电机的转数要<131072转
周指令脉冲数=16384,那么电机的转数要<262144转
周指令脉冲数=8192, 那么电机的转数要<524288转
周指令脉冲数=4096, 那么电机的转数要<1048576转
周指令脉冲数=2048, 那么电机的转数要<2097152转
周指令脉冲数=1024, 那么电机的转数要<4194304转
周指令脉冲数=512, 那么电机的转数要<8388608转
……
4)所以用户总可以把指令脉冲数控制在65536×65536个脉冲范围内,保证伺服一个伺服运行周期计数器不会溢出;
4、ShowMotion说“你说不溢出就不溢出?”,那当然说不溢出就不溢出;
5、ShowMotion说“你说走多远就走多远?”,那当然说走多远就走多远;
6、ShowMotion说“溢出是不受您控制的”,我说用户通过设定、给定参数,就是能有效地控制计数器的溢出!!!
7、这就是The external control must process the overflows!
下面谈谈关于系统解析度的问题
1、系统检测电机角位移的分辨率,即解析度;
2、用户设定的周指令脉冲数例如65536,为系统对电机角位移的检测分辨率的要求;
3、编码器的周反馈检测脉冲数例如4096,为系统检测电机角位移的分辨率;
4、当系统要求的分辨率即用户设定的周指令脉冲数,
周指令脉冲数>编码器的周反馈脉冲数
则系统检测电机角位移的分辨率=编码器的周反馈脉冲数;
5、当系统要求的分辨率即用户设定的周指令脉冲数,
周指令脉冲数<编码器的周反馈脉冲数
则系统检测电机角位移的分辨率=用户设定的周指令脉冲数;
6、通道的周脉冲数=编码器周反馈脉冲数×2n=编码器周反馈脉冲数/电子齿轮比=周指令脉冲数;
7、所以你使用高解析度的编码器,系统的实际分辨率可能很低,受用户的要求或设定的周指令脉冲数低的约束;
8、所以当用户要求分辨率高或设定的周指令脉冲数高,系统的实际分辨率可能很低,受编码器的周反馈脉冲数低的约束;
9、举例说
1)周指令脉冲数65536,编码器周反馈脉冲数4096,则系统分辨率即解析度是360°/4096;
2)周指令脉冲数4096,编码器的周反馈脉冲数65536,则系统分辨率即解析度是360°/4096;
10、所以影响系统分辨率即解析度的因数
1)用户设定的周指令脉冲数;
2)编码器的周反馈脉冲数;
3)电子齿轮比的作用是,总能使通道运行的周脉冲数与之兼容!
我终于明白了,竟然没有一个人知道,用户如何设定参数可以避免脉冲计数器溢出!!!
-------------------------------------------------------------
這關用戶什麼事 若是做往復運動 若以32位的系統 你算算看能讓機構跑多長的長度 若是以本題原是同步追隨內部的流程 周而復始的追隨 從軸會跟隨主軸的變化而改變 他只是一個暫存的位置區塊 不會占著茅坑不拉屎
你阿 運動模組 跟驅動模塊 你只會把他硬扯在一起 兩種編碼器你把他混在一起 一個旋波編碼器經倍頻轉換成16位的絕對命令(編碼)
我終於明白 瞎扯真是你的專長