第2章:系统架构设计

好,咱们进入正题。系统架构设计,说白了就是给整个监控系统搭骨架。我做了这么多年半导体工厂自动化,见过太多「先写代码再想架构」的项目,最后都改得面目全非。所以这一章,咱们把骨架搭结实了。

2.1 分层架构:设备层、控制层、管理层

半导体工厂的实时监控系统,我习惯把它分成三层。为什么是三层?你想想看,设备、控制、管理,这三个层面的职责天然不同,硬揉在一起只会让系统变得又臭又硬。

设备层(Equipment Layer)

设备层就是最底层的那些物理设备——光刻机、刻蚀机、清洗机、测量设备……说白了,就是那些直接跟晶圆打交道的家伙。这一层的核心任务是:采集数据、执行指令

我在项目中遇到过一个问题:某台刻蚀机的传感器数据采集频率太高,导致上位机CPU直接跑满。后来我们做了个策略——设备层只做「轻量级采集」,不做任何数据处理。嗯,这个教训挺深刻的。

控制层(Control Layer)

控制层是承上启下的关键。它负责:

  • 接收设备层的数据,做初步清洗和缓存
  • 向下发送控制指令(比如调整工艺参数)
  • 向上提供标准化的数据接口

我个人习惯在控制层做两件事:一是数据校验(防止设备层传来脏数据),二是心跳检测(判断设备是否在线)。这两件事做好了,管理层才能安心干活。

管理层(Management Layer)

管理层就是咱们的监控界面、报表系统、报警中心。它不关心设备的具体协议,只关心数据有没有、准不准、快不快。说白了,管理层是给人看的,控制层是给机器用的。

核心原则:每一层只做自己的事,不要越界。设备层不要做数据清洗,管理层不要直接控制设备。这是血的教训换来的。

2.2 数据流与通信协议

数据怎么在三层之间流动?这就涉及到通信协议了。半导体行业有两个主流协议:SECS/GEM 和 OPC UA。我分别说说。

SECS/GEM:半导体行业的「普通话」

SECS/GEM 是半导体设备通信的事实标准。它定义了设备与主机之间的消息格式和交互流程。说白了,就是设备跟控制系统之间怎么「说话」。

我曾经踩过一个坑:某台设备的SECS消息里,时间戳用的是本地时间,而控制系统用的是UTC。结果数据对不上,排查了整整两天。所以我现在做项目,第一件事就是统一时间基准。

SECS/GEM 的核心概念:

  • HSMS:基于TCP/IP的通信协议,取代了老旧的RS-232
  • SML:SECS消息语言,定义了消息的结构
  • Collection Events:设备主动上报数据的事件机制

OPC UA:跨平台的「翻译官」

OPC UA 是工业4.0时代的明星协议。它比SECS/GEM更灵活,支持更丰富的数据模型。我建议在管理层和控制层之间使用OPC UA,因为它能很好地封装SECS/GEM的复杂性。

两种协议的对比:

特性 SECS/GEM OPC UA
应用场景 设备层与控制层 控制层与管理层
数据模型 扁平化 面向对象
安全性 较弱 强(支持加密)
实时性

我的建议:设备层用SECS/GEM,管理层用OPC UA。中间加一个协议转换网关,两边都舒服。

2.3 系统模块划分

一个完整的实时监控系统,我通常把它拆成这几个模块:

  1. 数据采集模块:负责跟设备层通信,采集原始数据
  2. 数据处理模块:数据清洗、格式转换、缓存管理
  3. 报警管理模块:阈值判断、报警分级、通知推送
  4. 可视化模块:实时看板、历史趋势、报表生成
  5. 配置管理模块:设备参数、报警规则、用户权限

每个模块之间通过消息队列解耦。我习惯用RabbitMQ或者Kafka,具体看数据量大小。小厂用RabbitMQ就够了,大厂嘛……你懂的,Kafka更稳。

2.4 架构总览图

下面这张图,是我自己画的系统架构总览。它把三层架构、通信协议、模块划分都串起来了。你仔细看看,应该能一目了然。

管理层 (Management Layer) 可视化看板 报警管理 报表系统 配置管理 控制层 (Control Layer) 数据采集与清洗 协议转换网关 心跳与状态管理 设备层 (Equipment Layer) 光刻机 刻蚀机 清洗机 测量设备 OPC UA SECS/GEM

注意:这张图只是逻辑架构。实际部署时,控制层和管理层可能跑在不同的服务器上,甚至跨机房。网络延迟和可靠性一定要提前测试。

2.5 避坑指南

最后,分享几个我踩过的坑:

  • 协议兼容性:不同厂家的设备,SECS/GEM实现细节可能不同。我曾经遇到过某台设备把「0」当作有效数据,另一台却当作空值。所以,设备接入前一定要做协议一致性测试。
  • 数据风暴:设备故障时,可能会疯狂上报数据。控制层一定要做限流和熔断,不然整个系统都会被拖垮。
  • 时间同步:所有设备、服务器必须使用NTP同步时间。否则数据对不上,排查起来想哭。

好了,架构设计就聊到这儿。下一章咱们会深入数据采集模块的实现细节,到时候再细聊。


公众号:蓝海资料掘金营,微信deep3321