编码器接口协议:ABZ信号详解、SSI同步串行接口、BiSS-C协议、EnDat协议、霍尔传感器与编码器关系

各位做电机控制的同行,今天我们来聊聊编码器的接口协议。说实话,这玩意儿是连接机械世界和数字世界的桥梁。我见过不少项目,电机选型没问题,算法也写得漂亮,结果栽在编码器接口上——要么信号抖动,要么丢步,要么干脆不通讯。

编码器接口协议,说白了就是编码器怎么把位置信息告诉控制器。不同的协议,速度、精度、抗干扰能力都不一样。咱们一个一个来看。

核心观点:选对接口协议,比选对编码器本身更重要。接口决定了你能跑多快、能走多远、能抗多强的干扰。

一、ABZ信号:最基础的增量式编码器接口

ABZ信号,我估计在座各位都用过。A相和B相是正交信号,相位差90度,用来判断方向和计数。Z相是零位脉冲,每转一圈发一个,用来校准绝对位置。

为什么A和B要正交?你想想看,如果只有一路脉冲,你只能知道转了多少,但不知道往哪转。有了两路正交信号,通过判断A领先B还是B领先A,就能知道方向。这是最基础也最可靠的做法。

我在一个伺服项目里遇到过一个问题:电机低速运行时,AB信号抖动特别厉害,导致计数器来回跳。后来发现是编码器安装间隙太大,加上电缆屏蔽没做好。嗯,这里要注意:ABZ信号对电缆屏蔽和差分传输要求很高。

信号 功能 典型频率 注意事项
A相 主计数脉冲 最高几MHz 与B相正交
B相 方向判断脉冲 同A相 滞后A相90°
Z相 零位参考 每圈1次 宽度通常为1个A脉冲

我的经验:ABZ信号最好用差分传输(RS-422),单端传输在长距离(超过3米)时基本不可靠。我曾经在一条10米长的生产线上吃过亏,后来全部换成差分线,问题立刻消失。

二、SSI同步串行接口:简单可靠的绝对式方案

SSI(Synchronous Serial Interface)是绝对式编码器最常用的接口之一。它只有三根线:时钟(CLK)、数据(DATA)、地(GND)。控制器发时钟脉冲,编码器在每一个时钟上升沿或下降沿送出一位数据。

SSI的好处是简单。真的,太简单了。我最早接触绝对式编码器就是用的SSI,一个SPI接口就能搞定。但简单也有代价——速度上不去。时钟频率一般不超过2MHz,数据位长通常13位到25位,算下来更新率也就几十kHz。

我曾经在一个高速主轴项目里试过SSI,结果发现转速超过5000rpm时,位置更新跟不上。后来换成了BiSS-C,问题才解决。所以SSI适合中低速应用,比如机械臂关节、数控机床的进给轴。

避坑指南:SSI的时钟线必须屏蔽,否则干扰会直接耦合进数据线。我曾经因为时钟线跟动力线走同一个线槽,导致数据错位,排查了整整两天。

三、BiSS-C协议:开源高速的工业标准

BiSS-C(Bidirectional Synchronous Serial Interface - Continuous)是iC-Haus公司推出的开源协议。说它开源,是因为你不需要交授权费,直接用就行。这在工业界是个大杀器。

BiSS-C跟SSI有点像,也是时钟+数据,但多了双向通讯能力。控制器不仅能读位置,还能写参数——比如修改分辨率、设置报警阈值。而且BiSS-C的时钟频率可以跑到10MHz以上,数据更新率远超SSI。

我目前做的机器人项目,关节编码器全部用的BiSS-C。为什么?因为机器人需要高带宽的位置环,BiSS-C的延迟只有几微秒,比SSI快了一个数量级。

特性 SSI BiSS-C
时钟频率 ≤2MHz ≤10MHz
通讯方向 单向(只读) 双向(读写)
数据校验 无/可选 CRC6强制
授权费用 无 无(开源)
典型延迟 ~10μs ~2μs

关键点:BiSS-C的CRC校验是强制的。这意味着如果通讯受到干扰,控制器能检测到数据错误并采取行动(比如重读或报警)。SSI没有这个能力,数据错了就是错了。

四、EnDat协议:海德汉的闭环生态

EnDat是海德汉(Heidenhain)的专利协议。没错,要交授权费的。但贵有贵的道理——EnDat是目前最成熟的编码器通讯协议之一,支持高速、长距离、多轴同步。

EnDat 2.2版本支持时钟频率到16MHz,数据位长可以到32位甚至更高。而且它内置了存储芯片,可以保存编码器的校准参数、序列号、温度数据等。这对于高端机床和光刻机来说非常有用。

我个人对EnDat又爱又恨。爱的是它确实稳定,我用在精密磨床上,位置重复精度能做到0.1微米。恨的是贵,而且必须用海德汉的编码器和配套的接口芯片,生态封闭。

我的建议:如果你的产品是高端设备,不差钱,而且需要极高的可靠性和精度,EnDat是首选。如果是成本敏感的中低端产品,BiSS-C更合适。

五、霍尔传感器与编码器的关系

霍尔传感器,说白了就是最简单的磁编码器。三个霍尔元件(H1、H2、H3)相隔120度安装,输出三路高低电平信号,组合起来可以表示6个扇区(60度一个扇区)。

霍尔传感器能做什么?

  • 换相:无刷直流电机(BLDC)必须知道转子位置才能换相。霍尔传感器提供60度分辨率的位置信息,够用了。
  • 速度估算:通过霍尔信号跳变的频率,可以估算转速。但精度不高,低速时尤其不准。
  • 与编码器配合:很多伺服电机同时装霍尔和编码器。霍尔用于启动时的初始位置检测和换相,编码器用于高精度位置控制。

我做过一个项目,只用霍尔传感器做位置控制,结果低速时抖得像筛子。后来加了一个磁编码器(AS5048),用霍尔做粗定位、编码器做精定位,效果立竿见影。

注意:霍尔传感器的安装角度必须精确。120度偏差超过1度,换相就会出问题。我曾经因为霍尔支架加工误差,导致电机在某个扇区扭矩骤降,查了好久才发现是霍尔位置偏了。

六、协议对比与选型建议

说了这么多,到底怎么选?我整理了一个对比表,方便你快速决策。

协议 类型 速度 成本 适用场景
ABZ 增量式 高 低 通用伺服、步进电机
SSI 绝对式 中 中 机械臂、数控进给轴
BiSS-C 绝对式 高 中 机器人、高速主轴
EnDat 绝对式 高 高 精密机床、光刻机
霍尔 增量式(粗) 低 极低 BLDC换相、低速检测

选型时,我一般按这个顺序问自己:

  1. 需要绝对位置还是增量位置?——绝对位置选SSI/BiSS-C/EnDat,增量选ABZ。
  2. 转速多高?——超过5000rpm,放弃SSI和霍尔。
  3. 成本敏感吗?——敏感选BiSS-C,不敏感选EnDat。
  4. 需要双向通讯吗?——需要就选BiSS-C或EnDat。
编码器接口协议选型决策树 编码器接口选型 增量式 绝对式 ABZ信号 霍尔传感器 SSI(中速/低成本) BiSS-C(高速/开源) EnDat(高精度/封闭) 选型建议: • 通用伺服/步进电机 → ABZ(成本最低) • 机械臂/数控进给轴 → SSI(简单可靠) • 机器人/高速主轴 → BiSS-C(高带宽、开源) • 精密机床/光刻机 → EnDat(极致精度)