机器人都做到功能安全了,编码器还只会报一个角度?

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

机器人都做到功能安全了,编码器还只会报一个角度?

最近看机器人功能安全,我突然发现一个挺有意思的问题。

假设一台机器人手臂正在高速运动,某个关节的编码器此刻告诉控制器:

37.26°。

控制器相信了。

但问题是——它凭什么相信?

不是问这个数字精度够不够,也不是问它到底是 16 位还是 18 位。我问的是另一件更麻烦的事:

如果这个 37.26° 已经错了,系统怎么知道?

磁铁松了一点,传感器前端饱和了,码盘污染了,光电信号幅度掉下去了,内部寄存器异常了,SPI 某一位翻了,算法还在继续输出一个非常漂亮的角度。

37.26°。

看起来什么都没发生。

这才是机器人开始认真做功能安全以后,编码器行业真正麻烦的地方。

以前卖的是“我有多准”,以后可能先问“我错了你知不知道”

我们这一行过去特别喜欢几个数字。

多少位。

多少度。

多少转。

多少微秒。

INL 多小。

这些参数当然重要。我自己做编码器也天天盯这些东西。

但功能安全换了一套问法。

它不首先问:

你正常的时候有多准?

它先问:

你不正常的时候,会发生什么?

比如正常角度是 37.26°。

一种故障以后,芯片固定输出 37.26°。

另一种故障以后,实际已经转到 42°,芯片还认为自己在 37°。

更讨厌的是,它不是彻底死掉,而是偶尔错一次,下一帧又恢复正常。

对于普通位置控制,这可能表现为一次抖动、一次报警、一次轨迹异常。

但如果这个位置值正在参与安全限速、安全位置、安全方向或者安全停止判断,事情性质完全不一样。

ISO 13849-1:2023讨论的正是执行安全功能的控制系统安全相关部分如何设计和集成;IEC 62061:2021及其2024修订则针对机器安全相关控制系统的设计、集成和验证。它们关心的不是某颗编码器“参数看起来不错”,而是整条安全功能能不能证明。

所以我越来越觉得,下一代机器人编码器有一个非常明显的分水岭:

会输出位置,只是传感器。能证明这个位置什么时候不该被相信,才开始进入安全系统。

这不是我凭空想出来的,成熟编码器早就在这么干

去看 HEIDENHAIN 的 EnDat 2.2 功能安全方案,会发现思路完全不是“把 CRC 加长一点”这么简单。

它的安全相关位置测量可以提供两个独立生成的位置值,再配合错误信息,由安全控制器进行比较和处理。HEIDENHAIN公开资料明确给出了最高 SIL 3 / PL e 的安全相关位置测量方案。

注意这里最值得看的不是“SIL 3”三个字。

而是:

两个位置从哪里来?它们是不是具有足够的独立性?什么故障能同时骗过两条路径?诊断什么时候执行?错误在多少时间内能够被发现?发现以后谁负责进入安全状态?

到了 EnDat 3,HEIDENHAIN甚至把逻辑写得更直白:两个独立位置值、周期性的监测测试、错误消息,以及安全控制器中的比较。

Hengstler的安全编码器也已经把产品做到 SIL 2、PL d,甚至 SIL 3、PL e 这一档;BiSS Safety 的安全通信层也已有面向 SIL 3 应用的方案。

所以“安全编码器”不是遥远的概念。

工业自动化早就在做。

真正值得我们想的是:

机器人会不会把这套要求大规模带到更小、更便宜、更高度集成的关节里?

人形机器人进工厂以后,问题会一路追到关节最后那颗芯片

2025版 ISO 10218 已经重新梳理工业机器人本体以及机器人应用和机器人单元的安全要求。它当然不是专门给“人形机器人”写的,而且服务机器人、面向公众的一些机器人也不属于同一个适用边界;但一台机器人一旦真正进入工业应用,安全问题就不会停在“算力板通过了什么认证”这一层。

安全链最终一定要碰到物理世界。

机器人到底有没有超过允许速度?

机械臂到底有没有越过安全位置?

关节到底是在正转还是反转?

电机是不是已经真正停下来?

这些问题里,相当一部分最后都离不开位置和速度反馈。

于是一个有点尴尬的场景就出现了。

上面的安全控制器做得非常漂亮。

双核锁步。

ECC。

看门狗。

安全状态机。

一层一层认证。

最后问关节:

“你现在在哪?”

编码器回答:

37.26°。

“你确定吗?”

编码器:

……反正 SPI 是这么读出来的。

这就有点搞笑了。

整条安全链从上面一路武装到了牙齿,最后几十厘米却只剩下一个没有自证能力的角度值。

所以编码器真正要补的,可能不是再加两位分辨率

如果让我今天重新定义一颗面向机器人功能安全的编码器芯片,我第一反应已经不会是:

16 位要不要升级到 18 位?

而是会先画故障树。

磁场过强、过弱,能不能识别?

Sin/Cos 两路幅度异常能不能发现?

正交关系破坏以后有没有监测?

ADC 卡死怎么办?

数字算法卡住以后,角度是不是还能“看起来很正常”?

配置寄存器意外改变怎么办?

时钟跑偏怎么办?

存储器翻转怎么办?

通信帧损坏怎么办?

连续几十帧完全相同,到底是轴没转,还是内部数据冻结?

甚至还得往芯片外面看。

磁体脱落怎么办?

轴和磁铁相对位移怎么办?

光学编码器 LED 衰减、PD 污染、码盘松动怎么办?

因为功能安全最讨厌的一类故障,就是:

芯片自己不知道自己已经错了。

这也是为什么真正的 safety manual 很重要。

客户需要的不再只是 datasheet 上一句“支持功能安全”,而是你得告诉他:

哪些故障你能检测。

哪些检测不了。

覆盖率多少。

诊断周期多长。

外部必须增加什么措施。

哪些假设一旦不成立,你给出的安全指标也不成立。

这已经不是市场部往规格书封面上多印一个 logo 的事情。

它会反过来逼着芯片架构变化。

这反而可能是国产编码器下一轮真正的机会

我们现在讨论国产编码器,经常还困在一个老战场里。

别人 14 位,我 16 位。

别人 ±0.2°,我 ±0.1°。

别人 20,000 rpm,我 40,000 rpm。

然后所有人继续卷数字。

但如果机器人真的开始从“能跑”走向“能进厂、能和人一起工作、出了故障还能证明为什么安全”,竞争维度会突然多出一整层。

到时候客户可能会拿着完全不同的一张表过来。

不是只问:

精度多少?

而是问:

位置通道失效,你怎么发现?多久发现?有哪些潜伏故障?单点故障会不会直接产生错误位置?你给不给 FMEDA?有没有 safety manual?我这个安全功能拿你的芯片进去,证据链能不能闭合?

这个时候,如果我们还只拿着“16 bit、SPI 10 MHz、±0.1°”那张表去见客户,就很像别人已经开始考资格证了,我们还在炫耀自己小学数学考了 100 分。

参数没有错。

只是卷子换了。

我甚至觉得,未来国产编码器最值钱的能力,未必是再把静态角度误差压低 0.02°。

而是有一天,我们能够非常平静地把一份东西交给机器人公司的安全工程师:

这是我的角度。这是它可能怎么错。这是我怎么知道它错了。这是我不知道的时候,你还必须替我做什么。

到了那一步,一颗编码器芯片卖出去的,就不再只是一个位置数字。

而是一小段可以被整台机器人相信的证据链。

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

关注公众号「如是有为」

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