数据采集系统:MES系统介绍、数据采集点规划、数据清洗与预处理、数据存储架构
各位工程师,大家好。今天我们来聊聊模组生产良率提升里最基础、也最容易被忽视的一环——数据采集系统。
说实话,我见过太多项目,算法模型建得漂漂亮亮,结果一上线就崩。为什么?数据源头就脏了、乱了、不全了。你想想看,垃圾数据进,垃圾分析出,良率怎么提?
所以,这一章我重点讲四个部分:MES系统、数据采集点规划、数据清洗与预处理、数据存储架构。这些都是我这些年踩坑踩出来的经验,希望能帮大家少走弯路。
1. MES系统介绍
MES,制造执行系统。说白了,它就是工厂的“大脑”和“神经”。ERP管的是财务和计划,MES管的是车间里每一片晶圆、每一个模组的实时状态。
我个人习惯把MES理解为三个层次:
- 数据采集层:从设备、传感器、操作员终端自动或手动收集数据。
- 过程控制层:根据工艺规范,实时监控生产参数,异常时自动报警或暂停。
- 分析追溯层:记录批次、设备、人员、时间等全链路信息,支持SPC和良率分析。
我在项目中遇到过一件事:某条产线良率突然掉了5个点,大家查了三天没头绪。后来我调出MES里的设备参数日志,发现某台贴片机的吸嘴压力在某个时间段波动了0.2N。就这0.2N,导致了大量虚焊。如果没有MES的精细记录,这种问题根本无从查起。
核心观点:MES不是用来“看”的,是用来“查”和“控”的。数据采集的颗粒度,直接决定了良率分析的深度。
2. 数据采集点规划
数据不是越多越好。你采集了一万个参数,90%是冗余的,反而增加了存储和清洗的负担。那怎么规划?我建议遵循“三问法”:
- 这个参数是否直接影响良率?(比如贴片压力、回流焊温度)
- 这个参数是否用于追溯?(比如批次号、设备ID)
- 这个参数是否用于过程控制?(比如SPC的上下限)
如果三个问题答案都是“否”,那这个采集点就可以砍掉。
嗯,这里要注意:采集频率也很关键。我见过有人把温度传感器设成每秒采集一次,结果一个月下来数据量爆炸,分析时根本用不上。我个人习惯是:
- 关键工艺参数:每秒或每事件采集(如压力、温度、速度)
- 状态参数:每批次或每周期采集(如设备状态、报警代码)
- 追溯参数:每片或每批次采集(如序列号、操作员ID)
避坑指南:我曾经在一个项目中,为了“全面”采集,把设备所有寄存器都读了一遍。结果数据量太大,数据库直接撑爆了。后来我们重新规划,只保留与良率强相关的20%参数,效果反而更好。记住:精准采集,比海量采集更重要。
3. 数据清洗与预处理
数据采集上来,直接扔进模型?不行。原始数据里什么妖魔鬼怪都有:空值、异常值、重复值、时间戳错乱……
我一般把清洗流程分为三步:
- 去重与去噪:删除完全重复的记录,过滤掉明显超出物理极限的噪声(比如温度-999℃)。
- 缺失值处理:对于连续参数,我习惯用前后均值填充;对于离散参数,用众数或标记为“未知”。
- 时间对齐:不同设备、不同传感器的采样频率可能不同,需要统一时间基准。我常用线性插值法。
举个例子,下面是一段简单的Python清洗代码,处理温度传感器的缺失值:
import pandas as pd
import numpy as np
# 读取原始数据
df = pd.read_csv('temp_sensor.csv')
# 删除重复行
df = df.drop_duplicates()
# 过滤异常值(温度范围0-300℃)
df = df[(df['temperature'] >= 0) & (df['temperature'] <= 300)]
# 缺失值用前后均值填充
df['temperature'] = df['temperature'].interpolate(method='linear')
# 时间戳对齐到秒级
df['timestamp'] = pd.to_datetime(df['timestamp']).dt.round('1s')
print(f"清洗后数据量: {len(df)} 条")
为什么用线性插值?因为温度变化通常是连续的,前后均值比固定值更合理。当然,如果缺失太多(超过20%),我建议直接丢弃该批次数据,否则会引入偏差。
警告:千万不要在清洗阶段“美化”数据。我曾经见过有人为了拟合模型,手动修改异常值,结果模型在产线上完全失效。清洗的目的是还原真实,不是制造假象。
4. 数据存储架构
数据存哪里?怎么存?这决定了后续分析的效率。我推荐分层存储架构:
- 热存储层:存放最近7天的原始数据,使用时序数据库(如InfluxDB)或Redis。特点是读写快,用于实时监控和SPC。
- 温存储层:存放1-3个月的数据,使用关系型数据库(如PostgreSQL)或列式存储(如ClickHouse)。用于日常良率分析和报表。
- 冷存储层:存放3个月以上的历史数据,使用对象存储(如MinIO)或HDFS。用于长期趋势分析和模型训练。
为什么这么分?因为实时监控需要毫秒级响应,而历史分析可以容忍秒级延迟。把热数据和冷数据混在一起,查询性能会急剧下降。
下面是一个简单的存储架构示意图:
你看,这个架构很清晰。数据从设备采集后,先进入热存储层做实时处理;7天后自动归档到温存储层;3个月后再压缩到冷存储层。这样既保证了实时性,又控制了存储成本。
我的建议:不要一开始就追求“完美”架构。先跑起来,用最简单的方案(比如一台PostgreSQL服务器)撑住前三个月。等数据量上来了,再逐步迁移到分层架构。迭代比一步到位更靠谱。
好了,关于数据采集系统,我就讲这么多。MES是骨架,采集点是血肉,清洗是净化,存储是仓库。四者缺一不可。希望各位在实际项目中,能把这些基础打牢。良率提升,从数据开始。