第三节 绝对式编码器原理:单圈/多圈编码、格雷码与二进制码、SSI/BiSS/EnDat协议简介、数据帧结构解析

各位工程师朋友,咱们今天聊聊绝对式编码器。说实话,我刚入行那会儿,总觉得增量式编码器够用了,便宜又简单。直到有一次做机器人关节位置反馈,断电再上电,机械臂直接撞了限位——嗯,从那以后,我对绝对式编码器就再也不敢轻视了。

3.1 单圈编码与多圈编码

绝对式编码器的核心价值,说白了就是「断电不忘事」。你想想看,设备关机再开机,位置信息还在不在?增量式编码器需要回零,绝对式不需要。

单圈编码:一圈之内,每个角度都有唯一编码。比如一圈360度,用12位分辨率,那就是4096个位置。我习惯把单圈编码器比作「手表上的时针」——你只看时针,就知道现在是几点,但不知道是上午还是下午。

多圈编码:不仅记录当前圈内的位置,还记录转了多少圈。这就像手表加了日期显示,你不仅知道几点,还知道今天是几号。多圈编码器内部通常有机械齿轮组或电子计数器,能记录4096圈甚至更多。

避坑指南:我曾经在AGV小车上用过一款单圈绝对式编码器,结果发现车轮转了好几圈后,位置信息就乱了。后来换成多圈编码器,问题才解决。记住:只要你的设备可能转动超过一圈,就必须用多圈编码器。

3.2 格雷码与二进制码

绝对式编码器的输出编码,最常见的就是二进制码和格雷码。这两者有什么区别?我直接说结论:格雷码更可靠。

二进制码:就是咱们熟悉的0和1组合。比如位置0是0000,位置1是0001,位置2是0010……看起来挺直观,对吧?但问题来了:当从位置1(0001)变到位置2(0010)时,有三位同时变化。如果编码器在边界处抖动,或者读取时序稍有偏差,你可能会读到0111、0011等乱七八糟的值。这就是所谓的「毛刺」问题。

格雷码:相邻两个位置之间,只有一位发生变化。比如位置0是0000,位置1是0001,位置2是0011,位置3是0010……你看,每次只变一位。这样即使读取时有抖动,最多错一个比特位,不会出现离谱的跳变。

位置二进制码格雷码
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100

实用技巧:格雷码转二进制,我常用的方法是:最高位保持不变,然后从高位到低位,每一位等于前一位二进制值与当前格雷码值异或。代码实现也就几行,但能省去不少调试时间。

3.3 SSI/BiSS/EnDat协议简介

编码器读出来的数据,总得传给控制器吧?这就涉及到通信协议了。目前工业界主流的绝对式编码器协议,我归纳为三大派系:

  • SSI(同步串行接口):最经典,也最简单。时钟线+数据线,主设备提供时钟,从设备(编码器)在时钟上升沿或下降沿输出数据。我最早接触的就是SSI协议,一根时钟线一根数据线,逻辑分析仪一挂,数据就出来了。缺点是速度慢,一般不超过5MHz,而且没有校验。
  • BiSS(双向同步串行接口):可以理解为SSI的升级版。它保留了SSI的简单性,但增加了CRC校验和双向通信能力。BiSS C模式是目前的主流,支持最高10MHz时钟,还能读取编码器的参数信息。我个人觉得,BiSS是性价比最高的选择。
  • EnDat(海德汉编码器接口):海德汉公司的专利协议,性能最强,但价格也最贵。支持高速传输(最高16MHz),带CRC校验,还能传输温度、报警等附加信息。如果你做高端伺服驱动器,EnDat几乎是标配。

注意:这三种协议的物理层都是RS422差分信号,但电气参数和时序要求略有不同。我曾经在项目中混用过BiSS和SSI的收发器,结果通信不稳定,排查了两天才发现是终端电阻匹配的问题。所以,别偷懒,严格按照手册来。

3.4 数据帧结构解析

协议讲完了,咱们看看数据帧到底长什么样。以SSI为例,它的数据帧结构非常清晰:

时钟线:  ████████░░░░░░░░████████░░░░░░░░
数据线:  ░░░░████████████░░░░░░░░░░░░░░░░
         ↑起始位  ↑位置数据  ↑校验位  ↑停止位

具体来说:

  • 起始位:通常为高电平,表示数据开始
  • 位置数据:单圈数据+多圈数据,比如25位单圈+12位多圈
  • 校验位:奇偶校验或CRC(SSI通常没有,BiSS和EnDat有)
  • 停止位:低电平,表示数据结束

BiSS C模式的数据帧稍微复杂一点,但核心思想一样:

| 起始位 | 控制位 | 位置数据 | CRC | 停止位 |
|  1 bit | 2 bits |  N bits  | 6 bits | 1 bit |

控制位用来区分是位置数据还是参数数据。CRC校验用的是多项式,比如x^6 + x^1 + x^0。我建议你在接收端一定要做CRC校验,别问我为什么——有一次编码器线缆被压了一下,数据偶尔出错,要不是CRC拦着,设备就飞车了。

3.5 知识体系总览

下面这张图,是我自己总结的绝对式编码器知识框架,你看一眼就能明白各个知识点之间的关系:

绝对式编码器 编码方式 单圈编码 多圈编码 码制 二进制码 格雷码 通信协议 SSI BiSS EnDat 数据帧结构 起始位 位置数据 校验位 停止位 CRC校验

这张图把绝对式编码器的核心知识点串起来了。你从中心往外看:编码方式决定你能测多少圈,码制决定数据可靠性,通信协议决定怎么传数据,数据帧结构决定怎么解析。这四个维度,基本覆盖了选型和开发的所有关键点。

我的建议:如果你刚开始接触绝对式编码器,先从SSI协议和格雷码入手。这两个最基础,也最容易上手。等搞明白了,再去看BiSS和EnDat的细节。别一口吃成胖子,做工程讲究循序渐进。


专注资料整理