接了个急活,甲方说”程序你写,出了问题你负责”
上个月接了个项目,客户急得跟火上房似的——一条新的包装产线,全部设备都到位了,就等着PLC程序通电调试。合同签的是”含现场调试7天”,但设备和机械安装已经拖了半个月,留给我写程序和调试的时间满打满算只有4天半。
按我往常的节奏,这种产线大概有1500步左右的S7-1200程序,写代码最快也得2天,剩下2天半在现场跑。但如果现场发现问题,改程序、下载、再试,一天就搭进去了。以前就吃过这种亏:程序在自己电脑上跑仿真一点问题没有,一到现场设备一动作,各种边界条件全冒出来了。
所以我寻思着,能不能在去现场之前,先用AI给程序做个全面”体检”?不是说让AI写程序,而是让AI模拟各种工况条件,自动跑一遍测试,把能发现的问题提前揪出来。
从手动测试到AI自动验证
以前我做程序测试就靠两招:第一,自己脑子跑一遍逻辑,写个测试用例表;第二,用西门子的PLCSIM仿真跑几个主要流程。但说实话,PLCSIM跑一次就得手动点来点去,一个case跑下来至少10分钟,几十个case你就别想了,根本没那个时间。
这回我试了个新路子。程序写完之后,我把整个项目的变量表和主要逻辑块说明整理成一个文档,然后丢给大模型,让它根据这些信息自动生成测试用例。具体做法是这么几步:
- 把PLC程序里的输入输出变量、中间变量、DB块结构导出来,整理成表格
- 把每个FC/FB的功能描述写清楚,比如”FC100是自动模式主流程”、”FB50是称重补偿算法”
- 让AI根据变量表和功能描述,设计测试用例覆盖正常流程、边界条件和异常情况
- 然后把测试用例转成PLCSIM能跑的脚本
你可能觉得这听起来玄乎。说实话我一开始也没底,但试完之后发现这东西真能干活。
AI给我找出了3个我自己都没发现的bug
第一个场景是自动模式的启动条件。我原来的逻辑是:启动按钮按下→检测所有气缸在原位→检测传感器正常→启动传送带。AI生成的测试用例里有一个是”1号气缸在原位信号丢失0.5秒后又恢复,设备应该怎么处理?”我一看,好问题!我程序里根本没考虑这个情况,气缸信号闪一下设备就直接停了,产线操作工得手动复位才能重新启动——这在高速产线上是不可接受的。
第二个bug更有意思。我有个称重工位,逻辑是重量稳定后延时0.5秒读取数值。AI的测试用例里有一组是”如果物料在称台上抖动,重量连续波动超过3秒,程序会怎么处理?”我看了半天,发现我那个”稳定判断”的逻辑有个漏洞——如果重量在设定阈值上下反复跳动,我的定时器会被反复重置,导致永远读不到数据。后来我加了个最大等待时间限制,超过5秒不管稳不稳定都强行读取。
第三个是报警处理方面的。AI给了一个场景:”传送带卡料导致电机过载,过载信号持续2秒后消失,程序应该如何记录和处理?”我原来的做法是过载信号一来就停机报警,信号消失后报警自动复位。但没有记录过载发生的次数和时间。后来加了事件记录功能,维修人员一查HMI就知道哪条传送带最近频繁过载,该保养了。
具体数据说事
这次项目下来,我统计了一下:AI生成了87个测试用例,花了大概40分钟(主要是手工调整脚本语法)。然后在PLCSIM上自动跑完所有用例用了大概1小时20分钟。总共耗时2小时,找出了3个逻辑漏洞和5个边界条件没考虑到的点。
以前我做类似项目,这些问题基本得到现场才能发现。去了现场发现问题→改程序→重新下载→验证,一个循环至少2个小时。如果在现场调试的时候连续发现3-4个这类问题,一整天就没了。客户那边产线等着投产,调试工程师急得满头汗,那感觉做过的都懂。
这次我去现场之前自测了一遍,程序下载到实际PLC之后,基本的自动流程一遍跑通,只有一些传感器位置微调和参数整定类的活,整个现场调试1天半搞定。客户很满意,我也省心不少。
绕过哪些坑
说实话,这条路子也不是一帆风顺。几个要注意的地方:
第一,AI对PLC具体指令的理解有偏差。比如S7-1200的TON和TP定时器,AI有时候弄混了保持型和非保持型的区别。生成的测试用例可能触发条件不对。所以我都是让AI生成测试思路和预期结果,具体脚本语法我手工改一下。
第二,AI容易”想当然”。比如它假设某些中间变量的初始值是什么状态,但实际项目里可能不是这样。所以我把完整的变量表和初始值都贴给了它,别让它猜。
第三,模拟量场景AI不太擅长。温度、压力这类连续变量的边界条件,AI生成的测试用例偏理想化。实际现场的模拟量信号有噪声有抖动,AI很难模拟这种随机性。这块我还是依赖实际现场调试。
说句大实话
我不是说AI能替代工程师的调试经验。差得远。但在项目工期紧、压力大的时候,AI作为一个”自动检查工具”确实能帮你兜底。它不会累,不会漏掉某个分支条件,还会从你根本没想到的角度去质疑你的逻辑。
我现在养成了个习惯:程序写完之后,第一遍自己检查,第二遍让AI”找茬”。两个脑子总比一个好使。
你们写PLC程序的时候,有没有遇到过自认为完美但一到现场就翻车的情况?欢迎评论区聊聊。