PLC响应慢怎么办?扫描周期这样优化

上个月去一个客户现场,包装机动作总是”慢半拍”。

按启动,气缸要等一拍才动;调变频器速度,屏幕数字也卡一下。

客户说:设备没坏,就是反应迟钝,产能上不去。

我打开程序一量,扫描周期已经干到 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,多数时候是程序自己拖慢了自己。

你们现场遇到过扫描周期爆表的情况吗?最后怎么解决的?评论区聊聊。

上一篇 变频器频率调不上去?三步锁定问题源头