SECS/GEM 是什么,用在哪些设备上
SECS/GEM 是 SEMI 组织定的一套设备联网标准,用在半导体前道与后道、面板、LED 与部分锂电设备上。 整套东西分三层:SECS-II(SEMI E5)定义消息与数据项格式, HSMS(SEMI E37)定义如何在 TCP 上传输这些消息, GEM(SEMI E30)规定设备必须具备哪些行为——通信状态机、控制状态机、 事件上报机制、状态变量与设备常量的组织方式、报警管理、远程命令、Spooling 等。
Fab 端与设备对接的软件一般叫 EAP(Equipment Automation Program)或 Host。
设备侧要做的是实现 GEM 规定的设备行为,Fab 端会按自己的一致性清单逐项验证。
敏洽 SCADA 数采软件的
secs_hsms 驱动实现 SECS-II over HSMS,可按项目扩展 GEM 层。
实际会遇到的几个坑
1. 只做了报文,没做 GEM 行为
最常见的误判是:把 SECS-II 报文的编解码做完就以为完成了。 实际上 Fab 端验收看的是 GEM 一致性——设备是否正确维护 通信状态机(Disabled / Enabled-Not Communicating / Communicating)与 控制状态机(Equipment Offline / Attempt Online / Host Offline / Online-Local / Online-Remote), 是否在状态迁移时上报对应事件,Host 发 S1F15(Request Offline)时设备是否真的进入 Offline 并拒绝远程命令。 这些行为逻辑的工作量比报文编解码大得多。
2. 事件与变量必须可由 Host 动态配置
GEM 要求设备支持 Host 动态定义报告:S2F33(Define Report)定义报告包含哪些变量,
S2F35(Link Event Report)把报告绑到事件上,S2F37(Enable/Disable Event)启用事件。
很多设备厂的第一版实现是把事件和变量硬编码在程序里,Fab 端一试就发现改不了,
只能返工。设计阶段就要把变量表(SVID/DVID/ECID)与事件表(CEID)做成配置化,
并且提供导出清单的功能——Fab 端会要这份清单来配自己的 EAP。
3. HSMS 超时参数不一致导致频繁断链
HSMS 的 T3/T5/T6/T7/T8 五个超时参数必须与 Fab 端一致。 典型症状是链路建起来后每隔几十秒断一次重连,日志里全是 Linktest 超时。 原因可能是 T6 设得太短、网络有跨网段延迟,或者设备侧处理某个请求太慢超过了 T3。 这些参数要做成界面可配,不要写死在代码里, 因为不同 Fab 的要求不一样,现场调整是常态。 另外主被动角色要提前确认,一般设备做 Passive(监听),Host 做 Active(发起)。
4. 报警号与报警文本的对应表要单独维护
GEM 的报警走 S5F1 上报,每个报警有 ALID 与文本。
设备侧的报警往往来自 PLC 或运动控制器,编号体系是自己定的,
需要在软件里维护一张内部报警号 → ALID的映射表。
这张表会被 Fab 端拿去配报警看板,一旦上线后再改编号会影响 Fab 的历史数据,
所以要在联调前定稿。同理,S5F3(Enable/Disable Alarm)要支持 Host 按 ALID 逐条启停。
5. Spooling 要不要做,先问 Fab
Spooling 是 GEM 里的可选功能:链路断开期间把要上报的消息缓存下来,恢复后补发。
实现它要考虑缓存容量、溢出策略、补发顺序与 Host 的 S6F23 请求处理,
工作量不小。有的 Fab 强制要求,有的不要。在报价之前必须问清楚,
否则这一项会成为预算外的工作量。同类的可选项还有 Process Program 管理(S7Fx)
与 Terminal Services(S10Fx)。
6. 联调窗口很紧
Fab 的联调通常安排在设备进厂后的固定窗口,时间很短,而且 EAP 工程师可能同时对好几台设备。 所以设备侧必须在出厂前用模拟 Host 完成自测, 把 GEM 一致性清单自己跑一遍。敏洽的做法是配套提供一个 Host 模拟端, 可以在设备厂内部把建链、状态机切换、事件上报、报警、远程命令全部走通, 现场只处理网络与变量口径问题。
接入方式与准备清单
| 项目 | 要求与说明 |
|---|---|
| 传输层 | HSMS over TCP;设备侧一般作 Passive 端监听,端口与 Device ID 由 Fab 分配 |
| 超时参数 | T3/T5/T6/T7/T8 需界面可配,联调前与 Fab 端核对一致 |
| 变量表 | SVID / DVID / ECID 清单需配置化并可导出,交付给 Fab 配 EAP |
| 事件表 | CEID 清单及每个事件的默认变量组合;须支持 S2F33/35/37 动态配置 |
| 报警表 | 内部报警号与 ALID 的映射表,联调前定稿 |
| 可选功能 | Spooling、Process Program、Terminal Services 是否需要,报价前向 Fab 确认 |
| 出厂自测 | 用 Host 模拟端跑完 GEM 一致性清单,避免现场窗口内返工 |
硬件上不需要特殊设备,一根网线接到 Fab 的设备网段即可。真正的准备工作全在软件与文档: 变量表、事件表、报警映射表这三份清单是交付物的核心, 也是投标阶段就可以先出草案给 Fab 看的东西。
自研还是买第三方栈
| 维度 | 买商业 GEM 库 | 自研 / 定制开发 |
|---|---|---|
| 初期投入 | 低,买来就能用 | 高,协议栈与一致性测试要时间 |
| 单台成本 | 每台设备付授权费,机型多了总成本高 | 零边际成本 |
| 转售条款 | 可能限制随设备转售给终端客户 | 无限制,可白标交付 |
| 定制能力 | 受库的封装限制,特殊要求难改 | 可按 Fab 的特殊要求调整 |
| 长期维护 | 依赖供应商,版本升级受制于人 | 源码可交付给设备厂自行维护 |
判断标准很直接:如果未来三年内只做一两台设备,买库更划算; 如果这是要批量卖的机型,自研的总成本更低。 敏洽承接的是后者——把 GEM 层按客户的机型做出来并交付源码, 后续新机型复用同一套代码。合作方式与验收标准的写法见 上位机软件外包怎么切分。
常见问题
有具体设备清单或工件样品,可以直接给判断
提供设备型号、PLC 品牌与需要采集的数据项,或提供被检工件照片与精度要求,敏洽可先给出可行性判断与硬件前置条件,再谈软件工作量与报价。