上个月去一个客户现场,包装机动作总是”慢半拍”。
按启动,气缸要等一拍才动;调变频器速度,屏幕数字也卡一下。
客户说:设备没坏,就是反应迟钝,产能上不去。
我打开程序一量,扫描周期已经干到 25ms。问题就在这。
先搞清楚一件事:PLC 不是同时干所有活的。
它一圈一圈跑:读输入→跑程序→刷新输出,跑完一圈的时间就是扫描周期。
周期短,设备反应就快;周期长,动作就”迟钝”。
拿三菱 FX3U 举例:基本指令一条只要 0.065 微秒,应用指令 0.642 微秒。
理论上几千步程序,一圈也就几毫秒,不该慢。
可现场实测,扫描周期经常被拖到十几、二十几毫秒。
程序步数多只是原因之一,往往还不是主因。真正的”吃周期大户”是这三类:
- 通讯指令:Modbus 轮询、以太网读写,一次握手就几毫秒,每圈全查一遍就是灾难。
- 浮点运算和大循环:浮点数运算比整数慢好几倍,循环嵌套更是翻倍涨。
- 模拟量软件滤波:滤波算法算的次数越多,单圈耗时越长。
那天我就按三步来,20 分钟把扫描周期从 25ms 压回 8.5ms。
第一步:先量真实周期,别靠猜。
三菱 FX 系列在线监视特殊寄存器:D8010 是当前扫描时间,D8012 是最大扫描时间,单位毫秒。
先记下 D8012,后面每改一步都比对这个数。
第二步:用条件跳转定位耗时块。
把怀疑的程序段用 CJ 条件跳转临时跳过,再看 D8012 掉多少。
一段一段试,谁掉得狠,谁就是元凶。
第三步:通讯轮询分拆,别每圈都查。
比如 8 个 Modbus 从站,原来每圈全查一遍。
改成每 8 个扫描周期轮询 1 个站,一圈只做 1/8 的活。
代价是单个站刷新慢一点,但整体响应快一大截。
那天实测:优化前 D8012=25ms,优化后 8.5ms。
包装机启动响应从”肉眼可见慢半拍”回到正常手感,变频器调速数字也跟手了。
整台设备一分钱没花,就把产能卡顿解决了。
但别急着把所有设备都往快里压,先把风险说清楚:
- 高速场合才敏感:伺服插补、点胶轨迹、飞剪这类对扫描周期要求高;普通启停设备十几毫秒根本无感,别瞎折腾。
- 通讯别乱塞中断:把 Modbus 放进中断能提速,但数据没握手完会被打断,丢数据风险大,新手别碰。
- 周期压太狠会抖:输出刷新太快,接触器、电磁阀动作频率上来,机械抖动和寿命都受影响,要留余量。
- 滤波次数别乱砍:砍软件滤波能省扫描时间,但信号毛刺会进来。温度、液位这类慢变量该滤还得滤。
关于模拟量滤波怎么设,我之前写过一篇:PLC模拟量读数跳变怎么办?滤波参数这样设,可以对着看。
真到高速点胶这种场合,普通 PLC 的扫描周期本身就跟不上,得靠高速脉冲或专用运动控制,那是另一套玩法(PLC高速脉冲输出控制点胶平台怎么设)。
扫描周期这事,说穿了就一句话:先量,再定位,最后做减法。
别一上来就换 PLC,多数时候是程序自己拖慢了自己。
你们现场遇到过扫描周期爆表的情况吗?最后怎么解决的?评论区聊聊。