我的天,每个月月底做报表的日子又要来了。
“小王,今天下班前把上个月的产量报表交上来。”
这话一出口,我就知道今晚又得加班了。做PLC的兄弟都懂,写程序调设备是一回事,月底做报表是另一回事。你得从PLC里一条条翻数据,导到Excel里,再做透视表、画图表、调格式。一个报表没个两三个小时搞不定。
上个月我实在受不了了,花了三天用AI搭了个自动化报表系统。现在每个月初,报表自己生成,直接发到厂长邮箱。花了三天,以后每个月省两三个小时。这笔账怎么算都划算。
痛点在哪
我在一个汽车零部件厂做设备维护,车间里有二十几台西门子S7-1200,每台PLC里都存着产量、节拍、故障时间这些数据。
以前的做法是:
- 拎着笔记本下车间,用TIA Portal连上每台PLC
- 从DB块里把数据导出来
- 回办公室一条条复制到Excel
- 做数据透视表求和、算OEE
- 画柱状图、折线图
- 调格式、调字体、调颜色
- 打印出来签字
一个月一次,一次小半天。碰到产量异常还要回头查原始数据,更费时间。
这里插一句:其实很多厂家的数据都这么存的。三菱的D寄存器、西门子的DB块、欧姆龙的CIO区,里面存着大量有价值的数据。问题是没人去用。
我是怎么干的
思路很简单:PLC的数据通过OPC UA或者Modbus TCP读到上位机,然后用Python脚本自动处理,最后甩给AI帮忙生成报表内容。
第一步:数据采集
我在工控机上装了个Kepware OPC Server,把所有S7-1200连上来。每台PLC设定了一个数据块,里面的产量、废品数、运行时间这些参数,Kepware每10秒读一次,写到SQLite数据库里。
这一步其实不复杂。Kepware连西门子PLC,驱动是现成的,配一下IP地址和DB块地址就行。唯一要注意的是数据类型要对上——DInt就是DInt,Real就是Real,配错了读出来是乱码。
第二步:数据汇总
月底最后一天,用Python脚本跑一下。这段代码其实一开始我不会写,我跟AI说帮我写个Python脚本,从一个SQLite数据库里按月汇总每台设备的产量,几分钟就出来了。
第三步:AI生成报表
数据准备好了,但光有数字不行,得有分析。我直接把汇总数据丢给AI,告诉它:
我是一家汽车零部件厂的设备工程师。这是6月份20台设备的产量数据。请帮我写一份月报,内容包括:各设备产量排名、相比前一个月的增减情况、故障率最高的3台设备分析、下个月重点关注建议。语气要像我写给厂长看的,不要太学术,要落地。
AI几分钟就生成了一份,我改了几个数据就用了。
踩过的坑
说几个真实遇到的坑,兄弟们少走弯路:
坑1:时间戳对不上
PLC里的时钟不准。我的S7-1200没做NTP同步,跑了一个月后时间差了好几分钟。最终数据汇总出来,跨天的产量算到了前一天。解决办法:在Python脚本里加了个校准逻辑,以服务器时间为准。
坑2:数据类型搞错
Kepware里配地址的时候,一个DB块的REAL类型配成了DWORD。读出来的数据全是一堆天文数字。查了半天才发现是类型不匹配。
坑3:数据库文件太大
一开始没设数据清理,一个月下来SQLite文件跑到了2个多G。后来加了个定时任务,只保留最近3个月的原始数据,超过的自动归档压缩。
效果
第一个月用上这套系统的时候,厂长收到邮件还问我:这个报表谁做的?
我说电脑自己做的。
他愣了两秒,说:这个好,以后就这样。
现在不光产量报表,设备故障分析、OEE趋势图、能耗统计,全都自动化了。我每个月花在报表上的时间从3-4小时降到了10分钟——就是看一下AI生成的初稿,改几个措辞,点发送。
技术栈小结
如果你也想搞一套,最低配置:
– 一台工控机(不用太好,赛扬处理器都够)
– OPC Server(Kepware要钱,但免费替代方案有open62541)
– Python + Pandas(免费,处理Excel数据的标配)
– AI接口(OpenAI、DeepSeek、智谱都行)
全部弄下来,硬件投入不到两千块钱。
一点感想
很多搞PLC的兄弟觉得AI离自己很远。其实不是。报表自动化是AI最接地气的用法,没有之一。它不需要你懂深度学习、不需要你部署什么高大上的模型,只需要你把数据准备好,让AI帮你处理剩下的。
更重要的是——你把这个系统搭好之后,每个月底你的同事还在加班做表的时候,你已经下班了。这种感觉,懂得都懂。
你们车间的报表是怎么做的?还在手动拉Excel吗?欢迎在评论区交流。