二十年了,编码器接口还是那两家说了算

首发于公众号「如是有为」 · 查看原文

二十年了,编码器接口还是那两家说了算

本地修订于2026-10-24:以下已订正SSI附加状态、BiSS速率与线长组合、协议采样事件三处技术判断;原发布日期保留。

我那张十五年前的时序图,只画对了一半

我翻出十五年前画的第一张编码器接口时序图,纸边还压着当时记的页码。一根时钟、一根数据,我拿示波器两根探头分别戳上去,数了一个下午,自认为看懂了这套接口。后来才反应过来,我看懂的只是它怎么把数据抖出来,不是它怎么活到今天。

那套接口是 SSI。主控发时钟,编码器顺着移位把位置送回来,简单到几乎没门槛,谁都能实现。我头一回查它资料时还觉得这是它最大的优点——直到我在系统里第一次被它坑了。

SSI的基本传输方式并未统一各家状态位和校验定义,但这不等于SSI设备不能传状态。具体产品能够在位置数据后附加错误、告警或奇偶校验等字段,主控必须按该型号的帧定义解释。问题是实现与主机是否约定一致,不能仅凭SSI名称判断诊断能力。

SSI能附状态,不等于有统一的可写控制通道

位置和状态都可以由编码器沿单向数据线送出;有没有反向命令,与能不能附状态不是同一个问题。Beckhoff SSI接口说明要求按编码器定义配置帧,并说明附加状态/错误位。因此原文“没有加状态字的地方”和“只能回答位置”两处判断撤回。

设定24位位置、500kHz时钟,纯位置段耗时48μs;若增加状态位,传输长度也要增加。帧间暂停、锁存事件及状态位的语义继续查具体手册,不能把某器件的暂停时间当SSI通用规范。

让编码器开口说话、还会记事,得多开路

那要让编码器"报故障、报诊断、报自己是谁",技术上得怎么做?我顺着这条思路把市面上那些接口一个个翻开,才发现真正拉开差距的不是传输协议本身,是有没有一条反向通道、有没有一片能寻址的存储区。

海德汉的 EnDat 是双向的。同样是串行,它只用了四条信号线(CLOCK、CLOCK、DATA、DATA,EIA RS-485 差分电平),但主控发给编码器的模式指令能挑这次要什么——是要位置值,还是要参数,还是要诊断信息。它能把位置值、错误状态、附加数据塞进同一帧里,滚动着送。短周期能压到 15µs,20 米电缆下时钟到 16MHz,100 米还有 8MHz,还按 SIL 3 安全等级做过收敛。到这一步,接口已经不是"把角度传回去",是主机和编码器之间一段会对话的协议。

iC-Haus 主导的 BiSS-C 走的是开放路线,协议规范公开、谁都能实现,还兼容 SSI 硬件——它同样把状态、参数、温度、配置描述都带上了,CRC 分着校,速率必须与电气层、收发器和线长配套读。BiSS应用笔记AN15给出的典型线长/时钟对照不能合并成“10MHz@1km”;原文这一组合撤回。SICK 的 Hiperface 则是另一路,靠"上电就把绝对位置经过 EIA-485 送给驱动器、让它免回零初始化位置计数器"这一手占了伺服电机。

EnDat 还会记事:编码器里那本"电子铭牌"

可我真正停下来,是发现 EnDat 不只是"会说话",它还会记事。它能反向去读写编码器内部的参数表、补偿表、电子铭牌、诊断字。驱动器一上电,先跟这颗编码器把"你是谁、这轴怎么配、上次坏在哪儿"整件事对完,才进入正常读数。

编码器不再是一颗只会吐角度的传感器,它变成一台带内存、带档案的终端。到这一步,接口早就不是传输层的事,是生态层的事:你换掉 EnDat,不是换根线,是把驱动侧这几年靠它攒下的那套"自动配置、在线诊断、补偿表、电子铭牌"一起搬空。它们进去了,就住下了。

所以"那两家"不是写得好,是这层墙砌得厚

把这一层拱到底,那句"二十年了还是那两家说了算"就有了答案——不是因为它俩的协议写得最漂亮,是它们把"让编码器说话、会记事"这一整套生态,用二十多年伺服工厂里每一根线、每一个诊断位、每条标定流程,一点点砌成了墙。手上量够的,定的东西才叫协议;量不够的,叫私有格式。

也正因为这样,BiSS-C 明明开放、技术不弱,却始终当不了"那两家"——开源意味着谁都能做、没有一家背书,可驱动器厂凭什么为它单独开一套 IP?它 FPGA 里已经有 EnDat 和 BiSS-C,多一套就多一份维护、一份测试、一份认证,除非你带来足够的装机量,否则这笔账算不过来。协议要成立,得编码器厂、驱动器厂、客户三方同时点头,任何一方不动,协议就死。这个循环我想绕开好几回都没绕成:没有装机量就不能定协议,不能定协议就做不出差异化,做不出差异化就拿不到装机量。

可这两年确实动了一点,我又犹豫了

到这儿我本可以打住。可这两年情况确变化了一点。伺服从单台走向关联系统,闭环、轴序连接、CRC、诊断字,协议越来越往"整个驱动器生态"上靠;另一些公司把编码器和驱动器都握在自己手里,理论上这是定协议最有利的位置——发送侧接收侧都是自己的,谁都不用说服。可客户一句话就把路堵回去:你这个协议,我以后换供应商还能用吗?

客户买的从来不是性能,是退出的自由。用 BiSS-C,他随时能换一家编码器;用你的私有协议,他就被锁死了,而且锁的是那一整层"电子铭牌/补偿表/诊断"的档案。锁客户这件事,只有你很强的时候才敢做;你弱的时候做,客户连看都不看你。

两条绕过去的路,我都试过

我现在的判断带着问号。技术上,做一个比 SSI 好的协议真不难,加 CRC、加状态字、定好帧格式,一个工程师两周能写完;可"让全世界跟着你实现"这件事,两年都未必够。我比较认两条路:一条是在标准协议上加一层——底层还是 BiSS-C 或标准帧,客户随时能退回去,额外的诊断、质量指标、时间戳走扩展字段,好处是不用说服驱动器厂改任何东西,坏处是能塞的东西受限于标准留的那个口子。

二十年一遇的窗口:谁先把"采样时刻"绑死

另一条是去还没有标准的地方。人形机器人的关节,现在还没被工业伺服那套接口彻底定型,各家都在自己定,这是二十年一遇的窗口。可窗口关得也快,一旦头部整机厂定了自己的规范,后面的人就只能跟。“没有任何标准协议管采样时刻”这一判断撤回。BiSS-C D2第10页已有LAT触发及后续处理的定义。系统还要核具体器件的测量有效时刻、内部滤波和主控使用时刻,不能把协议事件直接当作整条模拟链零延迟。可验收的问题应写成从采样到使用的时间约定。

占上那一行,是不是我一厢情愿

可话说到这儿我自己也心虚。

“占一行"是不是也只是一厢情愿?二十年了,真能占到那行的,从来不是喊得响的,是装机量够撑起整个生态的。我大概率还会继续在示波器前盯时序图,只是现在会多问一句:这条协议真出了事,我手上能留下什么证据。

应作如是观
公众号「如是有为」二维码

关注公众号「如是有为」

微信扫一扫,新文章先在公众号发出。