3、SECS/GEM标准体系:SEMI标准家族、SECS-I、SECS-II、HSMS、GEM的核心作用与关系

半导体设备通信协议的学习,最困难的部分往往不是某一条报文怎么写,而是面对SEMI标准家族中纷繁复杂的术语——SECS-I、SECS-II、HSMS、GEM——感到彼此纠缠、边界模糊。许多工程师在阅读设备手册或编写通信模块时,常混淆“传输层”与“消息层”的职责,或将GEM(Generic Equipment Model,通用设备模型)误认为一种独立的通信协议。实际上,SECS/GEM是一套分层协作的标准体系:底层解决“字节如何物理传输”,中层解决“消息如何结构化表达”,顶层解决“设备行为如何标准化”。本章将逐一拆解SEMI标准家族中每个成员的核心作用,并厘清它们之间的依赖关系与协作边界。

SECS/GEM 标准体系分层协作关系图 GEM (E30/E37/E39/E87/E90/E94/E116) 设备行为标准化:状态模型、报警、配方、远程命令、SPC、物料跟踪 依赖 SECS-II 消息语义,定义“何时发送什么消息” SECS-II (E5) — 消息层 / 会话层 消息格式与编码规则:SML、Item格式、数据项字典、消息分类(Primary/Secondary) 不关心字节如何传输,只定义“消息长什么样、如何解析” SECS-I (E4) — 串行传输 RS-232/RS-422,半双工,波特率9600~38400 块传输、校验和、超时重试、物理层+数据链路层 HSMS (E37) — 以太网传输 TCP/IP,全双工,高速消息帧(Header+Data) 主动建立连接、心跳保活、消息ID管理 RS-232 / RS-422 串口线 DB9/DB25,屏蔽双绞线 以太网 RJ45 / 光纤 Cat5e/Cat6,TCP端口5000/5001 SEMI 标准家族:E4(SECS-I) · E5(SECS-II) · E30(GEM) · E37(HSMS) · E39(EES) · E87(Material) · E90(Trace) 各标准独立发布,但实际部署时按“传输层→消息层→行为层”依赖关系组合使用

上图展示了SECS/GEM标准体系的纵向分层关系。从下往上看,物理介质(串口或以太网)承载传输层协议(SECS-I或HSMS),传输层之上是消息层SECS-II,最顶层是设备行为标准GEM。这种分层设计使得底层传输技术的更替(从串口到以太网)不会影响上层消息语义的稳定性,而GEM的引入则让不同厂商的设备在行为层面具备互操作性。下面逐一深入剖析每个标准的核心机制。

3.1 SEMI标准家族全景:从E4到E116

SEMI(Semiconductor Equipment and Materials International,国际半导体设备与材料协会)发布的标准编号体系覆盖了设备通信、物料管理、工厂集成等方方面面。与SECS/GEM直接相关的核心标准包括:E4(SECS-I)、E5(SECS-II)、E30(GEM)、E37(HSMS)。此外,E39(Equipment E-Standard,设备安全标准)、E87(Material Movement Management,物料搬运管理)、E90(Trace Management,追踪管理)、E94(Control Job Management,控制任务管理)、E116(Equipment Performance Tracking,设备性能追踪)等标准在GEM框架下扩展了设备行为模型。

这些标准并非彼此孤立,而是存在明确的依赖关系。E4和E37解决“字节如何传输”,E5解决“消息如何编码”,E30则定义了设备在正常生产、维护、报警等场景下应遵循的状态转换和消息交互规则。E87/E90/E94等标准则是在GEM基础模型之上,针对物料追踪、数据采集、任务调度等特定场景的补充规范。

