SEMI GEM200 到底是什么:剥开 E30/E5/E4/E37 四件套,看清 200mm 厂通信的地基
摘要:很多人把“GEM200”当成“低配 GEM300”,这是误解。GEM200 不是某个单标准,而是 SEMI 给 200mm (及光伏、封装、LED)产线划的通信基线剖面——以 E30(GEM)为行为核心,E5(SECS-Ⅱ)为消息语法,E4(SECS-Ⅰ串口)或E37(HSMS以太网)为传输层。它不强制 E87/E90/E40/E94,但把“设备能连、能报状态、能收 Remote Command”这件事钉死了。本文拆开 GEM200 的四件套,讲清它管什么、不管什么、和 GEM300 的精确边界在哪。
一、先正名:GEM200 不是一个标准,是一个“剖面”
SEMI 官方没有叫《SEMI E200》的文件。“GEM200”是行业俗称,指:
在 200mm 及以下产线中,以 E30 GEM为基础,配合E5 SECS-Ⅱ、E4 或 E37传输层,构成的最小可用 SECS/GEM 通信集。
对应关系:
| 层 | 标准 | 在 GEM200 里的角色 |
|---|---|---|
| 行为/状态机 | E30(GEM) | 控制状态机(Offline / Online / Remote)、Event / Alarm、Recipe 管理、Data Collection 的最小子集 |
| 消息语法 | E5(SECS-Ⅱ) | S1F1 / S1F13 / S2F41 / S5F1 / S6F11 / S7F1 等消息格式定义 |
| 串口传输 | E4(SECS-Ⅰ) | RS-232 / RS-485,9600bps,半双工,Block+Checksum |
| 以太网传输 | E37(HSMS) | TCP/IP 封装 SECS-Ⅱ,全双工,LinkTest 心跳 |
GEM300 是在这套地基上,再叠加 E39 / E40 / E87 / E90 / E94 / E116 / E148 等扩展。所以 GEM200 ⊂ GEM300 的通信地基,但不包含上层对象管理。
二、E30:GEM200 的“大脑”
E30 定义了设备必须实现的最小行为集,200mm 厂哪怕再老,只要说“支持 GEM”,至少得有这些:
2.1 控制状态机(Control State Model)
只有三层,比 300mm 简单得多:
OFFLINE:通信未建立或已断,主机不能控ONLINE LOCAL:通信通了,但控制权在操作员手里(HMI)ONLINE REMOTE:主机通过 S1F17 拿到控制权,可发 RCMD
没有 E87 的 LoadPort 状态,也没有 E40 的 PRState——设备商自己用内部变量补。
2.2 必须支持的 Stream / Function(GEM200 最小子集)
| 消息 | 用途 |
|---|---|
| S1F1 / S1F2 | 请求在线 / 响应 |
| S1F13 / S1F14 | Are You There / 通信参数确认 |
| S1F17 / S1F18 | 请求 Remote / 同意 |
| S1F3 / S1F4 | 读 SV (Status Variable) |
| S2F29 | 读常量枚举(消息集、EC、SVID列表) |
| S2F37 | 事件使能开关 |
| S5F1 | 读 Alarm 列表 |
| S6F11 | 事件上报 (设备自定义 CEID) |
| S7F1 / S7F3 | 选 Recipe / 读 Recipe 体 |
| S2F41 | Remote Command (START / STOP/LOAD/RECIPE_SELECT) |
2.3 不强制但常见的
- Spooling(断网缓存):E30 提了,但 200mm 老设备 90% 没做
- Limit Monitor (S2F49):很少实现
- Trace Data (S6F1 / S6F2):部分新一点设备有
三、E5:消息长得什么样
SECS-Ⅱ 定义所有 SxFy 的二进制结构。GEM200 里你最常拼的是:
S6F11 事件上报
<L>
<CEID>1001</CEID>
<RPT>
<SVID>200</SVID> ← 当前 Lot ID(ASCII)
<SVID>201</SVID> ← 当前 Recipe Name(ASCII)
<SVID>202</SVID> ← 设备状态(U1)
</RPT>
</L>
关键点:E5 只管“语法”,不管“语义”。CEID=1001 在 A 厂是 RunComplete,B 厂是 DoorOpen——这就是 200mm 厂 EAP 必须做“事件字典映射层”的根本原因。
四、E4 vs E37:传输层的两套世界
4.1 E4(SECS-Ⅰ)——200mm 老厂的体温
- 物理:RS-232,DB9,有时 RS-485 多-drop
- 速率:9600 / 19200bps,7E1 或 8N1
- 帧结构:ENQ → 10 字节 Header Block → 数据 Block(每块 128 字节含 Checksum)→ EOT
- 半双工:Host 发完一整条消息,等设备回 ACK/NAK,才能发下一条
- 无 LinkTest:断线不主动通知
4.2 E37(HSMS)——200mm 改造后的逃生舱
- TCP 5000 端口,Session ID 区分设备
- 全双工,消息分块用 4 字节长度头
- 有 LinkTest(S1F1 周期发),断连能感知
- 很多 200mm 厂做法是:设备端仍是 E4,加一个串口转 HSMS 网关,EAP 侧统一走 HSMS 连网关。
⚠️ 注意:HSMS 只是传输层换了,E30/E5 的消息内容不变。所以"设备支持 HSMS"≠"设备支持 GEM300",它可能只是把 SECS-I 的报文套了 TCP 外壳。
五、GEM200 明确“不管”什么(和 GEM300 的边界)
这是最容易混的地方,直接列表:
| 能力 | GEM200 | GEM300 |
|---|---|---|
| Carrier/FOUP 管理 | 不管(无 E87) | E87 LoadPort 状态机 |
| 单片晶圆追踪 | 不管 (无 E90) | E90 SubstHistory |
| Process Job 生命周期 | 不管 (只有 S2F41) | E40 15+状态 |
| 多 Job 排产 | 不管 | E94 Control Job |
| 时间同步精度声明 | 不管 | E148 TS-Clock |
| 对象服务 | 不管 | E39 Object Services |
| 设备性能追踪 | 不管 | E116 |
结论:GEM200 解决“设备和 Host 能说话”;GEM300 解决“设备和 Host 能一起把晶圆管到单片级”。
六、200mm 厂 GEM200的典型实现形态
国内 200mm 功率/MMEM/BCD 线,常见三种:
-
纯 E4 + E30 老设备
- AMAT 老刻蚀、TEL 老涂胶、国产老扩散
- 串口直连工控机,EAP 用 C++/C# 写串口轮询
- 事件靠 S6F11 自定义 CEID,Lot 级追踪
-
E4 设备 + 串口转 HSMS 网关
- 网关品牌:Cimetrix、Agileo、金南瓜、自研
- EAP 用 secsgem / Python 连 HSMS,内部仍按 Lot 级建模
- 好处:WireShark 能抓,断线有感知
-
新 200mm 设备原生 HSMS + 部分 E87
- 部分国产新机、MEMS 专用机
- 厂商宣称“支持 GEM200 / GEM300 混合”,但实际 E90 只做到 Cassette 级
- EAP 要写兼容层:对老设备走 Lot 模型,对新设备走伪 E90
七、EAP 工程师在 GEM200 里真正要写的“补丁”
因为标准不管,以下全得 EAP 自己补:
- 虚拟 LoadPort 状态:监听 HMI 的 Load / Unload 按钮 PLC 地址,自己维护状态表
- Lot 级 SubstHistory:Lot 下发时生成 25 个虚拟 SubstrateID,Robot 信号触发时打内部事件
- Cassette ID 对账:HMI 输的 ID vs MES 下发的 ID,不一致卡死
- 事件字典:每台设备导一份 CEID→含义 的 YAML,EAP 启动时加载
- 串口超时重试:SECS-Ⅰ 块错重传、T3 配到 10s以上
- 时间裁判:用 EAP 服务器时间打所有事件,设备时间只做展示
这些补丁层,就是上篇《200 Fab 的 EAP 为什么这么难做》里说的“EAP 替设备补标准”。
八、总结
GEM200 的价值,是被低估的:
- 它让 1998 年的老机台,今天还能被 MES 叫起来跑 Lot;
- 它定义了"SECS/GEM 通信基线",没有它,200mm 厂连 Remote Command 都统一不了;
- 它的边界也清晰——只管到"设备和 Host 能对话",不管"晶圆去哪了"。
做 300mm 的工程师懂 E87/E90 是本职;做 200mm 的工程师懂 GEM200 四件套(E30/E5/E4/E37),才懂为什么上层要补那么多补丁——因为你见过地基原本只打了多深。
你们厂的设备是原生 HSMS 还是串口转网关?GEM200 里最让你头疼的是 CEID 不统一,还是 SECS-I 半双工撞车?评论区聊。

5502

被折叠的 条评论
为什么被折叠?



