SECS/GEM HSMS(半导体 / 显示)
SECS/GEM 是半导体 / 显示 fab 中设备(tool)与主机(MES / EAP)之间的标准通信。消息由 SECS-II 定义,在以太网上通过 HSMS(High-Speed SECS Message Services)TCP/IP 进行传输。
网关的 SECS/GEM 驱动在 HSMS Select 握手 + 后台 Linktest + 异步回复匹配 + SECS-II item 编解码器(L / A / B / U1U8 / I1I8 / F4 / F8) 之上提供读取(S<n>F<m>)/ 写入(S2F41 host command,HCACK 校验)功能。
如果还需要设备特定的 GEM 序列——S1F13/F14 建立连接、S6 事件报告、S5 报警、控制状态模型、spool——请联系开发团队。
注册表单输入值
| 输入项 | 填写内容 | 示例 |
|---|---|---|
| IP 地址 | 设备(tool)的 HSMS IP | 192.168.0.140 |
| 端口 | HSMS 端口 | 5000(常用) |
| Device ID | SECS 设备 ID | 0(常用) |
| Mode | passive / active | active(网关作为连接方) |
| T3 / T5 / T6 / T7 / T8 | HSMS 超时时间(ms) | 建议使用默认值 |
按照 SECS/GEM 标准,推荐主机(MES / 网关)以 passive 模式监听,由 tool 发起连接;但在实际现场环境中,网关以 active 模式发起连接的配置更为常见。请根据 tool 侧的设置进行调整。
标签的 PLC 地址表示
在网关中,SECS-II 消息以 S<n>F<m> 格式输入。n=stream,m=function。
| 表示 | 含义 |
|---|---|
S1F1 | Are You There — 通信存活 ping |
S1F3 | Selected Equipment Status Request |
S1F11 | Status Variable Namelist Request |
S2F13 | Equipment Constant Request |
S2F41 | Host Command Send(写入 — 启动/停止等) |
S5F1 | Alarm Report |
S6F11 | Event Report Send |
读取消息(S1F3、S1F11 等)的响应即作为值。
从响应中提取特定值
如果响应是 SECS-II list 形式,可以通过 S1F4[0]、S1F4[2].[1] 等索引进行提取。
| 表示 | 含义 |
|---|---|
S1F4[0] | S1F4 响应 list 的第 0 个 |
S6F12[1].[3] | S6F12 嵌套 list 的 [1][3] |
数据类型匹配
与 SECS-II 的 item code 对应。
| SECS-II 类型 | 含义 | 数据类型 | 格式补充 |
|---|---|---|---|
| L | List(递归) | (通过索引展开使用) | — |
| A | ASCII | String | (空) |
| B | Binary | String | (空) |
| BOOLEAN | Boolean | Boolean | (空) |
| U1/U2/U4 | 无符号 1/2/4 字节 | Integer | UI/UDW |
| U8 | 无符号 8 字节 | Long | (空) |
| I1/I2/I4 | 有符号 1/2/4 字节 | Integer | (空)/DW |
| F4 | 浮点数 32 位 | Float | REAL |
| F8 | 浮点数 64 位 | Double | LREAL |
写入(Write)支持
可以通过 S2F41(Host Command Send)向设备下达命令。
| 表示 | 含义 |
|---|---|
S2F41 | Host Command Send(RCMD = "START" / "STOP" / "PP-SELECT" 等) |
S2F49 | Enhanced Remote Command |
值以 命令名称(RCMD)+ 参数 list 的形式发送。详细格式请参考设备手册中的 SEMI 标准规范。
S2F41 的 START / STOP 会触发 实际设备操作。在运营中的 fab 使用前,务必与 EAP / MES 团队协商。
常见问题与解决方法
| 症状 | 可能原因 | 解决方法 |
|---|---|---|
| "Select.rsp not received" | active/passive 不匹配 | 检查 tool 侧 GEM 设置 |
| "Linktest timeout" | 防火墙 | 如果增大 T6(linktest)仍无效,请检查网络 |
| "Communication not established (S1F13)" | 部分设备要求先进行 S1F13/F14 建立连接序列 | 在设备 GEM 设置中启用自动建立选项,或通过 S1F1 / S1F3 等进行原始通信 |
| 响应解码失败 | 嵌套 list 深度错误 | 以原始响应接收,用 SECS-II 解码器单独解析 |
常用 SECS 消息详解
S1F1 / S1F2 — Are You There(ping)
| 消息 | 方向 | 含义 |
|---|---|---|
| S1F1 | host → tool | "还活着吗?" — 空消息 |
| S1F2 | tool → host | "MDLN, SOFTREV" 响应(设备型号 + 固件版本) |
S1F3 / S1F4 — Selected Equipment Status Request(读取 SVID)
S1F3 的消息体是 SVID 列表。响应 S1F4 是相同顺序的值列表。
| 表示 | 含义 |
|---|---|
S1F3(body=L,1.<U4 100>) | 读取 SVID 100(如 CassetteCount 等) |
S1F4[0] | 响应 list 的第 0 个(= SVID 100 的值) |
S2F41 — Host Command Send(写入 — 设备操作)
| RCMD | 含义 |
|---|---|
START | 开始加工 |
STOP | 停止加工 |
ABORT | 立即中止 |
PP-SELECT | 选择工艺程序(CPNAME=PPID,CPVAL=程序名) |
PAUSE / RESUME | 暂停 / 恢复 |
S6F11 / S6F12 — Event Report Send(按 CEID 分组)
当设备自行触发事件时,推送给主机。按 CEID(Collection Event ID)分组传入。
| 字段 | 含义 |
|---|---|
| DATAID | 事件序列号 |
| CEID | Collection Event ID(例如:21=ProcessStarted) |
| RPTID list | 按报告 ID 嵌套的数据 |
PlantPulse 直接接收原始响应,因此可以以 S6F11[0]、S6F11[1] 的形式索引提取,然后通过计算公式进行后处理。
S5F1 / S5F2 — Alarm Report
| 字段 | 含义 |
|---|---|
| ALCD | Alarm Code(1 字节:bit7=set/clear,bit0~6=category) |
| ALID | Alarm ID |
| ALTX | Alert 文本(人类可读消息) |
常用操作模式
模式 1. fab tool 健康监控(ping + 状态)
| 标签名称 | 地址 | 格式 | 备注 |
|---|---|---|---|
| Ping | S1F1 | (响应有无) | 采集周期 30s |
| 型号 | S1F4[0] | String | (S1F3 SVID=MDLN) |
| 加工状态 | S1F4[1] | Integer | (S1F3 SVID=ControlState) |
模式 2. 结果数据采集(S6F11)
在设备 GEM 设置中启用 "EventReport on PROCESSEND" → 通过 S6F11 推送。PlantPulse 以 active 模式连接后采集原始响应 → 在后处理管道中使用 SECS-II 解码器(例如:secsgem-py)进行解析。
模式 3. Pset / Recipe 切换(S2F41)
S2F41 RCMD="PP-SELECT" CPNAME="PPID" CPVAL="RECIPE_AB100"
在实际 fab 中,S2F41 会触发设备操作。务必与 EAP / MES 团队协商,并且仅在设备空闲状态下使用。
下一步
- 参考 SEMI E5 (SECS-II) / E37 (HSMS) / E30 (GEM) 标准文档。
- 如果需要全面的 GEM 集成(事件报告、控制状态、Recipe),请联系开发团队。
- 参考高级 — REST API 中的 SECS/GEM 示例。