标准编号标准名称核心作用典型应用场景
E4SECS-I串行传输层协议,定义物理层和数据链路层老式设备RS-232通信,波特率9600
E5SECS-II消息层协议,定义消息格式、数据项编码所有SECS/GEM设备的消息解析
E30GEM设备行为标准,定义状态模型、报警、远程命令设备与主机之间的标准化交互
E37HSMS以太网传输层协议,替代SECS-I的高速通信现代设备TCP/IP通信,端口5000/5001
E39EES设备安全标准,定义安全事件上报设备安全联锁、紧急停机状态上报
E87MMM物料搬运管理,定义载具、批次追踪晶圆盒(FOUP)在设备间的流转追踪
E90Trace追踪管理,定义设备内部信号采样与上报设备工艺参数(温度、压力)实时追踪
E94CJM控制任务管理,定义多配方协同执行复杂工艺步骤的调度与监控
核心原理:SEMI标准家族采用“分层+扩展”的设计哲学。E4/E37解决传输,E5解决消息表达,E30解决行为规范,E87/E90等解决特定领域扩展。这种分层设计使得设备厂商可以根据自身需求选择实现哪些标准,同时保证与主机系统的基本互操作性。例如,一台老式扩散炉可能只实现E4+E5+E30,而一台先进的光刻机则可能同时实现E37+E5+E30+E87+E90+E94。

3.2 SECS-I:串行传输的基石

SECS-I(SEMI E4)是SECS/GEM体系中最底层的传输协议,设计于1980年代,基于RS-232或RS-422串行通信。它的核心职责是:将SECS-II消息拆分为多个数据块(Block),通过串口逐块发送,并确保接收方正确重组。SECS-I定义了严格的帧格式、校验机制和超时重试逻辑。

SECS-I的帧结构包含:块头(Block Header)和数据区(Data Area)。块头长度为10字节,包含设备ID(Device ID)、块号(Block Number)、消息ID(Message ID)、消息类型(Primary/Secondary)等信息。数据区最大长度为244字节,因此一条较长的SECS-II消息需要拆分为多个块传输。每个块发送后,接收方必须回复一个ACK(确认字符)或NAK(否定确认),发送方根据回复决定继续发送或重试。

SECS-I 块结构示例(十六进制):
设备ID: 0x0001 (2字节)
块号:   0x0001 (2字节)  
消息ID: 0x0001 (2字节)
类型:   0x00 (Primary) (1字节)
保留:   0x00 (1字节)
长度:   0x000A (2字节)  -- 数据区长度10字节
数据区: 0x01 0x02 0x03 ... (最多244字节)

SECS-I的传输速率通常为9600波特率,实际有效吞吐量约1KB/s。这在处理简单报警或状态上报时足够,但对于大量数据采集(如Trace数据)则显得力不从心。此外,SECS-I采用半双工通信,同一时刻只能一方发送,另一方接收,这进一步限制了通信效率。

常见误区:许多工程师误以为SECS-I只是“串口传数据”,忽略了其复杂的块管理机制。实际上,SECS-I的块号管理、消息重组、超时重试逻辑是保证数据完整性的关键。在调试串口通信时,如果发现消息乱序或丢失,应首先检查块号是否连续、ACK/NAK回复是否及时,而不是盲目调整波特率。

3.3 SECS-II:消息层的结构化表达

SECS-II(SEMI E5)定义了设备与主机之间交换消息的格式和语义。它不关心消息如何传输(由SECS-I或HSMS负责),只关心消息“长什么样”以及“如何解析”。SECS-II消息由消息头(Message Header)和消息体(Message Body)组成。消息头包含标准字节(Stream/Function)、消息类型(Primary/Secondary)、设备ID等;消息体则采用SML(SECS Message Language)格式,由一系列数据项(Item)组成。

SECS-II的核心概念包括:

  • Stream/Function(S/F):每条消息通过S/F编号唯一标识。例如,S1F1是“Are You There”请求,S1F2是“On Line Data”回复,S6F11是“Event Report”事件上报。Stream表示消息类别(如S1是设备状态、S5是报警、S6是数据上报),Function表示具体操作。
  • 数据项(Item):消息体由多个Item组成,每个Item包含数据类型(如ASCII、Binary、U4、I8等)、长度和数据值。Item可以嵌套,形成复杂的数据结构。
  • Primary/Secondary消息:Primary消息是主动请求,Secondary消息是对Primary的回复。例如,主机发送S1F1(Primary),设备回复S1F2(Secondary)。
S1F1 消息示例(SML格式):
S1F1 W
<DeviceID> 0x0001
<Model> "SECS-GEM Simulator"
<SoftRev> "1.0.0"

