4. SECS/GEM协议详解

SECS/GEM(SEMI Equipment Communications Standard / Generic Equipment Model)是半导体及电子制造业设备自动化的事实标准协议族。在 AMHS 系统中,天车(OHT)、Stocker、Loadport 等物料搬运设备与 MES 之间的所有指令交互、状态上报、报警传递,几乎都基于 SECS/GEM 协议栈完成。本章将深入剖析其分层架构、消息编码格式以及 SML 描述语言。

4.1 协议栈总体架构:SECS-I、SECS-II、HSMS

SECS/GEM 协议栈自底向上分为三层:物理传输层(SECS-I 或 HSMS)、消息层(SECS-II)和应用模型层(GEM)。在现代化 AMHS 集成中,HSMS 已全面取代 SECS-I 成为主流物理层。

关键概念: SECS-I 使用 RS-232 串口,速率低(最高 115.2 kbps);HSMS 使用 TCP/IP 网络,速率可达千兆,支持多会话并发,是 AMHS 系统对接的首选。
SECS/GEM 协议栈分层架构 GEM(Generic Equipment Model) 设备行为模型、状态机、事件报告、报警管理 SECS-II(SEMI E5) Stream & Function 消息格式、Item 数据编码 传输层:SECS-I(SEMI E4) / HSMS(SEMI E37) SECS-I:RS-232 串口 | HSMS:TCP/IP 网络 物理层:RS-232 / 以太网 AMHS 集成关注点 HSMS 为主,SECS-I 已淘汰

4.2 SECS-I(SEMI E4)与 HSMS(SEMI E37)对比

特性 SECS-I(E4) HSMS(E37)
物理介质 RS-232 串口(DB9/DB25) TCP/IP 以太网(RJ45)
最大速率 115.2 kbps 100 Mbps / 1 Gbps
连接方式 点对点(1 对 1) 点对点 / 多会话(1 对 N)
消息帧结构 Length + Block + CRC Message Header + Data
超时机制 T1/T2/T3/T4 T3/T4/T5/T6/T7/T8
AMHS 适用性 仅老旧设备(建议升级) 所有新项目标配
工程建议: 在 AMHS 系统招标和技术规范中,应明确要求设备端支持 HSMS 主动模式(Active Mode)或被动模式(Passive Mode),并约定端口号(默认 5000)和连接建立顺序。

4.3 SECS-II 消息格式:Stream & Function

SECS-II(SEMI E5)定义了设备与主机之间交换消息的格式。每条消息由 Stream(流) 和 Function(功能) 唯一标识,写作 S<nn>F<nn>。例如 S1F1 表示“Are You There”请求,S1F2 表示“On Line Data”响应。

4.3.1 Stream 分类

Stream 名称 典型用途
S1 Equipment Status 设备状态查询、通信建立
S2 Equipment Control 远程控制、参数设定
S3 Material Status 物料状态、载具信息
S4 Material Control 物料搬运指令、传送控制
S5 Exception / Alarm 报警、异常上报
S6 Data Collection 数据收集、Trace 数据
S7 Process Program 配方管理(AMHS 中较少用)
S9 System Error 协议错误报告

4.3.2 消息方向与 W-bit

SECS-II 消息分为 Primary Message(主消息) 和 Secondary Message(副消息)。主消息中的 W-bit(Wait bit) 决定是否需要对方回复:

  • W-bit = 1:主消息发送后,接收方必须回复对应的 Secondary 消息(如 S1F1 → S1F2)。
  • W-bit = 0:主消息为单向通知,不需要回复(如 S6F11 事件报告)。
SECS-II 消息交互示例(W-bit = 1) Host(MES) Equipment(OHT) S1F1 (W=1) Are You There S1F2 On Line Data W-bit = 1 时,主机发送 Primary 后必须等待 Secondary 回复 超时未收到回复则触发 T3 超时错误

