4、数据采集:利用PLC信号和MES系统自动采集节拍数据
做节拍提升,第一步是什么?
不是改设备,不是调参数。是先把真实数据拿到手。
我见过太多工厂,工程师拿着秒表在产线边上蹲一天,记下来的数据跟实际差一大截。为什么?人眼反应有延迟,而且工人看到你在计时,动作都会变快——这叫“霍桑效应”。
所以我的习惯是:能自动采集,绝不人工测量。
4.1 为什么必须搞自动数据采集?
说白了,人工采集有三个硬伤:
- 精度不够:秒表精度0.1秒,PLC信号采集精度可以到毫秒级
- 样本量小:人工一天测50个循环就算多了,系统可以24小时全量采集
- 无法追溯:记在本子上的数据,过两周就不知道当时发生了什么异常
我在一个汽车零部件项目里遇到过这种情况。客户说节拍是45秒,我让MES拉了一个月的数据,实际平均节拍是52秒。为什么差了7秒?因为人工只测了正常生产时段,而换刀、清屑、等待物料这些时间全被“优化”掉了。
核心观点:没有自动数据采集,节拍改善就是“盲人摸象”。你改的可能是假问题,验证的可能是假效果。
4.2 数据采集的两条路径
实际项目中,我主要用两种方式采集节拍数据。你根据自己工厂的自动化水平选就行。
路径一:PLC信号直接采集
这是最可靠的方式。PLC里本来就有每个工位的动作信号——气缸到位、电机启停、传感器触发。我们只需要把这些信号的时间戳抓出来。
具体怎么做?
- 确定关键信号:比如“工件到位传感器”的上升沿和下降沿
- 在PLC程序里加一段计时逻辑:记录每次信号变化的时间
- 通过OPC UA或Modbus TCP把数据传给上位机
举个简单例子,在西门子S7-1200里,我习惯这样写:
// 节拍计时功能块
// 当工件到位传感器(I0.0)上升沿时,记录当前时间
// 当工件离开传感器(I0.0)下降沿时,计算节拍
IF "Sensor_Workpiece" AND NOT "Last_Sensor_State" THEN
// 上升沿:开始计时
"Start_Time" := T_CONV(IN := T_PLC_MS());
ELSIF NOT "Sensor_Workpiece" AND "Last_Sensor_State" THEN
// 下降沿:结束计时,计算节拍
"Cycle_Time_MS" := T_CONV(IN := T_PLC_MS()) - "Start_Time";
// 把节拍数据写入DB块,供上位机读取
"DB_Data".Cycle_Time := "Cycle_Time_MS";
END_IF;
"Last_Sensor_State" := "Sensor_Workpiece";
我的经验:PLC采集的原始数据不要做任何滤波或平均。把毫秒级的原始值全部上传,让MES或数据分析系统去处理。为什么?因为异常值里往往藏着问题——比如某次节拍突然变成200秒,那可能是设备故障的前兆。
路径二:MES系统自动采集
如果工厂已经有MES,那就更简单了。MES本身就在记录每个工单的开工时间、完工时间、数量。通过这些数据,我们可以算出“宏观节拍”。
MES采集节拍的逻辑:
- 单件节拍 = (完工时间 - 开工时间) / 生产数量
- 线体节拍 = 最后一个工件下线时间 - 第一个工件下线时间,再除以总数量
- OEE节拍 = 计划运行时间内的实际产出 / 计划运行时间
我建议把这两种方式结合起来用:
| 采集方式 | 精度 | 覆盖范围 | 主要用途 |
|---|---|---|---|
| PLC信号 | 毫秒级 | 单个工位 | 微观分析、瓶颈识别 |
| MES系统 | 秒级 | 整线/整车间 | 宏观监控、产能核算 |
| 两者结合 | 全量 | 全范围 | 从微观到宏观的完整视图 |
4.3 数据采集的架构设计
嗯,这里要画一张图,帮你理清数据怎么从设备流到分析系统。
这张图我用了很多年。核心思路就是:数据从设备出来,经过边缘处理,进入平台存储,最后变成可用的信息。每一层都有它的职责,别想着一步到位。
4.4 避坑指南:数据采集的常见问题
做了这么多年自动化,我在数据采集上踩过的坑,说出来都是泪。分享几个最典型的:
我曾经犯过的错:
- 时间不同步:PLC用的是PLC时间,MES用的是服务器时间,两个时间差了几秒钟。结果节拍数据对不上,分析了一周才发现是时间戳的问题。解决方案:所有设备统一用NTP对时,精度到毫秒。
- 信号抖动:传感器在工件边缘来回触发,导致PLC记录了一个0.1秒的“节拍”。后来我在程序里加了20ms的去抖滤波,才把假数据过滤掉。
- 数据量太大:一个工位每秒采集1000个点,10个工位一天就是8.6亿条数据。数据库直接崩了。后来改成“变化采集”——只有信号变化时才记录,数据量降到原来的1%。
4.5 数据采集后的第一件事:验证数据质量
数据采上来了,别急着分析。先问自己三个问题:
- 数据完整吗?——有没有漏采的时段?比如夜班或者周末
- 数据准确吗?——拿秒表抽测10个循环,跟系统数据对比,误差在5%以内才算合格
- 数据一致吗?——PLC的“节拍”和MES的“节拍”是不是同一个定义?
我的习惯:数据采集系统上线后,先跑一周的“观察期”。这一周不做任何改善,只验证数据质量。等数据可靠了,再开始分析瓶颈、制定改善方案。你想想看,如果数据本身是错的,后面的分析再漂亮也是白搭。
好了,数据采集这块就聊到这儿。记住一句话:自动采集是节拍改善的基石,没有数据,一切都是空谈。
本章要点回顾:
- 自动数据采集比人工测量更准、更全、更可追溯
- PLC信号采集适合微观分析,MES系统采集适合宏观监控
- 数据采集架构分四层:设备层→边缘层→平台层→应用层
- 时间同步、信号去抖、数据量控制是三个常见坑
- 数据质量验证是分析前的必要步骤