首页 / 新闻资讯 / PLC通讯掉线断连排查
技术分享

PLC通讯频繁掉线断连怎么排查?心跳检测、断线重连与超时参数设置实战

PLC通讯心跳检测与断线重连调试
← 返回新闻列表

做上位机开发,最让现场头疼的不是功能做不出来,而是PLC通讯时好时坏:白天好好的,半夜断了;数据采集停了,界面上的指示灯却还绿着。很多人一上来就怀疑网线,反复换线也没用。这篇文章把PLC通讯掉线断连的排查思路讲透,从现象分类到心跳、重连、超时参数,再到PLC侧看门狗,都是数据采集项目里踩出来的经验。

先分清三种"掉线",治法完全不同

排查PLC通讯故障,第一步永远是分类。第一种是根本连不上:上电就建链失败,多半是IP、端口、机架槽号或PLC侧PUT/GET权限没开,设备通讯在握手段就过不去。第二种是运行中突然断开:交换机断电、网线被碰、PLC重启都会导致,特征是上位机软件抛异常。第三种最阴——偶发超时和僵死:读写偶尔超时一次又自己恢复,或者TCP连接表面正常、数据却不再更新。

第三种是上位机开发的重灾区。做数据采集不能只看连接对象的状态,必须用真实的读写结果判断链路死活。把三类现象分开记录,统计每小时断连次数和超时分布,才能判断问题在物理层、网络层还是协议层,否则设备通讯故障永远在"换线——重启——再观察"里打转。

TCP半开连接:为什么绿灯会骗人

以太网型PLC通讯走TCP,而TCP不会立刻感知对端掉电。网线被拔、交换机停电、PLC强制重启时,如果没有经过四次挥手,上位机这边的Socket属性仍然显示已连接,数据采集线程却永远收不到新数据。这就是半开连接,也是"界面绿灯、数据停摆"的根源。做上位机软件开发必须默认这个状态存在。

识别半开连接有两个手段:一是开启TCP的KeepAlive,把保活时间、探测间隔设成分钟级,让协议栈自己发现死链;二是应用层心跳,上位机每隔几秒读一次约定好的心跳字,连续多次读失败或数据不变化,就主动判定链路死亡。工业现场更推荐应用层心跳,因为KeepAlive默认两小时才探测,等不起,而且跨平台默认值不一致。

心跳字怎么设计才靠谱

成熟的数据采集项目,心跳都不是简单地"能读通就算活"。建议在PLC里开一个心跳字,PLC程序每个扫描周期自加或按1秒翻转一个布尔位;上位机开发时轮询这个点,连续三次读到相同值,说明PLC程序跑飞或通讯卡死。再配合一个上位机写、PLC回显的握手字,双向都能验证,设备通讯的死活一目了然。

心跳轮询周期按工艺安全时间定,一般两到五秒一次。判定阈值要大于正常轮询抖动,避免一次偶发超时就误判掉线引发全场报警。心跳点要并入PLC通讯采集的正常点表统一调度,不要单独开连接,否则又多一条占资源的链路。

断线重连:状态机加指数退避

很多新手做上位机开发,重连逻辑写在异常捕获里:断了立刻while死循环疯狂Connect。结果PLC重启的几十秒内,上位机软件每秒发起十几次连接请求,把PLC本就有限的连接资源占满,恢复后反而连不上。正确做法是三态状态机:在线、疑似离线、离线,由心跳和读写结果驱动迁移;离线后按一、二、四、八秒指数退避重连,封顶三十秒,并加随机抖动。

重连成功不能马上恢复全量数据采集,先小批量读几个点验证链路质量,再逐步恢复完整轮询表。重连期间PLC通讯采集不能傻等:界面明确置灰显示"通讯中断",关键数据打上坏质量戳,报警照样弹出,本地缓存待写指令但要标注时效,恢复后让操作员决定是否补发,绝不能把半小时前的启动指令偷偷发下去。

超时参数:拍脑袋设三秒是常见错误

超时分连接超时和读写超时。连接超时建议三秒,快速失败别让UI等一分钟;读写超时要按轮询周期和设备数量算:一条总线十个站、每站应答五十毫秒,最坏情况就是五百毫秒,读写超时设在八百毫秒到一秒比较合理。设太短,网络轻微抖动就大面积误报;设太长,真断链时数据采集半天才反应,报警全失去意义。

重试也要讲策略:同一请求最多重试两到三次,重试只针对超时,明确返回的协议错误(地址非法、权限拒绝)重试一百次也没用,应立即记入日志。做上位机开发还要统计每次请求耗时,把P99耗时画成曲线,设备通讯变慢往往比彻底断开更早暴露问题。

别忘了查PLC侧资源和网络物理层

S7-1200/1500的通信资源是有限的,早期固件开放连接数很少,三台电脑加一个网关同时做PLC通讯采集就可能把新连接拒掉,表现就是"时连时不连"。博途里确认PUT/GET允许访问、连接资源占用、固定PLC的IP不要和别的设备冲突。串口和Modbus RTU场景则查站号重复、波特率不一致和终端电阻,这些在设备通讯调试中占了故障的一半。

物理层别放过水晶头氧化、网线和动力桥架同槽、交换机端口协商成半双工、屏蔽层两端接地形成环流。偶发性掉线尤其要看交换机日志和错误包计数。时间允许的话抓包看TCP重传与RST,比靠猜快得多。

最后一道防线:PLC侧看门狗

上位机软件再健壮也会崩溃、电脑会死机、网线会被叉车挂断。涉及设备控制的项目,PLC程序里必须有看门狗:上位机正常时定期复位定时器,一旦PLC通讯采集中断超过设定时间,PLC自动进入安全状态——停送料、关加热、保持当前位置,而不是继续按最后收到的指令闷头跑。看门狗的安全动作要和工艺一起评估,写进上位机开发的联锁规格书。

总结一下:PLC通讯稳定不靠玄学,靠的是承认TCP会骗人、用心跳验证死活、用状态机和退避管理重连、用算出来的超时替代拍脑袋、再用看门狗兜住安全底线。再把断线次数、超时率、恢复时长做成数据采集的运维看板,设备通讯状况可量化,现场就不会再靠重启碰运气。如果你的产线正被频繁掉线折磨,需要一套带完整心跳重连机制的上位机软件,欢迎找我们做通讯诊断:免费咨询,或致电 13761638786。

← 上一篇 设备上位机CAN总线通讯:CAN报文解析、J1939协议与收发调试实战

有软件开发需求?

专业顾问1对1咨询,30分钟出方案,让您的想法快速落地