PLC扫描机制:很多老工程师都踩过的隐形坑

干自动化调试快16年了,见过太多项目翻在看不见的地方。不是元器件坏了,不是接线错了,就是PLC最基础的扫描机制出了问题。偏偏这个东西,教材里只讲三句话,进厂没人特意教,出了bug找破头。

你真的搞懂PLC的扫描顺序了吗

几乎所有入门教程都会写,PLC工作分三步:输入采样、程序执行、输出刷新。可真到写程序的时候,没几个人把这句话往心里去。

去年给长三角一家汽配厂改冲压线的旧控制系统,新来的小伙子程序写得整整齐齐,模块化分块,看起来特别舒服。结果试机的时候,急停按下去,滑块愣了一下才停下来,把在场所有人都吓出一身汗。

查程序吧?逻辑没错啊,急停触发就断开所有动力输出。翻了十分钟才发现,他把急停的输入判断放在了整个程序的最后一段,动力输出的控制逻辑写在最开头。

问:我写程序都是按逻辑顺下来的,不就是从上到下走吗?能出什么问题? 答:从上到下走没错,可PLC是整个程序扫完才统一刷新输出啊。也就是说,你这一个扫描周期开始的时候读入的急停信号,要等所有程序都执行完,才会更新输出端子的状态。刚才那个例子里,急停信号已经进来了,可动力输出的逻辑已经在上半段执行完了,只能等下一轮扫描才能断开。别小看这几十毫秒的延迟,高速冲压设备上,足够出大事。
PLC循环扫描工作流程示意图
PLC循环扫描工作流程示意图

不止是安全信号,高速脉冲计数也一样。很多新手把高速输入的计数逻辑放在主程序里扫,只要线速一提,必然丢脉冲。因为你扫输入的速度,跟不上脉冲来的速度啊。合适的做法是直接用PLC自带的高速计数模块,硬件自动计数,主程序只用读结果就行,根本不用你自己扫。

扫描周期不是恒定的,这事真的没多少人说

说实话,我刚入行那会,真的以为PLC每个扫描周期的时间都是一样的。教材里也只写“通常扫描周期为几毫秒到几十毫秒”,没说过它会变啊。

我自己踩的第一个大坑,是做瓶装水生产线的分包计数机。一开始空载调试,跑的特别顺,计数准分包对,客户都准备签字了。一开满负荷生产,没十分钟就开始乱分包,整箱的数量忽多忽少,查了整整三天。

最后才发现,程序里加了一段和上位机的通讯指令,每分包一次就要发一次数据给后台统计。空载的时候没多少数据要发,扫描周期稳定在8ms,满负荷的时候,一堆数据要发,扫描周期直接冲到70多ms,刚好卡不上高速计数的窗口,就开始丢数。

问:我做项目都用离线模拟,显示扫描周期才几毫秒,实际跑起来真会出问题? 答:离线模拟根本跑不完你所有的逻辑分支啊!满负荷生产的时候,所有的通讯、运算、数据记录都在跑,扫描周期自然涨上去。我早年遇到过最夸张的,程序加了一个批量数据记录的功能,触发一次直接把扫描周期拉到400多毫秒,整台设备的线速直接掉了三分之一,怎么都查不到原因。
工业PLC人机界面扫描周期监控截图
工业PLC人机界面扫描周期监控截图

很多人现在选PLC,一味看IO点数,看内存大小,从来不看扫描周期的性能。其实对实时性要求高的设备,扫描周期的稳定性比什么都重要。

几个压箱底的实用技巧,现场用了都说好

几个压箱底的实用技巧,现场用了都说好
几个压箱底的实用技巧,现场用了都说好
  • 安全类信号永远放在程序最开头扫描:急停、安全门、过载保护,这些跟人身设备安全相关的逻辑,第一个扫,别堆到后面。程序好看不重要,命重要。
  • 非实时任务别放在主程序里蹭时间:什么串口通讯、数据打印、历史记录存储,这类对实时性要求不高的任务,要么放定时中断,要么放背景任务,别占主程序的扫描时间,把整个周期拖慢。
  • 关键高速信号直接走硬件中断:比如编码器定位、飞剪切刀,这类差几毫米就废的任务,别等主程序扫,直接绑硬件中断,信号一来立刻执行,根本不耽误事。
  • 项目验收前一定要监控一小时最大扫描周期:几乎所有PLC都能读出当前扫描周期和历史最大扫描周期,满负荷跑一小时把最大数值记下来,留个三分之一的余量,后续基本不会出问题。

不过话说回来,也不是说PLC扫描机制是什么洪水猛兽。干久了你就知道,PLC最靠谱的就是它这个死脑筋的循环扫描,只要你摸透它的规矩,它就给你踏踏实实干活,不出幺蛾子。

最怕的就是半懂不懂,上来就堆功能,把基础的东西抛在脑后,临了验收出问题,还怪PLC不好用。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:PLC扫描机制:很多老工程师都踩过的隐形坑
文章链接:https://www.zystgy.cn/a/61097