在做机械控制和嵌入式开发的工程师,对“编码器”这个词都不会陌生。但从汽车行业跑到机器人行业,你会明显感觉到一件事:同一颗旋转编码器,在两边的待遇差别实在太大了。汽车早就被 ISO 26262 那张功能安全“考卷”虐了很多年,ASIL、诊断覆盖率、FIT 率这些概念已经变成默认语言;可到了机器人关节,大家聊得更多的还是分辨率、重复定位精度、温度漂移,甚至“这个磁编码器会不会丢码”,很少有人真正用功能安全的框架去考核关节里的那颗编码器。我自己的体会是,这不是大家不想做,而是整个机器人行业在零部件级安全上确实还没有一张足够成熟的“卷子”。这篇文章想好好聊聊,汽车那张卷子到底考了什么,为什么机器人关节一直没人出卷,以及如果让你我来出一份,应该怎么下手。
1. 汽车那张卷子考的是什么:ISO 26262 对编码器的真实要求
1.1 编码器在车上到底管哪些事
在汽车电动化之前,编码器主要出现在仪表、车窗电机这类低安全等级场景,坏了无非是功能不工作,重新开关一下就好。真正让编码器被划进“安全件”的,是 EPS 电动助力转向、电子换挡、电子制动和新能源车的电机转子位置检测。转向时方向盘打了多少度、电机的磁场位置在哪、换挡机构是不是真的挂到了 P 挡,这些信号一旦出错,轻则功能混乱,重则直接威胁到驾驶员生命。
这时候编码器就不再是“一个测位置的传感器”,而是安全相关系统里的一个“信号源”。ISO 26262 要求对任何安全相关电子电气系统做完整危害分析和风险评估,编码器作为传感器,自然会被分到相应的 ASIL 等级。EPS 的角度传感器通常要到 ASIL D 或者 ASIL C(D),一些换挡位置传感器相对会低一些,可能只要 ASIL B。这个等级不是随便定的,它决定了你后面要做多少诊断、加多少冗余、定多少 FIT 目标。
我在汽车供应链上接触过的做法,很多公司甚至不会直接买编码器模块,而是买裸芯片,自己画传感器 PCB,再把 PCB 周边的诊断电路、通信接口一并做进去。因为他们清楚,编码器本身只是一个磁性敏感元件或者光学码盘,真正能在 ASIL 框架下过关的,是整个传感器子系统。
1.2 考点拆解:ASIL 分解、诊断覆盖率与 FIT 率
ISO 26262 这张卷子上,跟编码器关系最紧密的主要是三个考点:ASIL 等级、诊断覆盖率、随机硬件失效率。ASIL 决定了你的安全目标有多高;诊断覆盖率决定了你发现故障的能力;失效率则决定了你兜底能兜到什么程度。
先说诊断覆盖率。编码器最常见的失效模型包括:供电失效、磁铁脱落或退磁、码盘污染、信号调理芯片内部故障、通信链路 CRC 错误、数据卡死等。针对每一个失效模式,你都得有一种或多种诊断机制。比如供电失效,可以用低压检测;通信错误,可以靠 CRC 校验和超时机制;如果是绝对位置信号异常,可以靠冗余位置通道交叉比较。诊断覆盖率不是拍脑袋算的,要做故障模式分析,算出每一种机制对总失效概率的覆盖比例。拿 ISO 26262 常见 KPI 来看:
| 指标 | 典型要求 | 对编码器的含义 |
|---|---|---|
| SPFM 单点故障度量 | ASIL B ≥90%,ASIL C ≥97%,ASIL D ≥99% | 能够被诊断机制覆盖的单点故障占比 |
| LFM 潜伏故障度量 | ASIL B ≥60%,ASIL C ≥80%,ASIL D ≥90% | 潜伏的、不可直接发现的故障占比限制 |
| 随机硬件失效目标 | 一般按安全目标分配到 PMHF | 比如 ASIL D 量级常在 10 FIT 以下 |
这里 10 FIT 是个什么概念?FIT 是每 10 亿小时内的失效率。因为 10亿小时太长,大家按“设备小时”来算。假定编码器芯片单点故障率是 500 FIT,安全机制覆盖率 90%,那么有效暴露给系统的危险故障就是 50 FIT 左右。你还要算安全机制自身出错的概率,最后才能把整体 PMHF 压到安全目标以下。这也是为什么汽车编码器很少是“孤零零芯片”的原因,往往搭配 MCU 上的安全监控软件、双通道位置反馈、看门狗和时间戳逻辑,一起组成一套安全机制。
1.3 汽车上的编码器是怎么做到高可靠的
既然要求这么苛刻,汽车上实际用的是什么方案?这里要澄清一个常见误区:很多人以为汽车编码器都是旋转变压器,实际上随着磁编芯片的成熟,EPS 里用 AMR、TMR 和霍尔效应的芯片越来越多。原因也很直接:成本低、体积小、可以贴片,还能做冗余。
一种常见设计是“两颗磁芯片 + 一个磁铁”双通道结构。磁铁旋转时,两颗芯片分别输出各自的角度,MCU 通过交叉比较判断两路是否一致。这种结构可以有效覆盖“磁铁脱落导致两路同时跳变”以外的绝大多数故障。还有一种做法是单芯片内部集成双通道,像很多车规磁编芯片内部有两个独立的采样通路,输出上还会带 SPI 通信的 CRC 校验,甚至自动做磁场强度监测和温度补偿。
在协议层面,汽车通常不用那种裸 PWM 输出就完了,而是走 SPI、SENT 或 CAN,里面带帧计数、CRC、半字节校验。因为安全通信协议要能区分“数据没更新”和“数据变了但错了”,如果仅仅是一个电压输出,报文的时序和幅值漂移很难做诊断。
汽车考了很多年,背后的逻辑其实很清晰:先定安全目标,再做失效分析,再上诊断与冗余,最后用数据和测试证明覆盖率。编码器在整个链路里是很小的一颗器件,但它被当成一个完整子系统来考核,这就是“出卷子”的样子。
2. 到了机器人关节,为什么这张卷子一直没人出
2.1 现有机器人安全标准想考的是“系统”,不是“元件”
很多工程师听到“机器人安全”第一反应是 ISO 10218 和 ISO/TS 15066。这些标准确实对工业机器人和协作机器人的安全要求做了大量规定,像安全限速、安全停机、力矩限制、安全监控功能,都是今天协作机器人宣传里的常客。
但问题在于,这两个标准主要站在“整机安全功能”去要求,而不是站在“编码器这种零部件”去考核。比如安全限速功能要求机器人末端速度不能超过某个阈值,它怎么判断速度?往往是通过关节驱动器的速度环反馈,这个反馈来自编码器。但标准在认证的时候,通常看到的是安全控制器做了冗余、安全继电器做了冗余、安全 IO 做了冗余,很少会深入到你那颗关节编码器内部用了什么诊断机制,有没有安全状态输出,有没有 CRC,磁铁掉了以后会不会误报位置。
也就是说,标准出的是“整机卷子”,编码器只是作为整卷里的一个隐藏考点。它会因为系统挂了而被牵连扣分,但没有人单独给它批改成绩。这在汽车行业是难以想象的:在汽车那里,一个 ASIL D 的 EPS 传感器是要单独做问询、单独过认证的,主机厂会拿着放大镜去看你芯片的 FMEDA 报告。
2.2 机器人关节的约束让“照搬汽车”很难成立
有人会说,既然汽车考得好,机器人直接抄作业不就行了?如果你真做过机器人关节,就会知道这里面的麻烦远不止标准缺失。
机器人关节空间极其有限。尤其是一体化关节,里面要塞下电机、减速器、编码器、驱动器、抱闸,很多还要求中空走线。编码器 PCB 往往只能做成一个小小的圆形板,贴着电机后端盖安装。车规方案里那些复杂的信号调理板、独立安全冗余板,在关节里根本没有物理空间。
功耗预算也是问题。汽车传感器可以从主电池拿电,容量大,发热影响相对可控;关节编码器往往靠驱动器侧的低压供电,整个关节的散热条件又差,芯片发热直接抬高温漂。磁编码器本来就有温漂,一旦温度一高,角度误差可能从 0.1 度跳到 0.5 度以上。
成本也一样敏感。协作机器人单个关节的 BOM 成本被压得非常狠,你不可能让用户为一个关节多付几十美金的“车规安全冗余”成本。很多本土机器人厂商宁可继续用消费级的磁编芯片,先把精度和价格做下来,再考虑认证。
更现实的因素是,机器人关节的失效环境和汽车差别太大。汽车编码器所在的环境有明确振动、温度、电压范围,机械结构相对固定;机器人关节会承受巨大冲击载荷、谐波减速器回差、母线电压剧烈波动,还有来自电机高频 PWM 的电磁干扰。同一个编码器,在汽车上通过的 EMC 测试,到了机器人上可能照样被 PWM 干扰打飞。
2.3 “没人出卷子”不等于没有风险,事故会倒逼标准
没有标准考核,不代表可以在编码器安全上躺平。协作机器人宣传的安全特性,本质上是建立在位置反馈可信的前提上的。安全限速判断 10 mm/s 还是 500 mm/s,依据的都是编码器反馈的速度;如果编码器在碰撞瞬间跳了几个计数,或者磁铁松动导致角度漂移,安全控制器可能把一个本应停止下来的关节判断成“仍然在限速范围内”,后果是很严重的。
我个人的判断是,随着人形机器人和高负载协作机器人越来越多,行业迟早会被几起事故逼着去补上零部件级考核。现在虽然还没有完整的机器人编码器功能安全标准,但 IEC 61508 作为功能安全基础标准是适用的,ISO 10218 也在往“包含功能安全要求”的体系演进。关节编码器被纳入安全评估,只是时间问题。与其等标准落到头上再被动应对,不如现在就按功能安全的思路把内部验收做起来。
3. 别光等卷子,先把这些风险盘一遍:关节编码器安全设计思路
3.1 机器人关节编码器最容易被忽视的失效模式
机器人行业喜欢讨论精度,但很少讨论“当它坏掉的时候,是往哪个方向坏”。你指望编码器坏了以后能立刻给一个明显异常的信号,但在实际工程里,失效往往很隐蔽。
磁铁脱落是最典型的。如果磁铁用胶水粘在电机轴端,长期高低温循环或冲击导致胶层老化,磁铁松动后角度输出会缓慢偏掉,而且不一定会报错。很多磁编码器芯片内部有磁场强度监测,低于阈值可以报“磁场异常”,但不少方案默认没有开启这个功能,或者 MCU 根本没读这个状态位。
数据链路卡死也很常见。SPI 或者 UVW 信号线受到干扰后,编码器可能持续输出上一帧数据,或者输出一个有规律但完全错误的角度。如果你在单片机侧只读最新数据,不做帧计数和超时判断,就会把“旧位置”当成“新位置”拿去算速度,速度环一下就冲起来了。
还有一个被低估的是“供电纹波耦合”。关节驱动器里的母线电压波动会通过供电线串进编码器芯片,导致角度输出周期性地跳几个 LSB。这个问题只在带载或高速时出现,实验室台架测试很难复现,而到了客户现场就表现为关节异响、抖动甚至触发超速报警。
3.2 从汽车“抄作业”:双通道、CRC、安全监控
把这些风险摆出来之后,你会发现汽车那套思维真的是可以直接“降维打击”过来的。核心思想不是堆料,而是系统性防御。
首先是冗余。机器人关节不一定非要做两颗完整芯片,很多磁编芯片本身就支持双冗余采样,比如两颗 Hall 敏感元件在同一封装里,角度输出天然带冗余校验。如果你用的是单芯片,也可以在机械上装两路编码器:一路高速增量用于控制,一路绝对式用于安全监控。现在有些中空关节已经开始这么干,只是还没有把两路信号的交叉校验做成标准功能。
其次是通信协议。哪怕是 STM32 的编码器接口模式读出来的原始计数,也要在应用层加“帧序号、方向合理性、跳变步长限制”。比如用增量编码器测速时,如果相邻两个控制周期内计数值跳变了超过电机物理极限对应的最大增量,就可以判定数据异常,立刻进入安全停机流程。绝对式磁编码器通过 SPI/I2C 读取时,尽量把 CRC 校验位打开,在数据异常时不要用旧值维持控制,宁可直接报错。
再一个是安全监控状态机。汽车上每个安全相关信号都会有一个“有效状态指示”,不是读到数字就完事。你可以定义一个关节编码器健康状态:位置是否可信、磁场强度是否正常、通信是否超时、看门狗是否被喂饱。只有健康状态为 OK,控制环才允许使用该编码器数据。这个状态机不一定需要额外硬件,很多 MCU 的普通软件定时器就能实现。
3.3 自己给自己出卷:一套可落地的技术评估表
卷子没人出,那就先出一张内部卷。我在项目里常用的评估维度是八个:失效模式覆盖面、诊断覆盖率、冗余类型、通信校验能力、温度漂移、EMC 干扰敏感性、软件异常可检测性、认证材料完备度。
| 评估维度 | 汽车编码器做法 | 机器人关节目标建议 |
|---|---|---|
| 失效模式覆盖 | FMEDA 全套分析 | 至少覆盖磁铁脱落、芯片失效、通信中断、供电异常 |
| 诊断覆盖率 | 90% 起步 | 对关键失效模式要有检测机制,争取大于 90% |
| 冗余类型 | 双通道/双芯片 | 选支持内部双冗余采样的芯片,或者外接第二路编码器 |
| 通信校验 | SPI+SENT+CRC | 打开 CRC,加超时和帧计数 |
| 温度漂移 | 全温区回读补偿 | 做-20℃ 到 85℃ 的漂移标定 |
| EMC 敏感 | 按车规标准测试 | 在关节带载 PWM 干扰下验证码值稳定性 |
| 软件可检测 | 安全状态机 | 健康状态标志 + 看门狗 |
| 认证材料 | 车规 AEC-Q100 等 | 芯片选型优先考虑有 AEC-Q100 或工业级可靠性报告的 |
这张表每半年更新一次,每个新项目开始前,先用这张表把编码器候选芯片过一遍,你就不会只看“位数”和“精度”了。
4. 实操落地:怎样把编码器安全护栏装进机器人关节
4.1 编码器选型清单:先看芯片再看封装
很多朋友选磁编码器,上来就问“是 16 bit 还是 14 bit”或者“最大转速能到多少”。这些参数当然重要,但站在功能安全角度,你还要额外看四个东西。
一是芯片有没有内置磁场诊断。靠谱的芯片,会输出一个磁场强度状态位,当磁铁靠近或远离时能报“Weak Field”。这个功能能直接覆盖磁铁脱落和退磁风险,特别适合机器人关节这种靠胶水固定磁铁的场景。
二是通信接口支不支持 CRC。现在的磁编芯片大多有 SPI 或 I2C 接口,但部分低成本型号的 CRC 是可选甚至不支持的。你要想清楚,没有 CRC 的通信链路,在强干扰下出现误码时会完全不可见,这对高安全应用来说是个大漏洞。
三是芯片有没有温度补偿和校准。机器人关节温升很快,芯片出厂时的角度误差在高温下会劣化。如果芯片自带温度补偿,或者至少提供全温区误差曲线,工程上会好办很多。
四是可靠性和认证等级。车规级 AEC-Q100 当然好,但机器人行业很多好用的编码器芯片其实是工业级。如果选不到车规,那就必须自己做足够的老化和干扰测试,别指望芯片产商替你把风险全部扛掉。
封装层面,中空关节编码器经常用小直径 PCB 板,编码器芯片附近会贴 EEPROM 存零点标定。需要注意的是,磁铁和芯片的间距公差,这个距离如果控制不好,磁场强度会进入非线性区,角度误差会明显变大。做结构设计时一定要给磁铁和芯片留一个可调整的压装工艺,而不是靠结构件“大概能对准”就完事。
4.2 软件侧护栏:编码器测速、位置差分与安全限速
选完芯片,接下来就是软件。以 STM32 的编码器模式为例,很多人喜欢直接用硬件定时器做正交解码,觉得省事。但如果你想做安全监控,就不能只依赖硬件计数本身,还要在每 1ms 或 2ms 的控制周期里,把当前计数值和上一个周期的差值拉出来和“物理极限速度”比较。
举个例子:电机最高转速假设是 3000 rpm,减速比 100,编码器分辨率 4096 线,那么关节侧每秒最大计数变化大约是 3000 / 60 * 100 * 4096,算下来约 2048 万跳,如果控制周期是 1ms,单周期最大变化约 20480 跳。如果软件读到的单周期增量超过这个数值,只有两种可能:要么是控制周期严重卡顿,要么是编码器信号受到干扰。无论哪种,都应该进入安全处理逻辑,而不是让它接着控制。
在安全限速上,比较实用的做法是维护一个“速度有效性窗口”。用至少两套速度计算方式互相校验:一套是硬件定时器测频法,一套是位置差分法。它们各自的动态响应不同,在正常运行时结果接近;一旦出现信号毛刺,位置差分法会立刻跳出一个异常值,而测频法会在一两个周期内保持旧值。两者差值超过阈值,就置位编码器预报警,连续多次超阈值就触发安全停机。
这里还可以考虑把“位置可信度”和“控制使能”绑定。在电机使能之前,先读取编码器的绝对位置和磁场状态;发现磁场弱、通信超时、计数值越界,就拒绝使能并报故障。这比运行中再发现异常要可靠得多,因为很多编码器失效在刚开始上电时就已经有了征兆。
4.3 故障注入测试:用汽车方法做机器人样件
功能安全不是“写完代码就完事”,关键要证明你的诊断机制真的能抓到故障。汽车行业经常做故障注入测试,我们完全可以在机器人关节样件上照搬。
先做一个简单的故障清单,包括:拔掉编码器通信线、用信号发生器打干扰脉冲、在磁铁旁放一个强磁体干扰磁场、提高或降低编码器供电电压、用软件强制置位 CRC 错误位等。每做一个故障注入,观察控制器是否在预期时间内进入安全状态,以及有没有误报或者漏报。
我自己的习惯是,故障注入测试要在三个条件下做:空载低速、带载高速、机械臂碰撞受力瞬间。因为很多编码器故障只在受力突变时才表现出来。做过这类测试之后,你会对所谓“安全限速”有完全不一样的体感,纸上谈兵的覆盖率看起来很高,但一注入故障就发现数据链路卡死根本没被识别,这是非常常见的。
另外,老化测试也得做。编码器最怕的就是“新样机一切正常,跑了三个月后开始偶尔卡一帧”。建议在实验室做一个长时间耐久台架,连续跑几千个小时,定期记录编码器健康状态位出现过的异常次数。如果异常次数随运行时间明显上升,说明磁路或者芯片温度特性正在劣化,这种数据对产品改进价值极大。
5. 常见问题与排查技巧实录
5.1 编码器数值跳变、I2C 读取失败怎么查
在机器人关节调试中,编码器数值跳变是最常见的诡异 Bug。现象往往很零散:时有时无的丢步、偶尔咔哒一声、示波器上看通信波形也“好像没问题”。我踩过几个坑,想直接分享排查顺序。
先查电源,再看接地。很多编码器跳变都是电源纹波造成的,驱动器的 PWM 噪声会顺着供电线窜进来。用示波器直接看编码器供电引脚,尤其是开关瞬间有没有超过 100mV 的毛刺。如果有,先加 LC 滤波或换低纹波 DC-DC,再看现象是否消失。编码器的 GND 要尽量单点连接到驱动器的模拟地,别和功率地的走线共用,这条线一出问题,SPI/I2C 的上升沿都被干扰,数据几乎必然出错。
然后查通信时序。I2C 编码器特别容易受上拉电阻影响,上拉太小波形爬升慢,上拉太大功耗高还容易边沿过冲。用示波器量 SCL 和 SDA 的上升时间,如果超过 I2C 协议要求,就得减小上拉电阻或降低总线速率。SPI 这边则要重点检查片选信号有没有毛刺,以及 SPI 时钟极性相位是不是每颗芯片要求的都不一样。
排除完这些,再怀疑芯片本身或磁铁装配。磁铁偏心、间距超出规格、安装时磕碰导致退磁,这些都会表现为特定角度区间内的误差偏大。你可以做静态标定,把关节匀速转一圈,记录每一个角度区间的绝对误差;如果误差集中在某一圈区间,大概率是机械装偏了;如果误差是无规律跳动的,才是电气干扰。
5.2 “输出不失效”不等于“功能安全”
有一个观念我特别想纠正:很多人会拿“我读到的编码器数值一直很稳定”来证明编码器安全。但功能安全关心的是“当故障发生时,你能不能可靠地知道”。一个在正常情况下很稳定的编码器,在供电跌落到欠压阈值时可能输出一个看起来合理的错误角度,如果你没有欠压诊断,就无法感知它已经进入“危险状态”。
真正的安全机制,应该是让异常从“不可见”变成“可见”。比如编码器芯片的磁场监测位,平时正常时基本不会被触发,但它存在的意义,就是在磁铁松动时给出预警。你必须在代码里周期性地读这个状态位,并把它上传到安全监控任务里,而不是等故障来了才满屏幕搜寄存器。
所以我一直建议团队写一份“异常日志”,把编码器状态位、通信错误次数、速度跳变次数全部记录到非易失存储中。客户现场出问题时,第一件事不是去猜故障,而是把日志拉出来看。很多偶发问题,靠日志比靠示波器好解得快得多。
5.3 给同行的几句实在建议
如果你现在正做机器人关节,我特别建议你手头准备一套自己的“编码器安全验收清单”。不用多复杂,就三块:硬件选型看诊断能力、软件实现看异常状态机、测试环节看故障注入覆盖面。
在项目上,尽量去跟芯片原厂要可靠性测试报告和失效模式分析材料,哪怕对方只提供非完整版,也能让团队少走很多弯路。自己做的内部测试结果,比如温度漂移曲线、磁场异常触发阈值、通信误码率,这些数据才是你向整机客户证明“这颗编码器可信”的核心证据。
行业标准还没有完全跟上,不代表我们可以不做。等真正的那张卷子印出来的时候,已经提前准备好的团队,和连失效模式都没梳理过的团队,差距会拉开得非常大。
我个人在实际项目里体会最深的一点是:编码器安全这件事,最好从第一个关节样机就把方案架构定下来,后面再补会非常痛苦。你哪怕第一版来不及做完整双通道,也至少把故障注入接口留出来、把通讯 CRC 打开、把看门狗和状态位上齐,这样后续升级到全功能安全方案时才不用推翻重来。机器人关节的安全,不会一直缺考卷,但等到监考老师进考场才翻书,就真的来不及了。