资讯动态

伺服通讯中断为何失控?从看门狗到STO的安全设计

发布时间:2026/10/23 1:08:29 来源:尧图企业网站定制
1. 先别急着改代码搞清楚“失控”到底是怎么发生的做自动化现场的人最怕听到的就是驱动器报通讯故障的同时设备还在继续动。前几天有个朋友半夜打电话说产线上的轴“发疯”了上位机已经掉了线电机却还在以设定速度转急停按下去也没反应吓得操作工直接拉了总闸。事后一查通讯确实断过但问题根源并不是通讯本身而是我们对“通讯中断后的动作”完全没有定义。1.1 通讯中断不等于机械失速很多人一听“通讯中断导致失控”第一反应是电机自己跑飞了。这个理解有点偏差。绝大多数伺服和变频驱动器它的运动指令来源就是总线通讯比如EtherCAT、PROFINET、CANopen、Modbus TCP这类。通讯一断驱动器在短时间内确实会失去新的指令输入但注意它手里还保留着最后一帧有效指令。如果这最后一条指令是“速度模式、目标速度1500转、保持”那它就会一直执行下去直到自己内部报错或者被人为停机。换句话说所谓失控多数情况下不是驱动器自己想乱动而是它“不知道该干嘛了”于是守着最后一条指令继续执行。放在同步带、飞剪、堆垛这类场景里这条“残留指令”就可能让轴冲出限位、撞上机械挡块甚至把工件甩出去。所以我一直强调看到“通讯中断”四个字先别急着怀疑电机本身先把“中断之后做什么”想清楚。1.2 电机驱动器失控的内在机制驱动器的内部控制大致分为三层底层是电流环中间是速度环上层是位置或者力矩环。通讯中断影响的只是最上层的指令源底层三个环路不会瞬间消失。如果驱动器配置成“通讯掉线即停止输出”那么断电瞬间母线电压会保持在安全范围轴会按照设定减速曲线停下来。但如果配置成“保持最后状态”那情况就完全不一样了——速度环还在闭环工作电机依然按照内部给定的速度指令输出转矩外部没有任何能改变这个状态的途径。还有一类情况更隐蔽就是驱动器本身没有掉线而是PLC或者上位机的扫描周期卡死导致心跳信号超时。这时候总线物理层可能还是正常的LED灯也绿着但驱动器已经收不到有效数据帧了比如收不到“安全心跳”它也会认为自己处于失控状态。这种情况下驱动器控制面板往往不报通讯错误而是报“看门狗超时”或者“同步丢失”很多人会被这个报警误导跑去查网线结果查了一圈发现线是好的。这两种机制我建议每个做设备维护的人都记一下一是“指令残留”二是“心跳超时”。前者是驱动器主动保持行为后者是控制器失联后的被动反应。搞清楚这两个机制后面所有排查和整改才有方向。2. 故障定位五分钟把通讯断在哪一层查明白通讯中断的排查我习惯按三层来走物理层、链路层、协议层。很多现场问题看着复杂其实九成以上都出在物理层和配置层。下面这套流程我用了很多年每次都能快速缩小范围。2.1 物理层检查线缆、屏蔽、接地先说最常见的问题。伺服驱动器通讯线大多是带金属屏蔽层的双绞线有的人图省事把屏蔽层只在驱动器一端接地另一端悬空这种接法在高频干扰不严重的地方还能凑合但车间里如果有变频器、接触器、电焊机那就等着报通讯错误吧。我正常排查的顺序是确认通讯线型号对不对EtherCAT和PROFINET对线缆的带宽和衰减有明确要求普通网线跑低速还行高速同步场景容易丢帧。检查屏蔽层是否可靠接地而且尽量单端接地避免地环路电流损坏通讯芯片。端子压接是否牢固插针有没有缩针、氧化这个用肉眼仔细看必要时用放大镜。通讯线和动力线是否走同一个线槽如果必须交叉尽量垂直交叉不要平行走线太长。这四条里最后一条最容易被人忽略。我见过一个现场伺服线绕了半米跟在变频器输出线旁边电机一加速就掉通讯把线分开之后问题直接消失。所以物理层检查不是走走过场真的能解决大量疑难杂症。2.2 链路层检查站地址重复与波特率错配物理层没问题接着看链路层。这里重点检查站地址和波特率。现场检修最怕遇到两个驱动器被设成了同一个地址上电之后总线扫描时偶尔能过但运行中周期性冲突表现就是时好时坏、偶发掉线让人以为是接触不良。波特率错配更隐蔽。现在很多总线支持自动协商但伺服驱动器的从站端不建议全指望自动协商尤其多从站组网时最好在主站里统一配置好波特率然后在每个从站上核对一遍。我之前就碰到过一台设备换了块驱动板板子默认波特率和现场不匹配导致整条总线上其他站也被拖得通信不稳定主站反复报警“从站丢失”查了很久才发现是新换的板子和主站波特率没对上。2.3 协议层检查心跳参数与看门狗配置到了协议层核心就是心跳和看门狗。以EtherCAT为例主站会周期性发送过程数据帧从站必须在设定时间内响应超时就报“看门狗超时”。检查时有几个关键参数值得逐一确认看门狗时间常见设置在50毫秒到500毫秒之间太短容易被偶发干扰误触太长又失去保护意义。心跳周期有些协议叫心跳包有些叫KeepAlive本质都是周期性的握手信号周期最好和过程数据刷新周期匹配。自动恢复模式有的主站支持从站重启后自动重新进入OP状态这功能方便但存在隐患比如复位后的坐标可能丢失。对多数项目来说如果站数量不多我建议把看门狗时间设在100毫秒到200毫秒这个区间既能过滤一般的瞬时干扰又能在真正断链后及时触发保护。再短的极限响应只适合高速高动态场合但那种系统通常也配有专门的硬件安全回路。2.4 驱动器侧的“失联报警”怎么解读驱动器的报警码要会看。各家叫法不一样但常见就那么几类报警类别常见报警名含义总线通讯类通讯超时 / Sync Loss收不到主站数据帧心跳类看门狗超时 / Timeout心跳包未按规定周期刷新同步类DC Sync Error / 同步丢失分布式时钟同步失败配置类站地址错误 / NodeID冲突地址或拓扑配置异常看报警码时先把类别分出来不要一看见“通讯”两个字就只想着换线。如果报警是“同步丢失”重点查主站的同步周期设置如果超时时间设得比扫描周期还短必然频繁触发。如果是“心跳超时”先查对端程序看看心跳报文是不是真的在发。3. 防失控的三个设计方向软件看门狗、硬件急停、安全转矩排查完故障接下来要解决的核心问题是怎么让设备在通讯中断时安全停下来。我的经验是分三层来做软件看门狗兜底硬件急停保命再往上就是安全转矩。3.1 控制器侧通讯超时后应该做什么控制器侧的逻辑我建议这样写当通讯超时标志置位立刻停发速度/力矩指令然后把控制状态切到“急停预置”给驱动器发一个明确的停机命令同时记录故障前最后一次有效指令和位置值。这里有个关键点很多程序只做“检测到断线就报警”却没有给驱动器下发任何停机指令。在总线和驱动器都支持的情况下断线后本来还能靠残存的最后一帧指令维持一会儿如果你不主动干预它就真维持下去了。所以控制器侧仅仅加一段“检测到通讯超时后将给定速度清零并触发停车斜坡”的逻辑就能把大部分“假失控”挡在门外。3.2 驱动器侧利用内部看门狗做FailSafe驱动器本身要开FailSafe功能。以现代伺服为例参数里通常有“通讯丢失动作”这一类可选值一般是“保持”、“按减速曲线停止”、“急停”、“沿用最后一次指令”。我的默认推荐是“按减速曲线停止”减速时间根据负载惯量设定太重时给长一点的时间太急促容易导致轴过流或者回馈电压过高。有些驱动器支持“掉线后立即STO”这是最激进的选项适合垂直轴上容易坠落的应用但它会让设备动作突然锁死对机械冲击反而大所以需要和机械系统匹配着考虑。另外要注意如果FailSafe被触发了通常驱动器会进入故障状态需要重新上使能才能动作复位逻辑就得在程序里设计好。3.3 硬件急停回路最后一道防线软件逻辑写得再好都有失效的可能所以硬件急停急停回路不能省。这套东西很多人觉得“老土”但在通讯完全失效、驱动器自己都不听控制器的情况下唯一还能强制断电的就是硬件回路。急停回路怎么设计才有效我建议至少覆盖两级一是急停按钮直接切断驱动器使能信号二是急停按钮同时切断母线接触器。因为只断使能信号驱动器母线充电电容还会维持电压一段时间此时电机虽然不受控但仍可能有残余力矩最好连接触器一起断开把动力电直接切断。这里有一个接线细节容易被忽视急停回路要用常闭触点串联而不是常开并联这是为了断线时自动触发急停而不是断线后反而失效。3.4 安全转矩断开STO概念STO其实不算新东西但现在总线通讯型驱动器基本都标配了。它的意思是安全回路激活后驱动器内部直接封锁功率管的触发脉冲不让电流流入电机相当于从原理上消除产生转矩的可能。这个功能不用断电也不影响控制电源所以复位特别快。如果应用场景是垂直轴或者容易由于重力移动的轴STO尤其值得用起来。有些项目里上位机通过安全PLC输出STO请求一旦通讯异常就触发STO这种做法比单纯靠驱动器内部FailSafe多了一层外部逻辑判断可以把“主站异常但驱动器自己还没感知到”的情况也覆盖掉。当然STO回路涉及安全完整性等级选型和布线要按标准走别自己乱接最好让安全系统的供应商配合设计。4. 落地实操PLC与驱动器的通讯监看配置与调试理论讲再多不如把配置步骤走一遍。下面以一套常见的主站PLC加总线伺服驱动器为例给出我觉得相对稳妥的配置流程具体参数名字各品牌会有差异但思路是通用的。4.1 设置心跳周期和超时阈值第一步在主站侧把“通讯周期”和“看门狗超时”统一规划。我会先估算现场总线上有多少个从站再确定通讯周期。假设三个轴加一个I/O站总线周期设1毫秒就足够看门狗超时设10毫秒到20毫秒这个量级既能反映总线异常又不会因为偶尔的干扰抖动而频繁停机。如果总线上的从站数量多比如十几个甚至几十个1毫秒周期可能会让主站CPU负载过高那就适当放宽到2到4毫秒看门狗超时也同步放宽到20到50毫秒。心跳参数的设置逻辑是周期尽量等于或者略高于过程数据刷新周期超时阈值通常是心跳周期的5到10倍。为什么是5到10倍因为要允许偶发的调度抖动但又不能宽到“断了线还要一两秒才反应过来”这个量级对工业设备是合理的。4.2 配置超时后的停机动作第二步在驱动器参数里设置通讯丢失动作。我一般先按“按减速曲线停止”来配减速时间从默认值开始根据实际轴的转动惯量调整。怎么调看停机过程中的总线电压波形如果电压上升得特别快说明回馈能量大减速时间要加长如果停机缓慢且可接受就把时间缩一点。对垂直轴我倾向于直接配置成“STO触发”避免电机因重力滑落。驱动器在“通讯丢失停止”之后往往会进入可复位但需重新上使能的状态。因此在主站程序里还要设计一个“复位并使能”的时序确保操作员在解除故障后能安全地把设备恢复到待机状态而不是按了复位就自动运转。4.3 上电时序与初始化校验通讯配置完成后别急着跑工艺动作先把启动时序过一遍。正常的启动顺序应该是控制电源上电 → 驱动器初始化 → 主站连接总线并识别从站 → 读取各驱动器的状态字和位置反馈 → 发送“伺服使能” → 等待驱动器返回“运行就绪”。这一步里的每个环节都应该有状态确认不能只发指令不读反馈。我最喜欢在调试时做的一个测试叫“拔线测试”设备在低速状态下运行人为拔掉通讯线或断开网线观察驱动器是否按配置停机重新插回后能否正常复位。这个测试看起来简单但真的能暴露不少问题。我记得有一次测试中拔线后驱动器倒是停下来了但重新插上线后主站认为通讯恢复就直接发送了原来的指令轴立刻再次启动把旁边的操作员吓一跳——这就是复位时序没设计好。之后我就在程序里加了状态机要求通讯恢复后必须经过一个“手动确认清零”状态才能再次使能。5. 真实场景复盘某自动化产线的通讯中断故障讲一个我经手过的典型案例。某条包装线上有一个同步输送轴由伺服驱动走总线控制。故障表现是每次运行到一定速度后偶尔会突然报“总线同步丢失”报警后设备急停。现场换过通讯线、换过接头、调过波特率问题都还在差不多折腾了两周。5.1 现象进一步观察我过去后没有直接改参数而是先在驱动器的事件记录里翻了历史报警发现报错时间往往集中在几次加速段。这个线索很关键为什么不是匀速段偏偏是加速段加速段有一个明显特征就是母线电压波动大电流变化率也大电气噪声相对更强。所以第一步怀疑方向就不该是“线缆接触不良”而是“干扰在瞬态工况下被激发出来了”。我又看了一下报警码前的几个毫秒内的总线状态发现并没有长期丢帧只是偶尔有一两帧循环冗余校验出错然后是看门狗超时再才是报警。这说明问题源头不是大规模断链而是偶发性的数据帧损坏。5.2 从波形到干扰源接着我用示波器挂上驱动器的电源端和通讯线端用加长触发抓加速瞬间的波形。果不其然在加速瞬间母线电压上出现了一个高频尖峰群通讯线屏蔽层上也同步感应到了不少毛刺。再往前查这套设备的共直流母线汇流排上还并联着两台上位变频器它们正好在同一个小段时间内加速瞬时电流叠加把直流母线打出了很大的纹波。理清这个链路后整改措施就很简单了通讯线从靠近动力线的桥架挪到独立桥架驱动器的直流母线侧加装一个更适合现场工况的滤波电容模块把两台上位变频器的加减速时间曲线错开避免同时加速驱动器侧通讯接口重新压接屏蔽接地端子。5.3 验证与复位逻辑完善改完后连续跑了一周满载生产报警再没出现。同时我还要求机修把驱动器的“看门狗超时”从默认的300毫秒改到100毫秒这样一旦再发生偶发性干扰系统能够更快地停机保护而不是让设备在噪声影响下继续运行一小段时间。这个案例里最值得记录的不是最后改了什么件而是“为什么”为什么查了很久没查出来因为大家只怀疑断线没有关联工况。为什么要在加速段找问题因为瞬态冲击往往是诱因稳态下一切正常不代表高速高负载下正常。为什么报警码很重要因为它能把排查范围直接缩小到物理层和协议层。6. 常见问题与排查技巧速查表下面把平时被问得最多的几种情况整理一下方便大家直接对照处理。6.1 通讯中断却没有任何报警如果通讯已经断了但控制器和驱动器都没有报警先检查报警屏蔽。很多驱动器有“屏蔽通讯报警”的选项出厂默认可能为关但有些项目在调试时为了“方便”把这个报警忽略了结果真正的故障就失去了最后一道提示。另外主站里也有“通讯故障不报”的可能性常见于脚本逻辑里把通讯错误当普通状态位处理没有触发界面显示。6.2 有报警但电机还在动有报警说明驱动器已经感知到异常但电机仍然动就要去查“通讯丢失动作”参数。之前说过如果参数是“保持最后指令”报警和电机动作可能会并存。把该参数改成“按减速曲线停止”再验证问题往往马上改观。还有一情况是执行了“按减速曲线停止”但因为减速时间设置太短机械负载又重驱动器在停止过程中触发了过流或者过压保护从而无法继续输出转矩看上去像是没停住甚至更失控。处理办法是调整减速斜坡并增加刹车电阻让回收的能量有地方释放。6.3 通讯恢复后设备突然乱跑这种情况最让人头疼本质上还是复位逻辑不严谨。通讯恢复后主站在没有确认当前实际位置、速度以及驱动器状态的情况下直接把停线后的缓存指令重新下发设备就会突然加速到原来的设定值。说白了这是“指令残留”的另一种表现。我建议在程序里加一个“通讯恢复后进入待机待人工确认再切入自动”的机制。具体到代码层面就是把自动运行状态机与通讯状态强相关只有通讯正常且操作员按下复位确认后才允许切回自动并且在切换前把目标速度从零开始斜坡给定。6.4 两个驱动器地址重复怎么快速定位如果你的系统里有预留的调试口可以在驱动器调试软件里逐个查看“当前站地址”和“总线状态”同一总线上相同地址的从站通常只有一个能正常在线另一个会显示冲突。如果现场没法接调试口就在主站侧把从站逐个从总线上摘下观察主站还能识别到几个站剩下的那个大概率就是重复地址的那一台。有个笨但有效的土办法把从站全部断电只上一个用主站扫描识别到了就记录地址再上第二个依次识别。这个过程虽然慢一点但逻辑清楚不会漏。常见症状优先怀疑排查动作偶发掉线匀速没事加速时报瞬态干扰查母线电容、线缆走线看报警时刻是否在加减速段换线之后依然报错参数问题查波特率、站地址、看门狗超时报看门狗超时但线是好的主站程序心跳卡死查主站扫描周期加心跳发送监视通讯恢复后自动再启动复位时序缺失在程序里加入人工确认复位状态机急停无效急停回路设计错误确认常闭串联、断开使能、断开母线接触器7. 现场必须养成的几个习惯这套东西做到最后技术方案可以复制但真正拉开差距的是现场习惯。我在通讯排查上吃过亏之后给自己定了几条规矩也建议大家照着一试。第一每次调试完成一定把驱动的报警记录清零然后保留默认报警历史别动不动就清空。报警历史是事后分析问题的第一手证据很多疑难故障靠的就是报警前后几秒的数据。第二通讯线缆的备用芯不要随便并到其他信号上。有人觉得多芯线空着浪费拿去做别的控制信号结果跨线串扰问题一来通讯就变得间歇性抽风很难查。线缆备用就是备用让它闲着。第三所有涉及到通讯中断的停机测试要在验收时当着用户面做一遍。别嫌这个测试简单很多设备厂家交机时根本没做过拔线测试用户现场操作出错或者干扰出现时直接被坑。提前做一遍相当于给双方都上了一道保险。第四不要迷信“换根好线就好了”。通讯协议栈配置、看门狗时间、驱动器FailSafe参数这些才是决定系统在故障下表现的核心。好线能降低故障概率但耐不住故障概率不为零的时候没有兜底方案。最后再分享一个小技巧在驱动器程序里把“通讯异常”和“使能状态”交叉关联起来看。正常工作时通讯一直在线使能信号也一直在一旦通讯异常了如果使能信号还在那说明控制器的故障响应逻辑没有生效这就是程序上的漏。把这个交叉判断做到监测画面里对现场维护的帮助比单纯看报警码大得多。通讯中断未必等于失控真正失控是可以提前设计掉的。希望这篇文章能帮你在下一次遇到类似报警时少走一点弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