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 支持更高的通信速率和更灵活的网络拓扑。
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 表示“设备在线状态”应答。
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 等),用于承载搬运任务、状态数据等业务信息。