去年调试一个协作机器人关节模组,我遇到过一回编码器读数瞬跳:机械臂在低速运行时自行画出一个不该存在的弧线,吓得我当场切了急停。拆开分析,问题是轴向窜动导致磁编码器读数在过零点附近跳变。事后我同事半开玩笑说,要是这台臂拿去做ISO 26262认证,编码器这一环铁定过不了。但问题在于——机械臂根本不需要做ISO 26262,因为从来没有人给机器人关节编码器"出过卷子"。
这也正是标题里那个比喻最扎心的地方:编码器在汽车上已经考了很多年功能安全的试,到了机器人关节,大家还在"裸考"状态,既没有考纲,也没有监考。作为一个在编码器和运动控制领域摸爬滚打过的工程师,我想把这张"悬而未考的卷子"掰开揉碎讲一讲:汽车那边到底考了什么,机器人这边为什么一直没出卷,以及在这个真空期里,我们这些做关节的人能先干点什么。
1. 汽车行业的ISO 26262,到底考了编码器什么
1.1 编码器在汽车里从来都是"安全相关件"
很多人觉得编码器就是测个角度、算个转速,但在汽车电子电气架构里,角度传感类器件往往是安全目标拆解下来的关键一环。拿电动助力转向(EPS)举例,方向盘转角传感器和电机转子位置传感器如果给出错误角度,控制器就可能输出错误的助力方向或助力大小,轻则手感异常,重则转向失控。制动系统里的轮速传感器、电子稳定程序里的横摆角速度传感器,道理完全一样。
ISO 26262用ASIL(Automotive Safety Integrity Level)从A到D四个等级来划分安全等级。A级风险最低,D级最高。编码器如果参与的是助力转向这类"车辆可能失控"的功能,它大概率要承担ASIL C甚至ASIL D级的要求。这不是拍脑袋定的,而是从危害事件出发,用严重度、暴露率、可控性三个维度评估出来的。整车厂拿到安全目标后,会一层层分解到系统、子系统、组件,最后落到编码器这颗部件头上,明确它必须达到的硬件架构指标和诊断覆盖率。
1.2 考卷上最关键的"题目":SPFM、LFM和诊断覆盖率
聊ISO 26262,绕不开三个硬指标:单点故障度量(SPFM)、潜伏故障度量(LFM)、以及每小时随机硬件失效率(PMHF)。这里我不堆公式,就说人话。
SPFM衡量的是:硬件里所有会导致违反安全目标的故障模式中,被安全机制覆盖掉的比例有多大。ISO 26262-5:2018给出的参考要求大致是:ASIL B要≥90%,ASIL C要≥97%,ASIL D要≥99%。LFM针对的是潜伏故障——就是那种暂时没被检测出来、一旦叠加第二个故障就会出事的故障,ASIL B参考是≥60%,ASIL C≥80%,ASIL D≥90%。至于PMHF,大体对应的是"这个部件作为安全功能的载体,平均多少小时出一件足以违反安全目标的随机硬件故障",车规常按FIT(Failures In Time,每十亿小时故障次数)来衡量,ASIL D通常要求低于一个极小的值。
这意味着什么?编码器光会"测角度"远远不够,它必须证明自己"角度测错了能被立刻发现"。汽车工程师做设计时,围绕编码器要做的诊断工作很具体:
- 对磁编码器,实时读磁场强度寄存器,磁场偏弱或偏强都判定为故障
- 对增量式编码器,监控A/B/Z信号的电压电平是否在合理区间,正交信号状态机的跳变是否合法
- 对带数字接口的编码器(SPI、PSI5、SENT),校验CRC、回读寄存器、比对原始数据和处理后数据
- 整车或域控制器侧,用两个编码器信号做交叉合理性校验,甚至直接上双冗余设计
这套东西落到硬件上就是诊断覆盖率,落到设计流程上就是FMEA、FTA、安全概念、安全案例这些文档工作。
1.3 车规编码器是怎么"证明"自己安全的
车规编码器厂商想进入汽车供应链,光有一颗芯片不行,得正儿八经过一轮功能安全评估。我见过的最常见做法是按SEooC(Safety Element out of Context,脱离上下文的安全元件)方式开发,也就是:芯片厂商在不绑定具体整车、具体ECU的条件下,预先定义一组安全需求,给出功能安全手册(Safety Manual),里面写清楚安全架构、故障模式、诊断接口、预期外部安全机制。整车和Tier1拿到这份手册后,把它纳入自己的安全案例。
所以你看,汽车这套卷子已经形成了完整闭环:标准定义了指标,芯片厂商按SEooC造元件,Tier1做集成和验证,整车厂做系统级安全论证。编码器在这条链路上的角色早就不是"一个传感器",而是"安全分析里一个有明确失效率和诊断覆盖率的可计算单元"。
2. 机器人关节为什么一直没人出卷子
2.1 机器人有的只是"系统级安全标准",没有"部件级考卷"
机器人行业其实是有安全标准的,比如工业机器人安全标准ISO 10218系列、协作机器人技术规范ISO/TS 15066、个人护理机器人安全标准ISO 13482。但这些标准从根儿上就和ISO 26262不一样:它们主要约束的是机器人系统的安全功能——比如安全停机、安全限速、安全距离监控、力矩限制,而不是对编码器这类"部件"的内部失效概率和诊断覆盖率提出量化的设计要求。
这也导致一个很微妙的现象:机器人关节做安全评估时,大家引用ISO 13849(机械安全相关控制系统)、IEC 61508(功能安全基础标准)比较多,属于"拿相邻学科的卷子来套"。ISO 13849的核心概念是PL(Performance Level,性能等级)和Category(结构类别),以及DC(诊断覆盖率)和MTTFd(平均危险失效时间)。它确实可以评价"编码器+安全控制器"这个组合,但它不像ISO 26262那样,有极其精细的半导体级随机硬件失效度量方法。换句话说,ISO 13849更擅长考"这套系统架构靠不靠谱",却不擅长考"这颗芯片内部的模拟前端电路,在电磁干扰下出现电压跌落时算不算危险失效、覆盖率几个百分点"。
2.2 行业碎片化导致"没人有动力出卷子"
汽车行业能形成考卷,核心推手是供应链结构。车厂是强甲方,Tier1是巨大乙方,标准是被自上而下推动的。编码器芯片厂有明确客户和明确需求,愿意投入成本去拿ISO 26262认证,因为不认证就进不了供应链,就断粮。
机器人行业呢?关节模组往往是机器人公司自己设计,或者找一家规模不大的定制化厂商做,需求千奇百怪。协作机器人要环形编码器,人形机器人要轻量化和极高精度,工业四轴可能要防爆。没有统一的需求,就没有统一的部件形态,更没有哪家芯片厂敢针对"机器人关节编码器"这个品类砸重金做全套车规功能安全认证。卷子没出,是因为考生彼此都没达成一致:到底考什么方向、用什么题型、及格线画在哪儿。
2.3 人形机器人把矛盾逼到了台面上
以前工业机器人关节出问题,最坏情况就是停机、报警、重新标定,安全边界由围栏和光栅挡着。协作机器人加了力矩传感器和碰撞检测,在低速度低负载下勉强够用。但人形机器人不一样——它的负载自重比要求极高,关节数动辄几十个,一旦某个关节的编码器给出错误位置,整机可能瞬间失去平衡,在非结构化环境里摔倒甚至伤人。
我前阵子和做双足机器人的朋友聊,他提到一个让我印象极深的困境:编码器故障后,工业机器人的安全状态是"锁轴停机",但人形机器人如果所有关节一起锁死,机器人会像一根电线杆一样砸下去,可能比失控更危险。这就让"什么才是安全状态"变成了一个新问题。而这个新问题,既有的机器人安全标准并没有给出像ISO 26262那样明确的指导。矛盾在这里被彻底逼到了台面上:不是不想考,是真的还没有一套能回答这些问题的卷子。
3. 汽车的卷子不能直接搬,但可以"借题"
3.1 为什么不能直接把ISO 26262套到机器人关节上
有人会说,既然汽车考点这么成熟,抄过来不就行了?真抄会发现处处别扭。
首先是安全状态的本质差异。汽车的功能安全设计几乎都围绕一个终极安全状态展开:减速停车,停到路边就是安全。但你没法让一条机械臂"停到路边"。协作机器人在人身边干活,编码器坏了之后的正确反应是急停锁轴,还是受控降速,还是切换到力矩模式让臂自然下垂?不同场景有不同答案。ISO 26262的FMEDA(故障模式、影响与诊断分析)计算里,安全状态定义一旦不清晰,后面的所有量化指标全都无从谈起。
其次是工作环境的差异。汽车编码器装在转向管柱或者轮毂里,环境温度、振动、EMC干扰有成熟的车规测试标准。机器人关节编码器呢?它跟电机、减速器、刹车挤在同一个腔体里,电机铜损和铁损直接烘着它,减速器润滑脂挥发物可能污染码盘,关节经受的是高频冲击和大幅度动态负载。汽车底盘件是很恶劣,但不会像机器人关节这样收到"每秒几十次方向反转"的动态激励。环境剖面不同,失效率的底数和故障模式的权重就全变了。
最后是安全文化的阶段差。汽车行业经过几十年发展,安全是刻在流程里的刚需,ISO 26262认证是进入市场的门票。机器人行业目前更多靠"计算器里的安全设计"和整机厂自己把控,缺少强制性的部件级功能安全认证要求。不是机器人工程师不想做,而是行业还没有被事故或法规倒逼到这个程度。
3.2 真正能借的"题":一套可落地的诊断方法论
虽然不能整套照搬,但汽车那套"考法"背后暴露出的诊断思路,对机器人关节极其有价值。我把车规编码器安全设计里最值得借鉴的几件事拆出来:
信号完整性监控。不要只信角度数据本身,要监控角度数据的"载体"是否健康。磁编码器读AGC增益,光编码器看信号幅值,数字接口看CRC和帧错误率。哪怕只是把这几个监控位通过寄存器暴露出来,工程价值就非常大。
合理性交叉校验。单一编码器的数据再精确,也无法自证清白。最常见做法是电机端编码器(高速端)和输出端编码器(低速端)同时测量,两者角度变化比值应当恒定等于减速比。这个校验多花不了几行代码,却能在极早期发现轴向窜动、齿轮打滑、联轴器松动。
确定性安全响应。编码器出现故障之后,控制器要按事先编程好的优先级进入安全状态,而不是靠异常处理碰运气。我之前做过一个关节,编码器报错后直接触发STO(安全转矩关断),虽然野蛮,但至少在逻辑上可审计、可追溯。
上电自检序列(POST)。汽车ECU启动有一套自检流程,机器人关节也一样。上电后先读磁场强度、核对零点标定值、跑一段低速小角度往返验证双编码器比值,没问题才允许伺服使能。这套逻辑在汽车里是强制要求,在机器人里目前基本靠自觉。
4. 我自己的实操方案:在没有卷子的时候先做"模拟考"
4.1 选型和架构先防一手
既然标准没落地,我的思路很朴素:按最坏情况来设计,先把能想到的故障都封死。
硬件架构上,我习惯用"双编码器方案":电机轴上装高速增量编码器(或磁编码器),输出端装绝对值编码器。这样一箭三雕:低速端绝对位置永不丢失,高速端提供高分辨率速度反馈,两个编码器天然构成了交叉校验源。在做位置环和速度环的同时,控制器后台持续检查"电机轴转角变化量/减速比"是否和"输出轴转角变化量"一致,不一致就报故障,绝不犹豫。
选型上,我现在更倾向选带内部诊断功能的磁编码器芯片,比如AS5047P这类型号,内部集成CORDIC算法,可以通过寄存器读磁场强度、诊断标志位和CRC校验结果。AS5600这类偏入门级的磁编码器虽然便宜好用,但在安全设计里要格外小心,因为它对磁场强度的诊断能力相对弱,依赖外部安全机制更重。哪怕是同一颗芯片,用来做"功能安全元件"和"普通位置反馈",设计策略完全不同,这个区别要想清楚。
4.2 故障模式清单:把"考卷可能出的题"先列出来
我建议每个做关节的团队都建一张属于自己的故障模式清单。以下是我在项目里反复用的一张底表,覆盖了关节编码器最常见的故障场景:
| 故障模式 | 典型触发原因 | 检测手段 | 设计响应 |
|---|---|---|---|
| 信号线断路/接触不良 | 线束磨损、焊接虚焊、接插件氧化 | 信号幅值监控、心跳信号丢失检测 | 报错并进入STO |
| 电源电压跌落 | 供电线路过长、EMC干扰、电源动态响应不足 | 电压监控IC、ADC采样供电轨 | 触发欠压保护 |
| 磁场强度异常/退磁 | 磁体高温退磁、安装轴向间隙过大 | 读AGC或磁场诊断寄存器 | 报警、限制运行速度 |
| 光电码盘污染 | 润滑脂挥发物附着、粉尘进入 | 信号幅值下降趋势监控 | 提前维护告警 |
| 信号跳变/非法状态 | 轴向窜动、机械共振、干扰 | 正交信号状态机合法性检查、位置跳变限制 | 丢弃数据并重新初始化 |
| 通信帧错误 | SPI/RS485链路干扰、时序违规 | CRC校验、帧超时检测 | 连续N帧错误则锁轴 |
| 双编码器比值漂移 | 减速器磨损、联轴器松动、安装打滑 | 持续计算双编码器角度比值 | 超过阈值即刻STO |
这张表的核心价值不在于多全,而在于每一行都能在设计阶段对应到具体的代码或电路实现。我见过太多项目,编码器故障只有一种响应:程序卡死或者位置跳变到不可思议的值,最终只能靠操作员肉眼发现,这在高动态场合完全不可接受。
4.3 软件层面的"补丁"
硬件选型之外,控制软件里的功能安全逻辑同样关键。我比较推荐在关节控制器里做三个层次的保护:
第一层是实时诊断,在中断里执行。STM32的编码器接口模式很好用,硬件自动处理AB相正交解码,但别忘了它只是"数脉冲",不会判断脉冲合法性。我会同时用另一个定时器做脉冲间隔测量,一旦相邻两次脉冲间隔小于物理上不可能的值——比如超过电机最高转速对应的最小周期——就判定为信号抖动或干扰,触发诊断。另外,正交信号的状态跳变必须严格遵循0-1-2-3循环模式(00->01->11->10或反向),任何跳变越级都意味着信号异常。
第二层是控制周期同步校验,在伺服周期(通常1kHz)里执行。拿电机端和输出端编码器的增量做减速比交叉验证,拿电流环估算的扭矩与角加速度做动力学合理性验证。这些校验不需要太复杂,几个阈值和平均滤波就能覆盖绝大多数机械故障的早期阶段。
第三层是系统级的通信完整性校验。如果编码器数据需要经过通信总线传给主控,就必须在协议里设计帧超时、CRC、序列号连续检查。ROS2环境下我习惯在关节驱动机器人控制接口和编码器驱动模块之间定义带时间戳和校验位的数据结构,并且在管理器节点里做数据连续性监控。位置跳变检测的算法核心就一句话:当前采样值和上一拍采样值的差不能超过"最大允许角速度乘以采样周期"再留些余量。这个余量既不能太大(否则检测不到异常),也不能太小(否则正常冲击也会误报),需要根据实际负载特性标定。
4.4 上电自检不是走过场
很多团队上电自检只做"读一遍位置值,能读到就通过",这远远不够。我会把自检拆成四步:
- 读取编码器芯片的全部诊断寄存器(磁场、温度、电压、通信错误计数),确认在标称范围
- 核对零点标定数据:关节停在机械原点,比较编码器读数与EEPROM里的标定值,偏差超过阈值则判定机械结构松动或标定丢失
- 低速小角度往复运动,同步比较双编码器的角度变化比值,验证传动链完整性
- 验证安全响应链路:人为注入一个编码器错误标志,确认STO能在规定时间内生效
第四步最容易被忽略,但它恰恰是整个安全链路的最后一道闸门。如果STO都触发了但控制器还在执行力矩指令,那前面所有诊断都是白做。
5. 未来这张卷子会由谁来出
5.1 标准正在被推着往前走
虽然目前没有专门针对机器人关节编码器的功能安全标准,但变化已经在发生。机器人领域的安全标准体系正在快速演进,ISO/TC299(机器人标准化技术委员会)一直在推动各类机器人安全规范,IEC 61508功能安全基础标准也在向机器人领域渗透。越来越多的关节模组厂商和机器人整机厂开始意识到,在人形机器人即将接触真实生活场景的节点上,"编码器失效会导致什么"这个问题不能继续含糊下去。
电机、减速器、刹车这类机械部件的失效模式相对稳定,研究也够多;编码器作为最核心的"感知元件",它的失效模式已经被汽车行业研究得很透,因为方向盘转角传感器、电机位置传感器本质上就是编码器。将来这套方法论被机器人行业借用,几乎是必然的。区别只在于:谁先动手把"机器人工况下的编码器安全要求"写成一份可以执行的技术规范。
5.2 芯片厂商和机器人公司的"双向奔赴"
芯片厂商其实已经嗅到了机会。市面上针对机器人伺服的高性能磁编码器芯片,诊断功能越来越强:磁场监控、温度监控、CRC、冗余读取、安全协议支持,这些以前只在车规芯片上看到的特性,现在在机器人专用编码器上也开始出现。因为芯片厂商清楚,机器人关节一旦进入规模化量产,安全认证就是一道绕不开的门槛,提前把诊断功能做进去,等卷子真正出来的时候就能直接上考场。
另一边,机器人公司也不会干等着标准落地。头部的人形机器人公司已经在内部用"准车规"的流程约束自己的关节供应链:对编码器提出明确的故障模式要求、失效数据回收要求、诊断覆盖率目标。这些做法本质上是把ISO 26262那套思想,以企业规范的形式提前固化到机器人关节设计里。
我现在带新工程师做关节驱动项目时,一定会让他在原理图上把编码器相关的信号链单独拎出来做一遍FMEA,哪怕项目很小、时间很紧。原因很简单:功能安全不是一个答题阶段才开始准备的知识点,而是一种从设计源头就要建立的思维习惯。机器人行业这张卷子的命题人大概率不是某个标准委员会的干事,而是每一个正在设计关节模组的工程师。我们自己先把题目出好,把答案写对,等真正的标准来敲门时,就不会慌乱。
如果让我给同行一个最直白的建议,那就是:不要等卷子发下来才开始复习。现在就拿起ISO 26262的功能安全思维,哪怕只做一件事——把上文那张故障模式清单填完,把编码器诊断代码写进中断——你手里的产品就已经比市场上的绝大多数竞品多了一道保险。等哪天真有人给机器人关节编码器出一张正经卷子,希望你已经在考场里坐了很久,而不是还在门口找准考证。