
在做机械控制和嵌入式开发的工程师对“编码器”这个词都不会陌生。但从汽车行业跑到机器人行业你会明显感觉到一件事同一颗旋转编码器在两边的待遇差别实在太大了。汽车早就被 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%冗余类型双通道/双芯片选支持内部双冗余采样的芯片或者外接第二路编码器通信校验SPISENTCRC打开 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 打开、把看门狗和状态位上齐这样后续升级到全功能安全方案时才不用推翻重来。机器人关节的安全不会一直缺考卷但等到监考老师进考场才翻书就真的来不及了。