138、运动控制中的安全功能:STO、SS1、SS2
运动控制中的安全功能:STO、SS1、SS2一次差点烧掉伺服驱动器的教训去年调试一台六轴协作机器人,客户要求必须通过EN 13849 PL d认证。我心想不就是加几个安全继电器嘛,结果在测试SS1功能时,电机在减速过程中突然抱死,驱动器直接报过流故障,差点把IGBT模块烧了。后来翻遍安全功能手册才发现,SS1的减速斜坡参数和驱动器的电流限幅没有做联动——这是典型的“安全功能只配了逻辑没配物理”的坑。从那以后,我养成了一个习惯:在嵌入式代码里,安全功能不是“加个标志位”就完事的,它需要和电流环、速度环、位置环的底层参数做硬耦合。今天这篇笔记,就聊聊运动控制里最基础的三个安全功能:STO、SS1、SS2。不讲标准条文,只讲代码里怎么落地。STO:最粗暴也最可靠的安全刹车STO(Safe Torque Off)直译就是“安全转矩关断”。它的本质是物理切断电机动力——不是靠软件发个停止指令,而是通过硬件电路直接封锁驱动器的功率管驱动信号。嵌入式实现要点:在STM32或类似MCU里,STO通常通过一个独立的安全输入引脚触发。这个引脚不经过主控芯片的GPIO中断,而是直接连接到驱动器的使能逻辑门。我见过有人图省事,把STO信号接到MCU的普通IO口,然后在中断里软件关PWM——这是绝对错误的做法。一旦MCU死机或者中断卡死,STO就失效了。正确的做法是:STO信号经过光耦隔离后,直接控制驱动芯片的ENABLE引脚。比如TI的DRV8301驱动芯片,ENABLE引脚拉低后,所有功率管