触摸屏动画搞崩了PLC?——一个HMI画面优化让扫描周期从48ms降到12ms的真实案例

工业触摸屏HMI

一个HMI动画让PLC扫描周期从48ms涨到12ms,我找了整整两周

这事儿说起来有点丢人,但既然做技术的不怕打脸,我就原原本本讲一遍。

上个月给一个食品包装厂做一条枕式包装机的控制系统改造。设备不复杂:一台S7-1200带两个伺服轴(横封和纵封)、几个温度控制点、一个色标传感器追标。触摸屏用的是威纶通的MT8071iE,我负责全部的PLC程序和HMI画面。

甲方要求HMI画面做得好看一点,说以前那家做的”太丑了,操作工不爱看”。行,甲方是上帝,我就在威纶通里加了不少动画——转动的电机图标、流动的箭头表示物料方向、温度数值旁边用了个条状指示条实时变色,显示效果确实不错。甲方看了很满意,我也挺得意。

问题出现在联机调试的第三天。

奇怪的现象

包装机跑低速的时候一切正常。但提速到设计速度的70%左右,开始出问题了——横封和纵封的追标位置偶尔会偏,导致包装袋切到了图案上。一开始我以为是色标传感器参数没调好,在触摸屏上改了追标参数,跑一会儿又偏了。

我拿着万用表和示波器在控制柜前蹲了一上午,传感器信号没问题,伺服驱动器的脉冲也没有丢。那就怪了,难道是程序逻辑出了问题?

这段程序是我基于以前的项目改的,逻辑走了很多遍了,不应该有问题啊。

后来一个做IT的朋友来工地看我,他瞄了一眼我的TIA Portal,随口说了一句:”诶,你这CPU的扫描周期怎么曲线跟心电图似的?”

我一看监控表,顿时愣住了——PLC的扫描周期在12ms到48ms之间来回跳,最优的时候12ms,差的时候能跳到将近50ms。包材速度一快,扫描周期波动就明显。包装机横封和纵封之间需要精确同步,扫描周期不稳定,位置控制自然就不准了。

但问题是,S7-1200跑这么点逻辑,扫描周期不应该超过5ms才正常。这48ms是哪来的?

排查过程

用了整整一天一夜排查程序。我把OB1里的逻辑一段一段屏蔽掉找原因。

先屏蔽运动控制相关的FB块——扫描周期降了一点点,还在20ms左右晃。再屏蔽通讯指令——变化不大。把温度PID控制屏蔽了——还是没降到正常水平。

我当时差点想把PLC砸了。程序里明明没多少东西,CPU负载也不高,怎么就慢了?

第二天我拿着笔记本电脑直接坐在设备旁边,拔掉PLC和触摸屏的通讯线(Profinet),奇迹发生了——扫描周期直接掉到3ms!

问题出在触摸屏和PLC的通讯上。但威纶通屏和S7-1200走的是标准的Profinet,我不可能不连屏啊。

接着我把通讯线插回去,开始排查HMI画面的问题。

我打开威纶通的EasyBuilder Pro,看着自己精心设计的那几十个动画和指示条,一个可怕的念头冒了出来——该不会是我自己搞的吧?

真相

我开始一个一个删除HMI上的元件做对照测试。删掉了那个旋转的电机动画——扫描周期降了5ms。删掉了物料流动箭头——又降3ms。删掉了温度条状指示条的变色动画——再降5ms。

当我删掉了大概一半的动画元件后,扫描周期稳定在了8ms。

然后我突然明白了。

HMI上的每个动画元件,其实都在持续向PLC请求数据。而且威纶通这个屏有个特点:你加了多少个动画元件,它就会按照设定的刷新频率挨个去读PLC里对应的地址。你加了50个动画,它就每秒钟读50次数据。读数据本身不费什么资源,但PLC响应这些请求需要时间。

更关键的是,威纶通屏读取PLC数据用的是”轮询”方式——不是并行读,是一个接一个排队读。如果一个扫描周期内要响应的HMI请求太多,PLC就忙着应答通讯了,真正跑程序的时间就少了。

以前我做HMI从来没注意过这个问题,因为以前的设备简单,总共就两三个页面,动画寥寥无几。这回甲方要求”好看”,我一口气加了四种不同风格的动画,每个页面上还有历史数据曲线和实时报表——这才是罪魁祸首。

历史数据曲线的刷新需要PLC连续上传大量数据,再加上几十个动画同时在读点,PLC的通讯负载直接爆了。

解决方案

发现了原因就好办了。我做了以下几件事:

1. 减少动画数量。把旋转动画改成静态图标,只保留关键状态的颜色变换。原来想的是好看,实际上操作工看两天就腻了,没人会在乎那个电机图标转不转。

2. 降低刷新频率。非关键数据的刷新周期从100ms改成500ms甚至1秒。温度变化本来就慢,没必要每100ms刷新一次。

3. 用PLC内部优化。在PLC程序里把HMI要读的数据集中到一个数据块里,这样HMI只需要读一个连续的数据块,而不是到处分散地读单个地址。一次通讯读32个字跟读32次每个1个字,效率天差地别。

4. 历史数据曲线改用本地采集。威纶通屏支持历史数据存在屏本地,不需要每次从PLC实时拉数据。我在屏里设了数据采样,每5秒存一次,曲线直接从屏自己的存储读取,PLC完全解放了。

改完之后,扫描周期稳定在4ms左右。包装机提速到100%,追标精度回到了±0.5mm以内。甲方验收的时候问我为什么有些动画没了,我说”电机图标转不转不影响包装质量”,他想了想,说对。

总结一下教训

这次踩坑让我学到了一件事:HMI不是设计给工程师自己看的,是做给操作工用的。操作工需要的是直观的状态指示、清晰的报警信息和流畅的操作响应,不是花里胡哨的动画特效。

另外,做PLC项目的人,一定要养成看扫描周期的习惯。我在TIA Portal里把扫描周期的监控加到了看门狗诊断里,一旦超过设定值就报警。这样就算以后画面再出幺蛾子,也能第一时间知道。

后来我跟另一个做威纶通的兄弟聊起这事儿,他说他遇到过更离谱的——客户在HMI上做了个动画版的俄罗斯方块用来”上班摸鱼”,PLC扫描周期直接飞到了80ms。老板发现了以为是设备坏了,差点把供应商叫过来返修。

你们做HMI的时候遇到过什么搞笑或者翻车的事?评论区讲讲呗。

PLC控制柜

上一篇 AI写的PLC代码你敢直接上产线吗?——我拿3个大模型实测了3个月,总结了一份避坑实录
下一篇 2026年铜价涨了40%,做PLC项目的兄弟报价该翻篇了——一个系统集成商采购的辛酸账本