4、S1F1与S1F2消息:Are You There请求与响应、设备ID与状态报告

4.1 消息概述:通信的“心跳”与“握手”

S1F1(Are You There, R)与 S1F2(Are You There, D)是 SECS/GEM 协议中最基础、最核心的一对握手消息。它们用于验证主机(Host)与设备(Equipment)之间的通信链路是否正常,以及设备是否处于可响应状态。任何一次完整的会话建立或通信恢复,几乎都以 S1F1/S1F2 交换作为起点。

工程经验:在联调现场,如果主机无法收到 S1F2 响应,通常意味着物理链路(串口/TCP)、IP 端口或设备应用层未就绪。S1F1 超时是排查通信故障的第一检查点。

4.2 消息结构详解

4.2.1 S1F1:Are You There 请求(Primary Message)

S1F1 由主机(Host)主动发起,询问设备是否在线。其消息结构极为简单,通常只包含一个空的 L(List)或一个 B(Boolean)数据项,但在标准实现中,S1F1 的 Stream 1, Function 1 固定为 W(Wait Bit = 1),表示需要设备回复。

字段 说明 示例值
Stream 消息流编号 1
Function 消息功能编号 1
W Bit 是否需要回复(1=需要) 1
Data Item 通常为空 List 或 Boolean True <L></L>

4.2.2 S1F2:Are You There 响应(Secondary Message)

设备收到 S1F1 后,必须回复 S1F2。S1F2 不仅确认“在线”,还携带了设备的 MDLN(Model Number) 和 SOFTREV(Software Revision) 两个关键状态参数,用于主机识别设备型号与固件版本。

字段 说明 示例值
Stream 消息流编号 1
Function 消息功能编号 2
MDLN 设备型号(ASCII 字符串,最长 20 字节) ETCH-3000
SOFTREV 软件版本(ASCII 字符串,最长 20 字节) V2.1.3

4.3 设备 ID(Device ID)在消息中的作用

在 SECS/GEM 协议中,Device ID 是每条消息头部的固定字段,用于标识消息的目标设备。对于 S1F1/S1F2 消息,Device ID 的取值决定了消息的寻址范围:

  • Device ID = 0:广播或默认设备,通常用于单设备连接场景。
  • Device ID > 0:多设备共享同一物理链路时,用于区分不同设备。
关键点:在日志解析中,Device ID 是过滤消息归属的第一维度。如果日志中出现多个 Device ID 的 S1F1/S1F2 交错,说明链路上存在多设备复用,解析时必须按 Device ID 分组。

4.4 状态报告:MDLN 与 SOFTREV 的工程意义

S1F2 返回的 MDLN 和 SOFTREV 不仅仅是标识信息,更是设备状态管理的基础:

参数 工程用途 典型场景
MDLN 设备型号识别、备件管理、配方兼容性检查 主机根据 MDLN 加载对应的设备驱动
SOFTREV 固件版本验证、升级判断、功能集确认 主机检测到 SOFTREV 过低时触发升级流程

4.5 消息交互流程与状态机

下图展示了 S1F1/S1F2 在设备状态机中的典型交互流程,以及 Device ID 的传递路径:

S1F1/S1F2 交互流程与状态机 主机 (Host) 设备 (Equipment) 设备内部状态机 NOT COMMUNICATING COMMUNICATING ONLINE S1F1 (Are You There?) Device ID = 0 S1F2 (MDLN + SOFTREV) 收到 S1F1 回复 S1F2 说明:S1F1 触发设备从 NOT COMMUNICATING → COMMUNICATING,S1F2 回复后进入 ONLINE 状态 Device ID 在消息头部固定,用于多设备链路寻址

4.6 日志解析实战:S1F1/S1F2 报文示例

以下是一段真实的 SECS-II 日志片段,展示了 S1F1 请求与 S1F2 响应的原始报文格式:

# 主机发送 S1F1 (Are You There Request)
S1F1 W
<L></L>
.
# 设备回复 S1F2 (Are You There Response)
S1F2
<L>
  <A>ETCH-3000</A>   <!-- MDLN -->
  <A>V2.1.3</A>      <!-- SOFTREV -->
</L>
.
常见陷阱:部分老旧设备在 S1F2 中可能返回空字符串或非法字符作为 MDLN/SOFTREV。解析时务必做长度校验和 ASCII 范围检查,避免下游系统因非法字符串崩溃。

4.7 工程案例:联调中的 S1F1 超时处理

在某次 300mm 晶圆设备的联调中,主机连续发送 3 次 S1F1 均未收到 S1F2 响应。日志分析发现:

  • 物理层 TCP 连接正常(三次握手成功)。
  • 设备端 SECS 驱动未启动,导致消息队列阻塞。
  • 主机侧超时时间设置为 10 秒,3 次重试后标记设备为“离线”。

解决方案:在设备端增加 SECS 驱动启动后的 “就绪通知” 机制,确保设备在进入 ONLINE 状态前主动发送 S1F2 或 S1F14(Establish Communications Request)。

4.8 本章小结

知识点 核心要点
S1F1 主机发起,询问设备是否在线,W Bit=1 强制回复
S1F2 设备回复,携带 MDLN 和 SOFTREV 状态报告
Device ID 消息头部字段,用于多设备寻址,0 表示默认设备
状态机影响 S1F1 触发 NOT COMMUNICATING → COMMUNICATING,S1F2 回复后进入 ONLINE
日志解析 关注 Device ID 分组、MDLN/SOFTREV 合法性校验、超时重试逻辑