SECS-II的消息编码规则非常严格,每个字节都有明确含义。解析器必须严格按照标准读取消息头、遍历Item树、处理数据类型转换。在实际工程中,建议使用成熟的SECS-II解析库(如SEMI标准提供的参考代码或商业库),避免手写解析器带来的兼容性问题。

经验提醒:在开发SECS-II消息处理模块时,务必实现完整的消息超时机制。主机发送Primary消息后,必须在规定时间内(通常5秒)收到Secondary回复,否则应触发超时重试或报警。同时,设备端应记录所有收发消息的日志,便于问题追溯。

3.4 HSMS:以太网时代的高速传输

HSMS(High-Speed Message Service,高速消息服务,SEMI E37)是SECS-I的以太网替代方案,设计于1990年代中期,以满足半导体工厂对更高通信速率和更灵活网络拓扑的需求。HSMS基于TCP/IP协议,采用全双工通信,支持多个并发连接,传输速率可达100Mbps以上。

HSMS的核心机制包括:

  • 连接管理:HSMS定义了主动建立连接(Active)和被动接受连接(Passive)两种模式。设备通常作为Active端主动连接主机,主机作为Passive端监听端口(默认5000或5001)。连接建立后,双方通过心跳消息(Heartbeat)维持连接状态。
  • 消息帧格式:HSMS消息帧包含10字节的消息头(与SECS-I块头类似)和可变长度的数据区。消息头中的Session ID用于区分不同会话,Message ID用于匹配Primary和Secondary消息。
  • 流量控制:HSMS支持消息级流量控制,发送方可以同时发送多条消息而不必等待回复,接收方通过TCP的滑动窗口机制进行流量控制。
特性SECS-I (E4)HSMS (E37)
物理介质RS-232/RS-422串口以太网(RJ45/光纤)
通信模式半双工全双工
典型速率9600 bps10/100/1000 Mbps
连接方式点对点点对点/多点
消息确认块级ACK/NAKTCP层确认
适用场景老式设备、低速通信现代设备、大数据量传输
判断方法:选择SECS-I还是HSMS,主要取决于设备硬件能力和工厂网络基础设施。如果设备仅有串口且通信数据量小(如简单的报警上报),SECS-I足够;如果设备需要传输大量工艺数据(如Trace数据、配方文件),或工厂已全面部署以太网,应优先选择HSMS。现代新设备建议直接支持HSMS,同时保留SECS-I作为兼容模式。

3.5 GEM:设备行为的标准化框架

GEM(Generic Equipment Model,通用设备模型,SEMI E30)是SECS/GEM体系中最具业务价值的标准。它不定义新的传输协议或消息格式,而是规定设备在特定场景下应如何行为——即“何时发送什么消息”。GEM的核心内容包括:

  • 设备状态模型:定义了设备从初始化、待机、运行、暂停、报警到停止的完整状态转换路径。每个状态对应一组允许的消息交互。
  • 报警管理:设备检测到异常时,通过S5F1(Alarm Report)消息上报报警,主机可通过S5F2(Alarm Report Acknowledge)确认。报警分为Fatal(致命)和Non-Fatal(非致命)两类。
  • 配方管理:主机可通过S7F1(Process Program Load)下载配方到设备,设备执行后通过S7F5(Process Program Request)上报配方列表。
  • 远程命令:主机通过S2F41(Host Command)发送远程命令(如Start、Stop、Pause),设备执行后返回S2F42(Host Command Acknowledge)。
  • 事件上报:设备在特定事件发生时(如批次完成、报警触发),通过S6F11(Event Report)主动上报数据。
  • 数据采集:支持S2F23/S2F24(Trace Initialize/Data)实现周期性数据采集,以及S6F1/S6F2(Data Report)实现事件触发的数据上报。

GEM还定义了设备与主机之间的通信状态模型,包括:Disabled(禁用)、Enabled(启用)、Online(在线)、Offline(离线)等状态。设备必须支持主机通过S1F13(Establish Communication)建立通信,通过S1F15(Request Offline)切换离线模式。

