关节已经断了力矩,手臂却还在往下掉
首发于公众号「如是有为」 · 查看原文

驱动器撤掉力矩,电机不再主动做功,机器人手臂就安全了。
这句话放在水平运动轴上,已经漏掉惯性;放在重力关节上,还漏掉了一个持续存在的动力源:重力。
Siemens 对 SINAMICS 安全功能的公开说明里,STO,也就是 Safe Torque Off,承担的是安全撤除驱动力矩。这并不等于受控减速,也不等于机械制动。其 G220 操作手册还特别提醒:对于悬挂负载,STO 生效后负载仍可能继续运动,需要采取适当措施防止危险运动。
这个边界很窄,却非常重要:
STO 执行成功,和机械系统已经停止,中间没有自动等号。
不妨在纸上放一根水平伸出的轻质手臂,末端有 5 kg 负载,距转轴 0.3 m。忽略手臂自身惯量、摩擦和减速器,把负载简化成一个质点。这个模型只是为了看清时间尺度,不代表真实机器人的动力学参数。
初始重力矩约为:
负载绕轴转动惯量约为:
于是撤掉支撑力矩后的初始角加速度约为:
如果机械制动器需要 40 ms 才建立足够保持力,在短时间、小角度近似下:
也就是约:
末端沿切向移动:
不到 40 ms,纸上的末端已经掉了接近 8 mm。
这里轴起初完全静止,位置噪声被设为零,STO 也按预期执行。唯一发生的事,就是驱动力矩先消失,而机械保持力晚了几十毫秒才真正建立。
真实机器人当然更复杂。
机构惯量会改变结果,摩擦会改变结果,重力补偿和平衡机构会改变结果,减速器效率、柔性和载荷分布也都会改变结果。有些系统会更缓和,有些系统可能更糟。
所以这笔计算不能拿去核定某台机器人的安全距离。
它真正想说明的是:
40 ms 写在电气时序表里很短,落到机械世界里,可能已经长成了毫米级位移。
如果同一模型把无保持力时间从 40 ms 拉到 80 ms,那么在近似恒角加速度条件下,位移不是翻倍,而是接近四倍。
因为:
这时候,“停止”这个词才开始露出里面不同的动作。
系统可以先执行受控减速,再让制动器建立保持力,最后撤除驱动力矩;也可能因为故障,直接失去驱动力矩。
两种路径面对同一个关节,却未必产生相同的机械结果。
而且还有一个经常被忽略的问题:
保持制动器能不能承担动态制动能量,要看它的设计和额定用途。
一只制动器能够静态抱住 50 N·m,并不自动意味着它适合反复接住一个高速旋转的关节。静态保持能力不能直接外推成动态制动能力。
把安全讨论做到这里,编码器才真正进入画面。
编码器可能被用于安全限速,可能参与停机过程监控,也可能只承担普通伺服反馈。
不同用途,对它分配的安全责任完全不同。
不能因为它装在机器人关节上,就要求所有位置传感器承担同一项安全功能。
但是,一旦安全功能需要依赖它判断速度或者运动状态,真正麻烦的问题往往不是断线。
断线通常很直白。
更麻烦的是:角度冻结,但通信还活着。
假设位置接口每 1 ms 提供一帧数据,控制器直接利用相邻位置差计算速度。
如果内部位置寄存器卡在旧值上,数据帧仍然可能持续发送,CRC 也仍然可能正确。
于是连续两帧位置差为零。
软件推导:
速度为零。
但真实机械轴可能正在因为重力继续运动。
这时候系统面对的是一种很危险的错位:
数据在描述静止,机构正在发生运动。
CRC 能证明什么?
它能证明收到的比特没有在通信链路里被意外翻坏。
但如果冻结值在 CRC 生成之前就已经形成,那么 CRC 完全可以正确。
它不能证明:
磁铁还牢牢跟着轴转。
也不能证明:
光学码盘没有松。
更不能证明:
这一帧角度真的是一个“新鲜”的机械位置。
所以:
帧正确,不等于机械状态正确。
如果前面那个 40 ms 的重力下落过程中,编码器位置一直冻结,系统每 1 ms 仍然收到一帧“合法数据”,也不能证明这 40 ms 里机构没有运动。
这正是一个很容易被忽略的事实:
通信周期很短,并不等于诊断测试间隔很短,也不等于故障检测时间很短。
Safety Manual 真正有价值的地方,也就在这里。
它不只是告诉客户:
“本器件支持某个安全等级。”
它更应该告诉客户:
哪些故障器件自己可以检测。
哪些故障检测不了。
某项诊断多久执行一次。
需要连续多少个异常样本才会触发。
故障发生以后,最迟多久能报告出去。
报告以后,系统还需要依靠哪些外部措施完成安全动作。
有些芯片能监测电源、时钟、寄存器、ADC、磁场幅值。
这些当然都很有价值。
但它们未必能覆盖一个非常具体的机械故障:
磁铁和轴之间已经松了。
只要磁场幅值还合理,波形还漂亮,算法仍然可能输出一个非常平滑的角度。
芯片甚至可能觉得自己工作得非常健康。
问题是:
这个角度已经不再代表真正的负载位置。
这类故障特别能说明一个问题:
安全诊断的能力,不能只看芯片内部有多少检测模块。
还要沿着整个传感链问一句:
这个故障到底发生在哪?我的诊断到底能不能看见它?
如果安全需求要求某类危险失效必须在 10 ms 内被发现,那么这个 10 ms 不能只写成“诊断逻辑运行时间”。
真正需要进入时间预算的,是从故障发生,到诊断被执行,到异常被确认,到故障被报告,再到安全逻辑能够采取相应措施的整段时间。
诊断逻辑本身也许只运行了几微秒。
但它可能 5 ms 执行一次。
也可能要求连续三个异常样本以后才报警。
这两个系统的“诊断代码运行时间”都很短,真正的危险故障检测时间却完全不是一回事。
检测之后也不能停。
故障标志已经置位,主控如果还在继续使用缓存中的最后一个合法角度,整机并没有因为“故障被检测”而自动进入安全状态。
从传感器到安全控制器,再到驱动器,再到制动器,每一段都有自己的状态机和时间。
检测成功,不等于安全动作已经完成。
2026 年 6 月 22 日,NVIDIA 发布 Halos for Robotics,把 IGX Thor、系统软件、安全应用和检查实验室放进一个完整的机器人安全体系里。
公告提到 Agility Robotics 参与安全系统检查,并围绕相关标准开展第三方认证准备。
这里的关键词是:
准备。
不能把“准备第三方认证”改写成“整机已经完成全部功能安全认证”。
但这类系统级投入已经说明一件事:
机器人安全正在从一个抽象口号,变成一条越来越具体的工程链。
可算力板不会替制动器完成机械合闸。
也不会替磁铁证明自己没有松动。
系统能力越完整,反而越要求底层元件把自己的假设说清楚。
工业机器人标准也不能只当证书名字罗列。
ISO 10218-1:2025 面向工业机器人本体,第 2 部分面向工业机器人应用和机器人单元。
具体到人形机器人、移动平台或者其他新形态机器人,仍然要先判断具体应用场景和标准适用范围。
PL、SIL 和汽车领域的 ASIL,也分别属于不同的安全体系。
不能拿一个漂亮等级标签,替代整个系统的安全论证。
再回到位置冻结这个案例。
最直觉的解决办法,是再加一颗编码器。
但问题马上来了。
如果两颗编码器都在看同一块已经松动的磁铁,那么两颗完全可以给出一致的错误。
如果一颗装在电机侧,一颗装在输出侧,那么两者之间又会多出减速比、回差、弹性形变和测量延迟。
这时候也不能简单要求:
两个角度必须完全一样。
所以“冗余”真正有意义的前提,不是芯片数量变成了两颗。
而是:
第二条测量链,必须针对第一条链可能发生的失效,提供新的、独立的证据。
两颗芯片如果共用同一供电、同一机械安装、同一磁体、甚至同一套算法,很多共同原因故障仍然可能一起把它们带走。
判断冗余时,不能只数通道。
要沿着故障原因一直追,直到看到两条路径到底在哪里重新汇合。
验证也应该沿着这个冻结案例继续往下做。
让位置数据保持旧值。
同时保持通信正常。
CRC 继续正确。
系统究竟依靠什么发现:
机械仍在运动?
诊断发现以后,再按照最终驱动参数和制动器配置执行真实停机。
然后测量:
末端到底移动了多远。
这类试验当然应该在隔离、受控的条件下进行,而不是在有人站在机器人旁边时临时注入故障。
而且一次故障注入通过,也不能证明全部安全完整性已经成立。
它只能说明:
在这组测试条件下,这条具体失效路径得到了处理。
不能把它外推成:
“所有故障都已经覆盖。”
最终,整机团队必须把负载、机构、诊断和动作时序放进同一张图里。
传感器提供方则需要把两类东西分开:
哪些诊断证据可以被系统继承。
以及:
哪些假设必须由系统自己补上。
Safety Manual 的价值,本质上就在这里。
不是再给 datasheet 加一个更漂亮的安全等级,而是明确告诉集成团队:
哪里可以依赖器件。
哪里不能。
还有一项也不能靠一次停机试验解决:
制动能力会随使用条件变化。
温度、磨损、负载、动作频次改变以后,原来测得的合闸时间和保持能力,是否还在声明的边界内,需要有相应证据。
控制制动器的电气信号已经正常,也不能单独证明机械摩擦副已经建立足够力矩。
同样的事情也发生在编码器上。
一种滤波配置下通过了冻结检测,并不意味着换掉滤波参数、采样周期或者诊断周期以后,还能满足原来的时间预算。
元件配置变了。
软件版本变了。
机械条件变了。
安全论证依赖的假设也可能跟着变。
真正有用的安全手册,应该让这些依赖全部暴露出来。
而不是把它们藏在一个最高等级标签后面。
那根纸上的手臂,最后只掉了:
在分辨率表里,这个数字甚至不算漂亮。
可如果人的手正好在机构下面,它就会变得非常具体。
位置反馈真正进入安全链以后,首先要讲清楚的,已经不是“我有多少位”。
而是:
从读数仍然合法,到真实运动已经危险,中间到底隔了多远。
公开来源
Siemens,SINAMICS Safety Integrated 及 G220 操作手册,关于 STO 与悬挂负载的边界。
NVIDIA,Halos for Robotics 公告,2026-06-22。
ISO,ISO 10218-1:2025。
文中 5 kg、0.3 m、40 ms、80 ms、1 ms 与 10 ms 均为明确的分析条件,用于说明时间尺度,不对应任何公开或内部整机实测。

关注公众号「如是有为」
微信扫一扫,新文章先在公众号发出。