4.4 SECS-II 数据项编码(Item 格式)

SECS-II 消息体由若干 Item(数据项) 组成。每个 Item 包含 长度字节、数据格式字节 和 数据内容。常见格式码如下:

格式码(十六进制) 类型 说明 AMHS 典型用途
0x00 List 列表容器,可嵌套 包裹多个参数
0x10 Binary 二进制字节数组 状态位图
0x20 Boolean 布尔值(00/01) 开关状态
0x40 ASCII 字符串 设备 ID、载具 ID、工单号
0x60 I8 / I1 / I2 / I4 / I8 有符号整数 坐标、速度、计数
0x80 F4 / F8 浮点数 位置偏移、重量

4.5 SML 语言基础

SML(SECS Message Language) 是描述 SECS-II 消息结构的文本化标记语言,广泛用于设备通信规范文档和测试工具(如 SEMI E5 标准附录、SECS 模拟器)。SML 使用缩进表示层级,关键字定义数据项。

4.5.1 SML 基本语法规则

  • 每条消息以 S<n>F<n> W 开头,W 表示 W-bit。
  • 数据项使用 <类型> [变量名] 值 格式。
  • L 表示 List,<A> 表示 ASCII 字符串,<I4> 表示 4 字节整数。
  • 注释以 /* ... */ 包裹。

4.5.2 SML 示例:S2F41 远程命令(AMHS 搬运指令)

S2F41 W
<L>
  <A> "MOVE_CMD"          /* 命令名称 */
  <L>
    <A> "CARRIER_ID"      /* 载具 ID */
    <A> "OHT-2024-001"
    <A> "SOURCE_PORT"     /* 源端口 */
    <A> "STK-01-LP-03"
    <A> "DEST_PORT"       /* 目标端口 */
    <A> "STK-05-LP-07"
    <A> "PRIORITY"        /* 优先级 */
    <I4> 1
  </L>
</L>
调试技巧: 使用 SML 格式编写测试消息时,务必注意缩进层级。List 嵌套错误会导致接收方解析失败,返回 S9F1(协议错误)。推荐使用支持括号匹配的编辑器(如 VS Code + SML 插件)。

4.6 GEM 模型与 AMHS 的关联

GEM(SEMI E30)定义了设备的行为模型,包括:

  • 状态模型(State Model):设备在 INIT、IDLE、SETUP、PROCESSING 等状态间转换。
  • 事件通知(Event Notification):设备主动上报状态变化(如载具到达、搬运完成)。
  • 报警管理(Alarm Management):设备上报 S5F1/S5F2 报警消息。
  • 远程命令(Remote Command):主机通过 S2F41 下发搬运指令。
AMHS 设备 GEM 状态模型简化图 INIT IDLE EXECUTING ALARM 通信建立 收到搬运指令 异常发生 报警清除 搬运完成
常见对接陷阱: 部分 AMHS 设备厂商在 GEM 实现中省略了 INIT 状态或未正确实现状态转换表,导致 MES 下发指令时设备处于错误状态,返回 S9F1 或 S2F42 拒绝码。调试时应先通过 S1F3(查询设备属性)确认设备支持的 GEM 版本和状态机。

4.7 本章小结

  • SECS/GEM 协议栈分为物理层(SECS-I/HSMS)、消息层(SECS-II)和应用模型层(GEM)。
  • HSMS 基于 TCP/IP,是 AMHS 系统对接的推荐物理层;SECS-I 仅用于老旧设备兼容。
  • SECS-II 消息由 Stream & Function 唯一标识,W-bit 控制是否需要回复。
  • 数据项编码支持 List、ASCII、整数、浮点数等类型,嵌套结构用于复杂参数传递。
  • SML 是描述 SECS-II 消息的文本语言,用于文档编写和测试工具。
  • GEM 模型定义了设备状态机、事件、报警和远程命令,是 MES 与 AMHS 设备交互的行为契约。