AMHS物料搬运系统与MES接口数据交互调试实践 - 第4节

4.1 SECS/GEM 协议概述与在 AMHS 中的定位

SECS/GEM(SEMI Equipment Communications Standard / Generic Equipment Model)是半导体制造领域设备与上位机(如 MES、EAP)之间进行数据通信的事实标准协议族。在 AMHS(自动物料搬运系统)中,OHT、AGV、Stocker 等搬运设备通过 SECS/GEM 与 MES 交互搬运任务、状态报告、报警信息。

核心价值:SECS/GEM 提供了设备无关的标准化接口,使得不同厂商的 AMHS 设备能够以统一的数据格式与 MES 集成,降低系统集成成本。

4.2 协议栈结构:SECS-I、HSMS、SECS-II

SECS/GEM 协议栈分为三个层次,从物理传输到消息语义逐层封装:

协议层 名称 传输方式 主要职责
物理/链路层 SECS-I RS-232 串口 字节流传输、块传输、校验
网络/传输层 HSMS TCP/IP 连接管理、消息分帧、可靠传输
消息/语义层 SECS-II 基于 HSMS/SECS-I 定义消息格式、Stream/Function、数据项
实际部署建议:现代 AMHS 系统几乎全部采用 HSMS(TCP/IP)替代 SECS-I(串口),因为 HSMS 支持更高的通信速率和更灵活的网络拓扑。
SECS/GEM 协议栈分层架构 SECS-II(消息语义层) 定义 Stream / Function / 数据项格式 HSMS(网络/传输层) TCP/IP 连接管理、消息分帧、可靠传输 SECS-I(物理/链路层) RS-232 串口、块传输、校验(已逐步淘汰) 上层 下层 主流 方案

4.3 Message 类型:Primary 与 Secondary

SECS/GEM 通信采用请求-应答模式,每条消息分为两种类型:

  • Primary Message(主消息):由发起方(通常是 Host 或 Equipment)主动发送的请求消息。例如 MES 向 Stocker 发送“搬运任务请求”。
  • Secondary Message(副消息):由接收方返回的应答消息,用于确认或携带结果数据。例如 Stocker 返回“任务接受”或“任务拒绝”。
特性 Primary Message Secondary Message
发起方向 Host → Equipment 或 Equipment → Host 接收方 → 发起方
W-Bit 通常置 1(需要应答) 置 0(无需再应答)
典型场景 下发搬运指令、查询状态 确认收到、返回数据
调试陷阱:如果 Primary 消息的 W-Bit 未正确置 1,设备可能不会返回 Secondary 应答,导致 Host 超时。在 AMHS 调试中,务必检查 W-Bit 设置。

4.4 Stream 与 Function 概念

SECS-II 使用 Stream 和 Function 两个维度来唯一标识一条消息的语义:

  • Stream(流):消息的大类编号,范围 0~127。例如 Stream 1 用于设备控制与状态,Stream 6 用于数据收集。
  • Function(功能):消息的具体功能编号,范围 0~255。例如 Function 1 通常表示“请求”,Function 2 表示“数据返回”。

消息格式表示为 S<Stream>F<Function>,例如 S1F1 表示“Are You There”请求,S1F2 表示“设备在线状态”应答。

Stream / Function 消息标识示例 S1F1 Are You There Primary(请求) S1F2 设备在线状态 Secondary(应答) Stream 1:设备控制 Function 1/2:状态查询 AMHS 常用 S1/S2/S6

4.5 AMHS 常用 Stream/Function 速查表

在 AMHS 与 MES 的接口调试中,以下 Stream/Function 组合最为常见:

Stream Function 消息名称 AMHS 典型用途
S1 F1 / F2 Are You There / 在线状态 设备心跳检测、通信握手
S1 F13 / F14 设备常量请求/应答 读取 Stocker 配置参数
S2 F41 / F42 Host 命令下发/应答 MES 下发搬运任务(Move Command)
S6 F11 / F12 事件报告请求/数据 设备上报搬运完成、报警事件
S7 F3 / F4 设备属性请求/应答 查询 OHT 小车位置、状态
调试要点:在 AMHS 集成测试中,建议先从 S1F1/S1F2 握手开始验证通信链路,再逐步测试 S2F41 搬运指令和 S6F11 事件上报。

4.6 数据项格式与编码示例

SECS-II 消息体由 数据项(Data Item) 组成,常见数据类型包括:

  • ASCII:字符串,如设备 ID、搬运任务号
  • U1/U2/U4:无符号整数(1/2/4 字节)
  • I1/I2/I4:有符号整数
  • F4/F8:浮点数
  • BOOLEAN:布尔值
  • LIST:嵌套结构,用于组合多个数据项

以下是一个 S2F41(Host 命令下发)消息的编码示例:

# S2F41 消息体示例(伪代码)
Message: S2F41
W-Bit: 1
Body:
  LIST
    ASCII  "MOVE_CMD"        # 命令名称
    LIST
      ASCII  "CARRIER_ID"    # 载具ID
      ASCII  "CR-001234"
      ASCII  "SOURCE"        # 源位置
      ASCII  "STK-03-PORT-05"
      ASCII  "DEST"          # 目标位置
      ASCII  "EQPT-07-LOAD-02"
    U4    100                # 优先级
编码规范:实际 SECS-II 消息使用二进制编码(Header + Body),但调试工具(如 SECS Monitor)通常以文本形式展示。理解 LIST 嵌套结构对解析复杂消息至关重要。

4.7 本章小结

  • SECS/GEM 协议栈分为 SECS-I(串口)、HSMS(TCP/IP)、SECS-II(消息语义)三层。
  • 消息类型分为 Primary(请求)和 Secondary(应答),通过 W-Bit 控制应答需求。
  • Stream 和 Function 唯一标识消息语义,AMHS 常用 S1、S2、S6、S7 等 Stream。
  • 数据项支持多种类型(ASCII、整数、LIST 等),用于承载搬运任务、状态数据等业务信息。