常见误区:许多设备厂商在实现GEM时,只实现了消息收发,却忽略了状态模型的一致性。例如,设备在报警状态下仍接受远程命令,或主机在设备离线时仍发送配方下载请求。这会导致通信混乱。正确的做法是:严格按照GEM状态模型实现状态转换逻辑,并在每个状态入口检查允许的消息类型。

3.6 案例拆解:从SECS-I升级到HSMS的实战过程

某半导体设备厂商的旧款刻蚀机原本使用SECS-I(RS-232)与工厂主机通信,波特率9600,仅支持基本的报警上报和状态查询。随着工厂产能提升,主机需要实时采集设备的工艺参数(如腔体温度、气体流量),数据量从原来的每秒几十字节增加到每秒数百字节。SECS-I的带宽成为瓶颈,且串口通信距离受限(最长15米),无法满足设备重新布局的需求。

初始现象与目标:设备通信频繁超时,Trace数据采集周期无法缩短到1秒以内。目标是将通信升级为HSMS,同时保持上层SECS-II消息语义不变,并确保GEM行为模型不受影响。

关键输入数据:

  • 原SECS-I配置:波特率9600,8数据位,1停止位,无校验,块超时200ms
  • Trace数据量:每周期约500字节,目标周期1秒
  • 设备硬件:主控板预留以太网接口,支持TCP/IP

分析判断过程:首先确认设备主控板是否支持HSMS协议栈。由于主控板运行Linux系统,可选用开源SECS/GEM库(如secs4java或自研C++库)。其次,评估HSMS消息帧格式与SECS-I的差异——HSMS消息头长度相同(10字节),但数据区长度不再限制为244字节,因此Trace数据可以封装在单条消息中,无需分块。

实际操作步骤:

  1. 在设备主控板上实现HSMS协议栈,配置TCP端口5001,作为Active端连接主机。
  2. 将原有SECS-II消息处理模块复用,仅替换传输层接口——将SECS-I的块收发逻辑替换为HSMS的消息帧收发逻辑。
  3. 在GEM配置中增加Trace数据采集项,设置采样周期为1秒,通过S2F23初始化Trace。
  4. 进行联调测试:验证S1F13通信建立、S6F11事件上报、S2F41远程命令等核心流程。
  5. 对比升级前后数据:Trace数据上报周期从5秒缩短至1秒,通信超时率从2%降至0.1%。

结果对比与风险:升级后通信速率提升约100倍,但初期遇到一个问题:主机端防火墙未开放TCP 5001端口,导致连接失败。解决方法是协调IT部门开放端口,并配置设备IP白名单。此外,HSMS的心跳机制需要定期发送心跳消息(默认每10秒),若主机未响应,设备应主动断开连接并重连。

复盘经验:传输层升级的关键在于“隔离变化”——保持SECS-II消息语义和GEM行为模型不变,仅替换传输层实现。这样既降低了回归测试风险,又保留了未来继续升级(如从HSMS到SECS-II over TLS)的可能性。

3.7 常见误区与总结复盘

在SECS/GEM标准体系的学习和工程实践中,以下误区最为常见:

  • 混淆SECS-I与SECS-II:SECS-I是传输层,SECS-II是消息层。调试时若发现消息解析错误,应先确认传输层是否完整接收了所有块,再检查消息层编码。
  • 忽视GEM状态模型:GEM不仅是“一组消息”,更是一套状态机。设备必须在正确的状态下响应正确的消息,否则会导致主机端逻辑混乱。
  • 认为HSMS只是“以太网版的SECS-I”:HSMS在连接管理、流量控制、消息帧格式上与SECS-I有本质差异,不能简单替换。
  • 忽略SEMI标准版本兼容性:SEMI标准会定期修订(如E30从1992年发布至今多次更新),不同版本的消息定义可能存在差异。设备与主机必须协商使用相同版本的标准。
总结复盘:SECS/GEM标准体系的核心价值在于“分层解耦”——传输层(SECS-I/HSMS)负责可靠传输,消息层(SECS-II)负责结构化表达,行为层(GEM)负责业务语义。工程师在设计和调试时,应始终从这三个层面分别思考问题,避免跨层混淆。对于新项目,建议直接采用HSMS+SECS-II+GEM的组合,并预留E87/E90等扩展标准的接口。