刚入行那会儿,师父跟我说:改PLC程序必须停机下装。我还不理解,心想为啥不能跟电脑装软件一样在线更新呢?后来干了几年才明白——不是技术做不到,是代价你扛不起。
一次把我吓出冷汗的热下载
去年给一家电子厂做S7-1200的项目,产线24小时跑,停机一分钟损失大概两千块。客户说有个小逻辑要改,能不能不停机搞一下。我当时拍着胸脯说可以——PLC支持在线下载嘛,小意思。
结果按钮一按下去,那一瞬间整个人都不好了。
在线下载的瞬间,虽然PLC没停机,但输出全部复位了。电磁阀全掉电,气缸全缩回,传送带上的PCB板子噼里啪啦掉了一地。好在老板人不错,说”没事第一次理解”。但是三十多块板子报废,人工捡了俩小时。
从那以后我学乖了:不搞清楚在线下载的脾气,真不能随便玩。
热下载到底是怎么回事
先说个基本的理解。PLC运行的时候,CPU在不断执行用户程序——也就是”跑一圈”(扫描周期)。你在线下载新程序,相当于跑步的时候换鞋。技术好的,脚不沾地换完了;技术不行的,啪,摔一跤。
西门子S7-1200/S7-1500、三菱FX5U/iQ-R、欧姆龙NJ/NX这些主流PLC现在都支持在线修改(各家叫法不同,西门子叫”下载到设备”,三菱叫”运行中写入”)。但支持的深度和限制差很多。
第一个坑:输出会冻住或复位
在线下载过程中,大多数PLC会进入一个短暂的状态:要么把输出置为安全态(西门子的做法),要么保持下载前的最后状态(三菱部分型号)。不管是哪种,这个”中断”虽然只有几十到几百毫秒,但足够让高速设备出事了。
我之前接过一个案子,某厂用伺服做飞拍定位,节拍是1.2秒一个工件。工人在线下载了一段程序,就那两三百毫秒的输出闪烁,伺服直接飞车了——因为脉冲输出时序被打断了,位置偏差了三十多毫米,撞坏了夹具。
正确做法:在线下载前,先把执行机构断开或者打到手动状态。特别是伺服、变频器正在运行的时候,尽量不要在线下载。
第二个坑:DB块数据全清空
这个是很多人踩过的坑,包括我。在线修改的时候如果不小心动了DB块的定义——比如增加了一个变量或者改了数据类型——下载完成后DB块数据全部归零了。
有回做化工项目,反应釜的温度PID参数和累计产量都存在DB块里。我不过是加了一个中间变量,下载完发现之前调试好的PID参数全丢了,产量累计也归零了。还好当时备份了参数,要是没备份,重新整定一套PID够我忙活一天。
正确做法:在线下载前把关键数据(配方参数、累计值、PID参数)先读出来备份。西门子的博途里有个”快照”功能,下载前点一下保存,万一出事了恢复回来。
第三个坑:程序逻辑不一致导致异常
在线下载最隐蔽的坑在这里:你下载了新程序,但PLC里原来跑了一半的逻辑怎么办?
举个例子。原来的程序里有一个步进顺序控制,正在第5步执行——气缸A伸出,等待传感器到位。你在线下载后新程序把这个顺序控制改成了8步,而且把第5步里的一段逻辑删了。下载完成后,PLC继续从第5步开始跑,但第5步的逻辑已经不存在了。气缸伸出去就一直伸着,因为后面的步序对不上了。
这就好比看一半电影你换了盘碟,新碟直接从中段开始播,剧情全对不上。
正确做法:在线修改的时候,尽量不要改顺序控制的流程结构。如果非要改,先把设备复位到初始状态再下载。或者加一个”下载完成初始化”的机制——下载完成后把步进计数器清零,让程序重新走一遍。
第四个坑:新变量或新块不会立即激活
这个坑挺有意思的。有的PLC(比如西门子S7-1200的部分固件版本)在线下载新加的函数块或数据块,不会立即被主程序调用——因为OB1或者主循环里的调用关系是编译时确定的。你得再下载一次主循环才能叫到新加的块。
三菱的FX5U也有类似问题。我在现场改了一个FB块里的逻辑,下载完看监控发现值不对,折腾了半天才发现新程序根本没跑——因为调用那个FB的主程序段是旧的。
正确做法:在线下载完成后,打开监控看一下关键变量的值是否跟你预期一致。不要以为下载完了就完事了,有时候需要再触发一次调用。
第五个坑:不同品牌的在线下载差异
这个说说各家的脾气:
- 西门子博途:S7-1200/1500的在线下载比较成熟,但下载前会弹出来一堆警告——”以下块将被修改””数据将被覆盖”——别不耐烦直接点确定。认真看一下改了哪些块。还有,固件版本老的S7-1200(V4.0以下)在线下载只能改逻辑不能改硬件组态。
- 三菱Works3:FX5U和iQ-R的”运行中写入”速度挺快,但对程序结构变更的支持有限。如果你改了全局标签的定义,通常需要完全停止再下载。
- 欧姆龙Sysmac:NJ/NX系列的在线修改做得很细,可以选择”只下载变更部分”,对设备影响最小。但我遇到过一次因为轴配置轻微修改导致伺服报错停机的情况。
- 汇川/信捷等国产:在线下载功能这些年进步很大,汇川的AM系列和三菱iQ-R体验差不多。但是记得先把软件版本和PLC固件版本保持一致,否则各种莫名其妙的问题。
我的在线下载自检清单
每次在线下载前,我走一遍这个清单,不会再出事了:
- 确认设备当前处于手动或停止状态,自动运行中坚决不下
- 备份关键数据:PID参数、累计值、配方号、当前工步号
- 快照/截屏保存DB块的当前值
- 检查程序修改是否涉及顺序控制的步序结构
- 检查DB块数据结构是否有变更(新增/删除/修改变量类型)
- 检查硬件组态是否有变更
- 告知现场操作人员——”我要下载了,设备可能会有短暂异常”
- 下载完成后逐一验证修改的功能
- 下载完成后检查有没有异常报警
- 恢复备份的关键数据(如果有清空的)
什么时候绝对不能在线下载
有几种情况,打死也别在线下载:
- 安全相关的逻辑:急停、光栅、安全门相关的程序,必须停机下装。这线断了出了工伤你负不起责。
- 运动控制正在运行时:伺服做定位、插补、飞剪这些高速运动,在线下载对脉冲输出的影响可能导致撞机。
- 工艺参数整定阶段:PID自整定、跑工艺配方的时候,在线下载可能打断整定过程,之前的数据就废了。
- 固件版本升级:这个不是在线下载了,是固件升级。千万别在产线运行的时候升级PLC固件——那个是彻底停机。
写在最后
在线下载这个功能,用好了能省不少事——改一个小逻辑不用停机,少亏钱。用不好就是给自己埋定时炸弹。
我的原则很简单:能停机就停机下装。实在不能停机的,严格按照自检清单操作,而且只改最小范围的程序。改完立刻验证,验证完赶紧撤。
你们遇到过在线下载翻车的情况吗?评论区聊聊,让我看看我不是一个人。