协议接入

SECS/GEM 联网:设备厂需要准备什么

半导体与面板 Fab 的招标文件里 SECS/GEM 几乎是硬门槛。这个协议本身不复杂,麻烦的是 GEM 规范要求的状态机、事件与变量体系必须完整,Fab 端联调时会逐条核。

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 层按客户的机型做出来并交付源码, 后续新机型复用同一套代码。合作方式与验收标准的写法见 上位机软件外包怎么切分。

常见问题

不是。SECS-II(SEMI E5)定义消息格式,HSMS(SEMI E37)定义 TCP 上的传输层,GEM(SEMI E30)定义设备必须实现哪些行为——包括通信状态机、控制状态机、事件上报、变量与报警的组织方式。只实现 SECS-II 报文收发不等于符合 GEM,Fab 端验收时看的是 GEM 一致性。
HSMS 是 TCP 长连接,建链后要先发 Select.req 完成选择,之后靠 Linktest 保活。四个超时参数 T3(应答超时)、T5(连接分离超时)、T6(控制事务超时)、T7(未选择超时)、T8(网络字符间超时)必须与 Fab 端约定一致,否则表现为链路频繁断开重连。主被动角色(Active/Passive)也要提前确认,一般设备侧做 Passive。
两处。一是控制状态机(Online/Offline、Local/Remote)的完整实现,Fab 端会通过 S1F17/S1F15 来切换并检查设备行为;二是 Collection Event 与变量的动态配置能力(S2F33/S2F35/S2F37),Fab 希望自己定义要哪些事件、每个事件带哪些变量,而不是设备硬编码。这两块漏了,联调阶段一定被打回。
看长期机型数量。买第三方栈(如商业 GEM 库)单机授权费明确,但每台设备都要付,机型多了总成本很高,而且授权条款可能限制转售给终端客户。自研的初期投入在协议栈与一致性测试上,之后每台设备零边际成本,并且可以把源码交付给设备厂做长期维护。敏洽的 secs_hsms 驱动属于后者,可按项目做定制并交付。

有具体设备清单或工件样品,可以直接给判断

提供设备型号、PLC 品牌与需要采集的数据项,或提供被检工件照片与精度要求,敏洽可先给出可行性判断与硬件前置条件,再谈软件工作量与报价。