穿戴式安全电路:STO 急停与医疗级隔离
想象一个场景:膝关节模组正以 30 N·m 推着使用者的腿走摆动相,此刻 ROS 2 的 executor 死锁了。
spin 线程卡在某个没加锁保护的回调里,而看门狗节点自己也在等同一把锁——没人喂狗,狗也不叫。
控制指令停在最后一帧:力矩设定值 15 N·m,模式"力控"。
电机不知道上层发生了什么,它只认栅极驱动器上的六个 PWM。
于是机器继续全力矩摆腿,而使用者被髋、大腿、小腿三组织带绑在机器上,跑不掉。
ROS 2
这不是恐怖故事,这是每一台外骨骼都必须直面的失效模式:机器失控的时刻,恰恰是软件死掉的时刻。
软件的可靠性上限是"大概率活着",而安全的要求是"死了也没事"。
软件说"停"不算停——真正的急停必须在软件死了之后仍然成立。
这句话是本篇的主线,也是前面所有电路的底线。
一、为什么"软件急停"是伪命题
先诚实地数一遍软件会怎么死:
- 进程崩溃:段错误、空指针、未捕获异常,控制节点无声退出;
- 内核级故障:panic、文件系统挂成只读、驱动僵死带走整个网卡;
- 通信栈卡死:DDS 发现协议异常、executor 饥饿、回调队列无限膨胀;
- 资源枯竭:内存泄漏吃光后 OOM killer 精准选中控制节点,或 CPU 过热降频到控制环跑不完一个周期;
- 最阴险的一种:节点活着,但输出冻结在过期值上,心跳还在跳,数据是旧的。
每一种死法都在同一个位置收尾:电机的使能信号没有可靠的实体去拉低它。
在 ROS 2 里写一个 emergency_stop 节点不难:订阅急停话题、收到消息后调驱动器断使能。
难的是这条路径上的每一环——话题传输、executor 调度、CAN/EtherCAT 协议栈、驱动器固件——全是软件。
链条上任意一环卡死,急停就失效。而且失效的方式最糟:平时一切正常,出事那天恰好是它卡住的那天。
安全工程把这叫"安全功能依赖于控制系统的正确运行",在 IEC 61508 的语境里,这是不被接受的设计。
工业标准早就把话说死了。IEC 60204-1(机械电气安全)定义了三种停止类别:
0 类是立即切除动力、非受控停止;1 类是受控减速后切动力;2 类是受控停止但保留动力。
软件急停本质上是 1 类/2 类的舒适版——前提是软件活着。
而 0 类的硬件实现,就是接下来要讲的 STO。结论只有一个:
切断路径必须是纯硬件的,从按钮触点到电机功率级之间,不允许存在任何一行代码。
二、STO:安全转矩关断
IEC 61800-5-2 定义了一族驱动器安全功能,STO(Safe Torque Off,安全转矩关断)是其中最基础的一个:
触发后,电机的励磁被物理消除,电机不再产生任何转矩——不是"指令为零",是无从产生力矩。
同族还有 SS1(安全停止 1:受控减速然后进 STO)和 SLS(安全限速),
但根都是 STO:其他功能是"优雅地停",STO 是"断根"。
原理值得画出来。三相逆变桥的六个 MOSFET,栅极都挂在栅极驱动器(如 TI 的 DRV8353)上,
而栅极驱动器的供电是一路独立的 12 V,这路电就是 STO 的下手之处:
急停按钮(双触点) 安全继电器 栅极驱动器
┌──────────────┐ ┌───────────────────┐ ┌──────────────┐
│ CH1 常闭 ────┼───►│ 通道1 ─┐ │ │ │
│ │ │ ├─ 一致? ──┼───►│ 12V 供电 │
│ CH2 常闭 ────┼───►│ 通道2 ─┘ │ │ 断→无驱动 │
└──────────────┘ └───────────────────┘ │ →六管全关 │
│ →转矩归零 │
纯硬件路径,不过 CPU └──────────────┘
STO 生效时,继电器切断栅极驱动器的 12 V 供电,六个 MOSFET 的栅极被下拉电阻钳到源极,全部关断。
没有驱动就没有导通,没有导通就没有电流路径,电机绕组得到的是开路——转矩归零。
注意电机会靠惯性和机械阻尼自由滑行几度,这不是 bug 是特性:
人穿着它,突加机械抱刹等于往膝关节上横拽一刀,自由滑行加适度阻尼才是人体友好的停止方式。
为什么必须是双通道?因为单通道的继电器触点会粘连,单根信号线会短路到电源或断路——
任何单通道设计都存在一个能让它失效的单点故障。
双通道的意义在于:两个通道由不同触点、不同走线、最好不同 PCB 区域承载,判别逻辑要求两者一致才输出。
任何一个通道单独失效,两通道状态不一致,逻辑立即判停。
要让安全功能失效,必须两个通道同时坏且坏成同一种状态——失效概率被平方了一次。
这也解释了 STO 和"软件急停"的层次区别,两者不是竞争关系,是上下层关系:
| 层次 | 手段 | 特性 | 失效依赖 |
|---|---|---|---|
| 功能层 | 软件急停 | 受控减速、记日志、多关节协调下电 | 依赖软件活着 |
| 安全层 | STO | 粗鲁、不可编程、不可协商 | 只依赖触点和铜皮 |
成熟的设计两层都要——软件急停管优雅,STO 管保底。
工程落地长什么样?现代伺服/机器人驱动器(Elmo Gold Twitter、Copley Accelnet、Beckhoff AX8000)
都带 STO 输入引脚,典型接法是随驱动器配一个安全插头:
插头内两个触点分别把 STO+ 和 STO- 接到驱动器内部的安全电路,形成完整回路。
拔掉插头,双通道同时断开,驱动器内部逻辑检测到两路信号消失,立即封锁栅极驱动。
现场最朴素的用法:把急停按钮的双触点串进安全插头的回路——拍下急停等价于物理拔线,
从按钮触点到 MOSFET 之间没有一个字节参与。
两点工程细节:一是 STO 触发后的复位必须人工确认、不允许自动重启,
这是 ISO 14118"防止意外启动"的明确要求——想想没人愿意站在穿好外骨骼的使用者旁边,
等一个自动复位的电机突然抽动;二是验收测试简单到可以写进每日点检表:拔插一次安全插头,
确认驱动器状态字报 STO、手转关节无阻力异常。
三、安全继电器:双通道判别与周期自测试
按钮侧的双触点不是"两个一样的触点"。讲究的设计用互补逻辑:一路常闭、一路常开,
判别电路要求"通道 A 闭合且通道 B 断开"这种互斥组合才认为正常。
如果两路状态撞在一起(同时闭合或同时断开),说明触点粘连或线路短路,判停。
互补逻辑的妙处是把"两根线短接在一起"这个最常见的接线故障也纳入了检出范围。
专门的安全继电器模块(Pilz PNOZ 系列、SICK Flexi Soft、Omron G9SA)
把判别逻辑、冗余继电器输出、复位电路做进了认证过的盒子里,核心是三件事:
- 双通道判别:两路输入一致才允许输出吸合,不一致立即断开并锁存,必须人工复位;
- 强制断开触点:安全输出继电器用机械上保证"断开就是断开"的触点结构(触点桥不会熔粘连);
- 周期自测试:正常运行期间,模块周期性地输出极短的测试脉冲,检验判别逻辑和触点自己还活着。
周期自测试值得多说两句,它解决的是"监测者谁来监测"的递归问题:
安全电路自己也是电路,也会坏,坏了可能坏在"永远显示正常"的那个方向。
自测试相当于安全电路定期给自己出题——故意制造一个应当判停的状态,看它停不停。
答错了就锁死。这与软件里的 watchdog 喂狗哲学同源,但全程无一一行代码。
| 故障模式 | 单通道设计 | 双通道+互补判别 |
|---|---|---|
| 触点粘连 | 检出不了,急停失效 | 另一通道状态不符,判停 |
| 信号线断路 | 检出不了(取决于拓扑) | 通道消失,判停 |
| 两线短路 | 检出不了 | 互补逻辑撞车,判停 |
| 判别电路自身失效 | 检出不了 | 周期自测试锁死 |
对穿戴设备,安全继电器的体积吃不下,退化的版本是双通道安全 IC 或分立的比较器加冗余路径,
原则一条不变:判别逻辑允许单点失效被检出,且失效能导向安全侧(断电)。
默认态必须是安全的——掉线即停机,这叫失效安全取向,它贯穿后面所有设计。
四、医疗级隔离:从工业安全到人体安全
外骨骼和六轴机械臂的安全差异,最后落在一个事实上:操作者不是站在机器旁边,而是电路的一部分。
sEMG 电极贴在皮肤上,金属护板贴着小腿,汗液浸透的织带是电解液。
这时候工业标准(IEC 60204-1 管到 250 V 工业环境为止)不够用了,得请出 IEC 60601-1,
医用电气设备安全通用要求——它把"碰了人会怎样"量化到了微安级。
它先给"应用部分"(会接触人体的部分)分型:
| 分型 | 含义 | 正常状态患者漏电流 | 单一故障状态 | 典型应用 |
|---|---|---|---|---|
| B 型 | 基本绝缘,不接触患者 | — | — | 机柜、主机 |
| BF 型 | 浮地应用部分,接触体表 | 100 μA |
500 μA |
sEMG 电极、表面刺激 |
| CF 型 | 浮地且漏电流极低 | 10 μA |
50 μA |
心内导管、腔内设备 |
外骨骼的肌电电极、生理监测回路属于 BF 型;哪天做导管机器人,就是 CF 型的地盘。
分型的本质是对患者漏电流限值分级,而 CF 型那两个数字值得敬畏:
正常 10 μA、单一故障 50 μA。
10 μA 什么概念——一颗 LED 指示灯的工作电流是它的一百倍,一节 AA 电池接 1 MΩ 电阻就逼近这个量级。
它的物理依据是微电击阈值:电流经心内电极直接流过心肌时,几十 μA 就可能诱发室颤——
体表电击的安全阈值是毫安级,心内是微安级,差着两个数量级,这就是 CF 存在的理由。
所以 CF 型电路里,漏电流不是规格书角落的参数,而是整个隔离架构的出发约束。
隔离手段按墙的厚度排序。第一道墙是电源:医疗级 DC-DC 模块。
普通工业 DC-DC 的隔离是功能隔离或基本绝缘(1.5–3 kV),医疗级要上加强绝缘(4–6 kV 以上),
比如 Murata 的 MEE 系列、RECOM 的 60601 认证档。
容易被忽略的参数是初次级耦合电容:漏电流直接正比于它(I = 2πf × C × V),
所以医疗级模块会给出低至个位数 pF 的耦合电容规格,内部加法拉第屏蔽层。
选型时 10 μA 这把尺子就架在这些参数上算,算不下来的料再便宜也不行。
第二道墙是信号。光耦阵营的老牌料号 HCPL-7840 是隔离放大器,专为电机相电流采样而生;
数字隔离器阵营,TI 的 ISO7741 走电容耦合,ADI 的 iCoupler(ADuM 系列)走磁耦合,
reinforced 档的隔离耐压都在 5 kV rms 级别。选型看三个数:
隔离等级(basic 还是 reinforced)、工作电压下的隔离栅寿命(局部放电试验)、通道间传播延迟失配——
最后一个对电流环是实打实的问题,失配会直接变成力矩纹波。
第三道墙不花钱,花的是布线纪律:爬电距离和电气间隙。
IEC 60601-1 对 250 V 工作电压下两重患者防护(2 MOPP)的要求,是爬电 8 mm、电气间隙 5 mm 量级
(具体数值查表格,取决于材料 CTI 等级和污染等级)。
对 PCB 设计的含义非常物理:隔离带下面不打过孔、不铺铜、开槽,
让两侧电路之间只剩空气和认证过的隔离器件。这些数字不是装饰——认证机构拿卡尺量。
┌───────────────────────────────┬──────────────────────────────┐
│ 患者侧 │ 系统侧 │
│ sEMG 电极 ── AFE 前级 │ 主控 / 电机驱动 / 电源 │
│ (电池供电, 浮地) │ │
│ │ │
│ 只有三种东西允许跨过这堵墙: │
│ 医疗级 DC-DC / 隔离放大器 / 数字隔离器 │
└───────────────────────────────┴──────────────────────────────┘
五、再生制动:被忽略的"反向能量"
急停切断的不只是指令,还有能量流动的正常方向。
外骨骼下坡、被动屈膝、人体带着关节快速下摆时,电机被机械系统反拖,进入发电工况:
反电动势经体二极管整流回灌母线,母线电容被泵升。
电压抬升由能量守恒决定,形式是 V = V0 + ΔE/C——落进电容的动能除以母线电容,
叠加到初始电压上,根号里的量全是不讲情面的物理量。
算一笔账:60 kg 使用者单腿快速下摆一次,折算到关节的动能以几十焦耳计;
若母线电容只有 470 μF、初始电压 36 V,全部泵进去时电压增量轻松破百伏。
而 MOSFET 是按 60–75 V 选的——一次下坡,管子雪崩击穿,驱动器卒。
这就是驱动器"下山死机"的经典尸体,拆开看全是母线电容鼓包和炸裂的上管。
对策是制动斩波电路(brake chopper):一个迟滞比较器盯着母线电压,
超过上限(如 52 V,给 60 V 器件留约 13% 裕量)就打开大功率制动电阻,把电能烧成热;
低于下限(如 48 V)关断。迟滞窗口的存在是防止在阈值附近抖动:
母线电压 ──► 分压网络 ──► 迟滞比较器 ──► 功率MOS ──► 制动电阻
│ (48V开/52V关) (8Ω 铝壳)
│
从母线取电,不依赖控制侧供电
电阻怎么选?给一个完整算例。设单次下坡需泄放动能 ΔE = 50 J,要求 t = 2 s 内泄放完:
| 参数 | 数值 | 说明 |
|---|---|---|
| 需泄放动能 | 50 J |
单次下摆折算到关节 |
| 泄放时间 | 2 s |
使用者主观"不拖沓"的节奏 |
| 平均功率 | P = 50/2 = 25 W |
能量除以时间 |
| 降额系数 | 取 50% | 脉冲工况 + 封装散热差 |
| 选型结果 | 50 W / 8 Ω 铝壳电阻 | 峰值电流 52/8 = 6.5 A |
为什么不能直接选 25 W 的:斩波是脉冲工况,电阻有自身热时间常数,
外骨骼的封闭结构里散热条件接近"保温箱",工程上按至少一半降额取。
若是连续长下坡工况,还要按"重复脉冲"校核电阻数据手册里的脉冲功率曲线——铝壳电阻都给这条线。
一个系统级细节:STO 断栅极之后,泵升能量的唯一去处就是母线,
所以制动斩波必须独立于栅极驱动器和控制侧供电,直接从母线电阻分压取电——
否则安全关断和能量泄放会互相掐死:最需要泄放能量的时刻,恰好是控制电断了的时刻。
六、把散件串成安全概念
上面每一块——STO、双通道判别、隔离、制动泄放——单独看都是电路,合起来才叫安全概念文档。
这份文档回答的问题清单是固定的:
- 危险事件是什么?(失控力矩、电击、母线过压击穿、意外重启)
- 每项危险由哪个安全功能覆盖?(STO / 隔离与漏电流控制 / 制动斩波 / 复位逻辑)
- 每个安全功能的失效概率是多少、需要什么性能等级?
人机协作穿戴设备通常按 ISO 13849-1 的 PL d 目标设计——一句话带过:
PL d 大致对应 SIL 2,要求每小时危险失效概率低到10⁻⁷量级; - 元件失效率数据从哪来?(SN 29500 / MIL-HDBK-217);
- 周期验证怎么做?(拔插安全插头、按急停、测患者漏电流、录母线电压曲线)。
写完这份文档你会发现一个反复出现的模式:
安全设计的本质不是"更可靠的元件",而是"让失效不再致命的结构"。
双通道是结构,互补判别是结构,失效安全取向是结构,隔离带是结构,独立取电也是结构。
元件会坏——电容会干、触点会粘连、焊点会裂——结构保证坏了也停得下来。
七、软硬联动:系列封顶石
这一篇是 ROS工业 系列的收尾,也是前面所有电路的安全底线汇聚处。
外骨骼的机械与机电架构决定了力矩与惯性从哪里来:
外骨骼机电架构:生物力学与关节模组;
EtherCAT 实时总线与导纳控制实现了柔顺力控,但柔顺的前提是"想停就能停":
外骨骼柔顺控制:EtherCAT 实时总线与导纳控制;
sEMG 电极把人体电信号接进电路系统,正是 BF 型隔离存在的理由:
生物电模拟前端:ADS1299 与右腿驱动。
三层栈连起来读:架构篇定"机器多有力",力控篇定"机器怎么温柔",AFE 篇定"机器怎么听懂人",
本篇定"机器凭什么不敢失控"。
软件负责聪明,硬件负责底线——当控制节点崩溃、看门狗失声、总线死寂的那个瞬间,
一枚继电器触点断开,六只 MOS 沉默,母线能量安静地变成制动电阻上的一点余温,人还站着。
这就是穿戴式安全电路存在的全部意义。
参考文献
- IEC 61800-5-2:2021. Adjustable speed electrical power drive systems – Part 5-2: Safety requirements – Functional.(STO/SS1/SLS 定义与安全要求)
- IEC 60601-1:2005+AMD1:2012. Medical electrical equipment – Part 1: Basic safety and essential performance.(BF/CF 分型、患者漏电流限值、爬电与间隙)
- ISO 13849-1:2023. Safety of machinery – Safety-related parts of control systems – Part 1: General principles for design.(性能等级 PL 与类别结构)
- Texas Instruments. ISO774x Quad-Channel Digital Isolator Datasheet.(reinforced 绝缘、CMTI 与安全认证参数)
- Broadcom(原 Avago). HCPL-7840 Isolation Amplifier Datasheet.(电机相电流隔离采样的经典方案)
- Pilz GmbH. PNOZ 安全继电器操作手册.(双通道判别、强制断开触点与周期自测试的工程实现)