第四章:数据采集与边缘计算
传感器与数据采集协议、边缘网关部署、数据清洗与预处理
各位工程师,大家好。今天我们来聊聊晶圆厂里最“接地气”的一层——数据采集与边缘计算。说实话,很多搞IT架构的朋友,一上来就谈大数据、谈AI,但我要泼一盆冷水:如果底层数据都采不准、传不上来,后面的一切都是空中楼阁。我在产线上摸爬滚打这些年,见过太多“数据好看、实际没用”的案例了。
4.1 传感器与数据采集协议:晶圆厂的“神经末梢”
晶圆厂里传感器种类多到什么程度?温度、压力、流量、振动、颗粒度、光学信号……几乎每个工艺腔体都有几十个传感器。但传感器只是“眼睛”,真正让数据流动起来的,是协议。
4.1.1 SECS/GEM:半导体行业的“普通话”
SECS/GEM,说白了就是半导体设备之间、设备与主机之间通信的“标准语言”。我个人习惯把它分成两层:
- SECS-I / HSMS:负责传输,类似TCP/IP的底层管道。早期用RS-232,现在基本都用HSMS(高速以太网)。
- SECS-II:定义消息格式,比如“设备状态”、“报警”、“配方参数”这些数据怎么打包。
- GEM:在SECS-II之上,定义了设备的行为模型。比如设备什么时候该上报数据、怎么处理异常。
嗯,这里要注意:很多工程师以为只要设备支持SECS/GEM,就能直接采数据。其实没那么简单。我在项目中遇到过一台老款刻蚀机,虽然支持SECS,但厂商把很多自定义参数藏在了私有SVID(状态变量ID)里,文档还不全。最后我们只能抓包分析,一个个试出来的。
避坑指南:我曾经因为设备厂商的SECS/GEM实现不标准,导致数据采集断断续续。后来我们强制要求所有新设备必须通过SEMI E5/E30一致性测试,才允许接入。
4.1.2 OPC UA:打通IT与OT的“桥梁”
OPC UA(统一架构)是另一个重要协议。它不像SECS/GEM那样专为半导体设计,但胜在跨平台、安全性好、支持信息模型。我建议这样用:
- 对于老旧设备(比如PLC、温控器),用OPC DA(经典版)采集,再通过OPC UA网关转换。
- 对于新设备,直接支持OPC UA,省去中间转换的麻烦。
- OPC UA的“信息模型”可以自定义,比如把“腔体温度”这个变量,关联上它的单位、上下限、历史趋势——这比SECS/GEM的纯数值要丰富得多。
你想想看,一个晶圆厂里,既有SECS/GEM设备,又有OPC UA设备,还有Modbus RTU的老仪表。怎么统一?这就是边缘网关要干的事。
4.2 边缘网关部署:数据汇聚的“第一站”
边缘网关,说白了就是放在产线旁边的“小服务器”。它不负责海量存储,也不做复杂分析,核心任务就三个:采集、转换、上传。
4.2.1 网关选型要点
| 维度 | 推荐配置 | 我的经验 |
|---|---|---|
| CPU | ARM Cortex-A72 或 x86 四核以上 | 别用太弱的,否则协议解析会卡顿 |
| 内存 | ≥4GB | 8GB更稳妥,尤其要跑容器化应用时 |
| 存储 | 32GB eMMC + 可扩展SD卡 | 本地缓存至少能存24小时数据 |
| 接口 | 至少2个千兆网口,1个RS-232/485 | 网口最好支持PoE供电,方便部署 |
| 协议支持 | SECS/GEM、OPC UA、Modbus、MQTT | 最好选软件可扩展的,别买死硬件 |
4.2.2 部署架构:集中式 vs 分布式
我个人更倾向于分布式部署。为什么?因为晶圆厂面积大,设备分散。如果所有数据都拉到中央机房再处理,网络延迟和带宽都是问题。我的做法是:
- 每个工艺区域(比如光刻区、刻蚀区)放一台边缘网关。
- 网关负责采集该区域所有设备的数据,做初步清洗。
- 然后通过MQTT或Kafka,把干净数据上传到工业互联网平台。
- 网关本地保留最近7天的原始数据,用于故障回溯。
小技巧:我曾经在部署时,给每个网关配了一个4G备份链路。万一主网络断了,数据还能通过4G上传,虽然慢点,但至少不丢数据。
4.3 数据清洗与预处理:把“脏数据”变成“干净数据”
数据采上来了,但能用吗?不一定。晶圆厂的数据有多脏?我举几个例子:
- 传感器偶尔会跳变,比如温度瞬间从25°C跳到150°C又回来——这明显是干扰。
- 设备停机时,数据还在上报,但全是无效值。
- 不同设备的时间戳不同步,有的用UTC,有的用本地时间。
所以,数据清洗是必须的。我一般分三步走:
4.3.1 第一步:格式统一
把所有数据转成统一格式。比如时间戳统一为Unix毫秒时间戳,数值统一为浮点数,状态码统一为枚举值。
// 示例:原始数据
{
"device_id": "ETCH_01",
"timestamp": "2025-03-20T14:30:00+08:00",
"temp": "25.3",
"pressure": "101.2"
}
// 清洗后
{
"device_id": "ETCH_01",
"ts": 1742464200000,
"temp": 25.3,
"pressure": 101.2
}
4.3.2 第二步:异常值过滤
用简单的统计方法,比如3σ原则,或者固定阈值。我在项目中常用的是“滑动窗口均值滤波”:
- 取最近5个点的平均值。
- 如果当前值偏离平均值超过3倍标准差,就标记为异常,用平均值替换。
- 连续3个异常点,则触发告警——可能是传感器坏了。
4.3.3 第三步:数据补全与对齐
不同设备的上报频率不一样。有的每秒上报,有的每分钟上报。我们需要把数据对齐到统一的时间网格。我习惯用“线性插值”来补全缺失点。
警告:千万别在边缘网关里做太复杂的清洗,比如机器学习模型。边缘网关的算力有限,而且一旦模型出问题,会影响实时数据流。复杂清洗请放到平台侧做。
4.4 知识体系总览
下面这张图,是我自己总结的本章知识体系。你可以把它当作一个“地图”,方便以后回顾。
好了,这一章的内容就到这里。数据采集和边缘计算,说白了就是打好地基。地基不稳,楼盖得再高也是危楼。希望各位在实际项目中,能多花点心思在这层上——相信我,后面你会感谢自己的。
最后一句经验之谈:我曾经在一个项目里,花了60%的时间在数据清洗上,真正做分析只用了20%。但正是那60%的投入,保证了后面所有模型都能稳定运行。别嫌脏活累活,这是工业互联网的“基本功”。