SecsGemPro

SecsGemPro 是一个纯 Python 实现的 SECS/GEM 通信协议库,专为半导体制造行业设计。它完整实现了 SEMI E5 (SECS-II)、SEMI E30 (GEM) 和 SEMI E37 (HSMS) 标准,使工厂主机系统与生产设备之间能够进行标准化通信。
📋 目录
简介
SECS/GEM (SEMI Equipment Communications Standard / Generic Equipment Model) 是半导体设备与工厂主机系统之间的标准通信协议,广泛应用于晶圆制造、封装测试等半导体生产环节。
SecsGemPro 提供了:
- HSMS (High-Speed SECS Message Services):基于 TCP/IP 的高速消息传输层
- SECS-II:消息编码/解码,完整的 Stream/Function 消息定义
- GEM:完整的 GEM 设备模型实现,支持 Host 端和 Equipment 端
协议标准参考
SecsGemPro 实现了 SEMI(国际半导体产业协会)发布的以下核心通信标准:
SEMI E5 — SECS-II 消息协议 (Message Content)
Equipment Communications Standard 2 — Message Content
SECS-II 定义了半导体设备与主机之间消息的编码格式和内容结构。这是 SECS/GEM 协议栈的消息层,规定了:
| 概念 |
说明 |
| Stream |
消息分类(如 S01 设备状态、S05 告警报告),共 14 个 Stream |
| Function |
Stream 下的具体操作(如 S01F01 在线探测、S05F03 启用告警) |
| Data Item |
消息中的数据结构单元(如 ALID 告警ID、CEID 收集事件ID) |
| SECS-II 数据类型 |
22 种基础变量类型,包括 List、Binary、Boolean、U1/U2/U4/U8、I1/I2/I4/I8、F4/F8、A(ASCII)、JIS-8 等 |
本项目实现了 134 个 Stream/Function 消息定义和 130+ 个数据项,覆盖 SEMI E5 的 §6.1–§6.14 全部主要章节。
SEMI E37 — HSMS 传输层协议 (Transport Layer)
High-Speed SECS Message Services — Generic Services
HSMS 定义了基于 TCP/IP 网络的 SECS-II 消息传输标准,取代了早期的 RS-232(SECS-I)串口通信方式。这是 SECS/GEM 协议栈的传输层,核心功能包括:
| 特性 |
说明 |
| 连接模式 |
Active(主动连接)与 Passive(被动监听)两种 TCP 连接模式 |
| 控制消息 |
Select / Deselect(建立/断开 HSMS 会话)、Linktest(心跳检测)、Separate(断开连接)、Reject(拒绝连接) |
| 连接状态机 |
NOT_CONNECTED → CONNECTED_NOT_SELECTED → CONNECTED_SELECTED 三级状态管理 |
| 会话复用 |
通过 Session ID 区分同一 TCP 连接上的不同会话 |
| 多块传输 |
支持大数据量的分块发送/接收 |
本项目完整实现了 HSMS 的连接管理、控制消息交换、心跳保活和多块传输机制。
SEMI E30 — GEM 设备模型 (Generic Equipment Model)
Generic Model for Communications and Control of Manufacturing Equipment
GEM 建立在 SECS-II 和 HSMS 之上,定义了半导体生产设备的标准化行为模型,确保来自不同厂商的设备与工厂主机系统(MES/EAP)能够互操作。GEM 定义了:
| 能力模块 |
说明 |
相关 SF |
| 通信状态管理 |
Communicate / Not-Communicate 状态机,控制通信的建立和终止 |
S01F13–S01F14 |
| 设备控制状态 |
ONLINE/OFFLINE + LOCAL/REMOTE 组合状态,控制设备操作权限 |
S01F15–S01F18 |
| 告警管理 |
告警的触发、上报、启用/禁用状态管理 |
S05F1–S05F8 |
| 收集事件 |
定义事件 → 链接报告 → 触发上报,实现设备状态变化的异步通知 |
S02F33–S02F38, S06F11–S06F16 |
| 设备常量 |
存储在设备上的只读/可写配置参数 |
S02F13–S02F16, S02F29–S02F30 |
| 状态变量 |
设备运行时的实时状态数据 |
S01F3–S01F4, S01F11–S01F12 |
| 数据值/数据集合 |
与收集事件关联的结构化数据采集 |
S06F1–S06F8 |
| 远程控制 |
主机向设备发送 START/STOP 等远程命令 |
S02F41–S02F42 |
| 工艺程序管理 |
工艺程序的加载、上传、删除、格式化 |
S07F1–S07F26 |
| 终端消息 |
操作员终端的文本信息交互 |
S10F1–S10F4 |
本项目通过 Capability(能力混入)模式完整实现了 GEM 的 8 大核心能力模块。
SEMI E39 — 对象服务 (Object Services)
Object Services Standard — Concepts, Behavior, and Services
SEMI E39 定义了一套通用的对象属性访问服务,用于对设备上的对象(如配方、晶圆映射等)进行**读取(GetAttr)和修改(SetAttr)**操作。本项目在 S14 Stream 中实现了 E39 的对象服务接口:
- S14F01 / S14F03 — GetAttr/SetAttr 请求(含 OBJSPEC、OBJTYPE、OBJID 和属性过滤)
- S14F02 / S14F04 — GetAttr/SetAttr 数据回复(含 OBJACK 确认码和错误信息)
SEMI E87 — 载具管理 (Carrier Management)
Specification for Carrier Management (CMS)
SEMI E87 定义了半导体工厂中**载具(Carrier)**的管理规范,包括晶圆载具、料盒等物料的传送、追踪和控制。本项目的 S03 Stream 实现了 E87 的核心消息交互:
- S03F17 — 载具操作请求(Carrier Action Request),指定载具 ID、操作类型、端口号和自定义属性
- S03F18 — 载具操作确认(Carrier Action Acknowledge),返回操作接受状态和错误信息
标准与项目分层对应
sequenceDiagram
participant GEM as GEM 应用层<br/>E30/E39/E87
participant SECS as SECS-II 消息层<br/>E5
participant HSMS as HSMS 传输层<br/>E37
Note over GEM: 状态机 + 8 个 Capability
Note over SECS: 134 SF 消息 + 130+ Data Items
Note over HSMS: TCP 连接 + 控制消息
GEM->>SECS: 消息编码
Note right of GEM: 将 GEM 语义<br/>编码为 SECS-II 格式
SECS->>HSMS: TCP/IP 传输
Note right of SECS: 封装为 HSMS 报文<br/>通过 TCP 发送
HSMS-->>SECS: TCP/IP 接收
Note left of HSMS: 接收 TCP 数据<br/>解包 HSMS 报文
SECS-->>GEM: 消息解码
Note left of SECS: 解析 SECS-II 格式<br/>还原 GEM 语义
其他相关 SEMI 标准
| 标准 |
名称 |
说明 |
本项目支持 |
| SEMI E5 |
SECS-II Message Content |
SECS-II 消息编码与内容 |
✅ 134 个 SF |
| SEMI E30 |
GEM — Generic Equipment Model |
设备通用通信与控制模型 |
✅ 8 个 Capability |
| SEMI E37 |
HSMS — Generic Services |
高速 SECS 消息传输服务 |
✅ 完整实现 |
| SEMI E37.1 |
HSMS-SS — Single Session |
HSMS 单会话模式 |
✅ 默认支持 |
| SEMI E39 |
Object Services |
对象属性访问服务 |
✅ S14F1-F4 |
| SEMI E87 |
Carrier Management (CMS) |
载具管理规范 |
✅ S03F17-F18 |
| SEMI E40 |
Process Job Management |
工艺作业管理 |
— 计划中 |
| SEMI E90 |
Substrate Tracking |
基板追踪 |
— 计划中 |
| SEMI E94 |
Control Job Management |
控制作业管理 |
— 计划中 |
核心特性
- ✅ 完整的 HSMS 实现:支持 Active/Passive 连接模式,Select/Deselect/Linktest/Separate/Reject 控制消息
- ✅ 丰富的 SECS-II 消息:内置 140+ 个 Stream/Function 消息定义,覆盖 S1-S14
- ✅ GEM 设备模型:完整实现 SEMI E30 GEM 标准
- ✅ 双端支持:同时支持 Host(主机)端和 Equipment(设备)端开发
- ✅ 状态机驱动:基于有限状态机(FSM)的通信状态管理和控制状态管理
- ✅ 事件系统:灵活的事件回调机制,轻松响应连接、消息、告警等事件
- ✅ 能力(Capability)混入模式:设备功能模块化,可按需组合
- ✅ TCP 双模式:内置 TCP 客户端和服务器实现
- ✅ 线程安全:多线程架构确保并发通信的可靠性
- ✅ 编码支持:支持 JIS X 0201 字符编码
项目架构
安装
环境要求
- Python >= 3.11, < 3.13
- Poetry
通过 Poetry 安装(推荐)
克隆项目
git clone https://gitee.com/w_liu/SecsGemPro.git
进入项目目录
cd SecsGemPro
使用 Poetry 创建虚拟环境并安装依赖
poetry install
快速开始
1. Equipment 端(设备被动端)
创建一个 GEM 设备端,监听连接并响应主机请求,通讯上后主动给 host 发送 s1f13 消息:
from secsgem.common import DeviceType
from secsgem.gem import GemEquipmentHandler
from secsgem.hsms import HsmsSettings, HsmsConnectMode
class EquipmentExample(GemEquipmentHandler):
"""设备端 passive 服务示例."""
hsms_settings = HsmsSettings(
address="127.0.0.1", port=5000,
connect_mode=HsmsConnectMode.PASSIVE, device_type=DeviceType.EQUIPMENT
)
def __init__(self):
super().__init__(self.hsms_settings)
self.enable() # 启动设备端 passive 服务
if __name__ == '__main__':
EquipmentExample()
2. Host 端(主机主动端)
创建一个 GEM 主机端,主动连接设备,如果连接上 Passive 服务会主动发送 s1f13 消息:
from secsgem.common import DeviceType
from secsgem.gem import GemHostHandler
from secsgem.hsms import HsmsSettings, HsmsConnectMode
class HostExample(GemHostHandler):
"""Host Active 示例."""
hsms_settings = HsmsSettings(
address="127.0.0.1", port=5000,
connect_mode=HsmsConnectMode.ACTIVE, device_type=DeviceType.HOST
)
def __init__(self):
super().__init__(self.hsms_settings)
self.enable()
if __name__ == '__main__':
HostExample()
架构设计
分层模型
SecsGemPro 采用严格的分层架构,每层职责明确:
sequenceDiagram
participant Common as Common 公共基础层
participant HSMS as HSMS 传输层 - SEMI E37
participant SECS as SECS-II 消息层 - SEMI E5
participant GEM as GEM 应用层 - SEMI E30
Note over Common: Protocol / Settings<br/>StateMachine / EventProducer<br/>TcpClient/Server
Note over HSMS: HsmsProtocol<br/>ConnectionStateMachine
Note over SECS: SecsHandler / StreamsFunctions<br/>DataItemBase
Note over GEM: GemHandler / GemHostHandler<br/>GemEquipmentHandler + 8 Capability
Common->>HSMS: 继承 Protocol + StateMachine
Note right of Common: HsmsProto → Protocol<br/>ConnSM → StateMachine
HSMS->>SECS: 协议依赖
Note right of HSMS: SecsHandler → HsmsProto
SECS->>SECS: SF 回调注册
Note right of SECS: SecsHandler → SF 140+
SECS->>GEM: Handler 继承
Note right of SECS: GemHandler → SecsHandler
GEM->>GEM: 端类型派生
Note right of GEM: GemHost / GemEquip<br/>→ GemHandler
状态机
SecsGemPro 使用层次化状态机来管理复杂的协议状态:
HSMS 连接状态机 — 管理 TCP 连接和 HSMS 选择状态:
stateDiagram-v2
[*] --> NOT_CONNECTED
NOT_CONNECTED --> CONNECTED_NOT_SELECTED : connect
CONNECTED_NOT_SELECTED --> CONNECTED_SELECTED : select
CONNECTED_SELECTED --> CONNECTED_NOT_SELECTED : deselect
CONNECTED_NOT_SELECTED --> NOT_CONNECTED : disconnect
CONNECTED_SELECTED --> NOT_CONNECTED : disconnect
GEM 通信状态机 — 管理 GEM 层的通信建立流程:
stateDiagram-v2
[*] --> DISABLED
DISABLED --> NOT_COMMUNICATING : enable
NOT_COMMUNICATING --> WAIT_CRA : select
WAIT_CRA --> COMMUNICATING : s1f14received ✅
WAIT_CRA --> WAIT_DELAY : communicationreqfail ⏳
WAIT_DELAY --> WAIT_CRA : delayexpired 🔄
COMMUNICATING --> NOT_COMMUNICATING : communicationfail ❌
NOT_COMMUNICATING --> DISABLED : disable
COMMUNICATING --> DISABLED : disable
设备控制状态机 — 管理设备的在线/离线/本地/远程控制状态:
stateDiagram-v2
[*] --> EQUIPMENT_OFFLINE
EQUIPMENT_OFFLINE --> ATTEMPT_ONLINE : switch_online
ATTEMPT_ONLINE --> HOST_OFFLINE : attempt_online_fail
ATTEMPT_ONLINE --> ONLINE : online_ok
HOST_OFFLINE --> ONLINE : online_ok
ONLINE --> ONLINE_LOCAL : local
ONLINE --> ONLINE_REMOTE : remote
ONLINE_LOCAL --> ONLINE_REMOTE : remote
ONLINE_REMOTE --> ONLINE_LOCAL : local
HSMS 控制消息流程
sequenceDiagram
participant Active as Active端 (Host)
participant Passive as Passive端 (Equipment)
Active->>Passive: TCP 连接建立 ✅
Active->>Passive: Select.req
Note right of Active: 请求建立HSMS会话
Passive->>Active: Select.rsp
Note left of Passive: 同意建立会话
Note over Active,Passive: 🔗 进入 SELECTED 状态
loop 链路保活
Active->>Passive: Linktest.req
Passive->>Active: Linktest.rsp
Note over Active,Passive: 心跳检测,确认链路存活
end
Note over Active,Passive: 💬 SECS-II 消息交互...
Active->>Passive: Separate.req
Note right of Active: 主动请求断开HSMS会话<br/>释放通信资源
Note over Active,Passive: 🔓 断开 HSMS 会话
事件系统
项目内置灵活的事件发布/订阅机制,支持以下核心事件:
| 事件名称 |
触发时机 |
适用层 |
connected |
TCP 连接建立 |
HSMS |
disconnected |
TCP 连接断开 |
HSMS |
communicating |
通信建立完成 |
HSMS/GEM |
message_received |
收到消息 |
所有层 |
handler_communicating |
处理器通信就绪 |
GEM |
alarm_received |
收到告警通知 |
GEM Host |
collection_event_received |
收到收集事件报告 |
GEM Host |
terminal_received |
收到终端消息 |
GEM Host |
模块说明
Common (公共基础层)
提供整个协议栈的基础抽象和工具类:
- Settings — 抽象配置类,定义设备类型、超时、会话 ID 等通用参数
- Protocol — 抽象协议类,定义消息收发、响应队列、系统计数器等核心机制
- Connection — 抽象连接类,封装底层 TCP 连接的生命周期管理
- StateMachine — 通用有限状态机框架,支持层次化状态、状态进入/离开事件
- EventProducer — 事件发布/订阅系统,支持注册回调函数和目标对象
- TcpClientConnection — TCP 客户端连接实现
- TcpServerConnection — TCP 服务器连接实现(支持多客户端)
- ByteQueue — 线程安全的字节缓冲队列
- ProtocolDispatcher — 协议调度器,管理收发线程
- Message/Block — 消息和数据块的数据模型
HSMS (高速消息传输层)
基于 SEMI E37 标准的 HSMS 协议实现:
- HsmsProtocol — HSMS 协议核心实现,处理 Select/Deselect/Linktest/Separate/Reject 控制流程
- HsmsSettings — HSMS 专用配置(IP、端口、连接模式、Session ID)
- HsmsConnectMode — 连接模式枚举(Active/Passive)
- HsmsMessage/HsmsBlock — HSMS 消息和数据块格式
- ConnectionStateMachine — HSMS 连接状态机(NOT_CONNECTED → CONNECTED_NOT_SELECTED → CONNECTED_SELECTED)
SECS (SECS-II 消息层)
基于 SEMI E5 标准的 SECS-II 实现:
- SecsHandler — SECS 消息处理器,管理 Stream/Function 回调分发
- StreamsFunctions — 函数注册表,动态查找 Stream/Function 对应的消息类
- SecsStreamFunction — 所有 SECS-II 函数的基类,提供编码/解码能力
- DataItemBase — 数据项基类,定义了数据格式和值约束
- 130+ Data Items — 完整的 SECS-II 数据项定义(如 ALID, CEID, PPID, RCMD 等)
- 22 种变量类型 — 支持 SECS-II 的所有数据类型
GEM (设备模型层)
基于 SEMI E30 标准的 GEM 实现:
- GemHandler — GEM 基础处理器,继承自 SecsHandler,添加 GEM 通信状态管理
- GemEquipmentHandler — Equipment 端完整实现,通过多重继承组合 8 种设备能力
- GemHostHandler — Host 端实现,提供远程命令发送、收集事件订阅等功能
设备能力 (Capabilities)
GemEquipmentHandler 通过多重继承(Mixin 模式)组合以下 8 种 GEM 能力:
| 能力模块 |
功能 |
相关 Stream/Function |
| AlarmCapability |
告警管理(设置/清除/启用/禁用告警) |
S5F1-S5F8 |
| ClockCapability |
时钟同步(获取/设置设备时间) |
S2F17-S2F18 |
| CollectionEventCapability |
收集事件管理(定义报告/链接/启用事件) |
S2F33-S2F38, S6F11-S6F16 |
| DataValueCapability |
数据值管理(读取/写入设备数据值) |
S6F1-S6F6 |
| EquipmentConstantsCapability |
设备常量管理(读取/设置设备常量) |
S2F13-S2F16, S2F29-S2F30 |
| RemoteControlCapability |
远程控制(START/STOP/工艺程序管理等) |
S2F41-S2F42, S7F1-S7F26 |
| StateModelsCapability |
设备状态模型管理(ONLINE/OFFLINE/LOCAL/REMOTE) |
S1F15-S1F18 |
| StatusDataCollectionCapability |
状态数据采集(读取设备状态变量) |
S1F3-S1F4, S1F11-S1F12 |
API 参考
核心配置类
HsmsSettings
HSMS 连接配置类:
| 参数 |
类型 |
默认值 |
描述 |
address |
str |
"127.0.0.1" |
IP 地址 |
port |
int |
5000 |
TCP 端口 |
connect_mode |
HsmsConnectMode |
ACTIVE |
连接模式 |
device_type |
DeviceType |
HOST |
设备类型 |
session_id |
int |
0 |
会话 ID |
establish_communication_timeout |
int |
10 |
通信建立超时(秒) |
Equipment 端 API
GemEquipmentHandler
| 方法 |
描述 |
enable() |
启动设备端服务 |
disable() |
停止设备端服务 |
waitfor_communicating(timeout) |
等待通信建立 |
set_alarm(alid) |
设置告警 |
clear_alarm(alid) |
清除告警 |
trigger_collection_events(ceids) |
触发收集事件 |
on_commack_requested() |
连接确认回调(可重写) |
Host 端 API
GemHostHandler
| 方法 |
描述 |
enable() |
启动主机连接 |
disable() |
断开主机连接 |
waitfor_communicating(timeout) |
等待通信建立 |
are_you_there() |
发送 S01F01 探测请求 |
list_svs(svs) |
查询设备状态变量列表 |
request_svs(svs) |
获取设备状态变量值 |
request_sv(sv_id) |
获取单个状态变量值 |
list_ecs(ecs) |
查询设备常量列表 |
request_ecs(ecs) |
获取设备常量值 |
request_ec(ec_id) |
获取单个设备常量值 |
set_ecs(ecs) |
设置设备常量值 |
set_ec(ec_id, value) |
设置单个设备常量值 |
send_remote_command(rcmd, params) |
发送远程命令 |
send_process_program(ppid, ppbody) |
发送工艺程序 |
request_process_program(ppid) |
请求工艺程序 |
get_process_program_list() |
获取工艺程序列表 |
delete_process_programs(ppids) |
删除工艺程序 |
subscribe_collection_event(ceid, dvs, report_id) |
订阅收集事件 |
clear_collection_events() |
清除所有收集事件订阅 |
enable_alarm(alid) |
启用告警 |
disable_alarm(alid) |
禁用告警 |
list_alarms(alids) |
列出告警 |
list_enabled_alarms() |
列出已启用的告警 |
go_online() |
将设备设置为在线状态 |
go_offline() |
将设备设置为离线状态 |
send_equipment_terminal(terminal_id, text) |
发送终端消息到设备 |
通用 API (SecsHandler)
| 方法 |
描述 |
register_stream_function(stream, function, callback) |
注册自定义 Stream/Function 回调 |
unregister_stream_function(stream, function) |
注销 Stream/Function 回调 |
stream_function(stream, function) |
获取 Stream/Function 消息类 |
disable_ceids() |
禁用所有收集事件 |
disable_ceid_reports() |
禁用所有收集事件报告 |
支持的 Stream/Function
SecsGemPro 大部分 SECS-II Stream/Function 消息定义,基于 SEMI E5 (SECS-II) 标准。每个消息类均继承自 SecsStreamFunction,通过 _stream 和 _function 属性标识,_data_format 定义数据格式。
符号约定
- W = 需要回复(
_is_reply_required = True)
- (W) = 可选回复(
_has_reply = True, _is_reply_required = False)
- MB = 支持多块传输(
_is_multi_block = True)
- E↔H = Equipment 与 Host 双向均可发送
- E→H = Equipment 端发送到 Host 端
- H→E = Host 端发送到 Equipment 端
S00 — Abort Transaction(中止事务)
规范: SEMI E5 Section 6.1
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S00F00 |
SecsS00F00 |
中止事务 (Abort Transaction) |
Header only |
— |
E↔H |
S01 — Equipment Status(设备状态)
规范: SEMI E5 Section 6.2
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S01F00 |
SecsS01F00 |
中止 Stream 1 事务 |
Header only |
— |
E↔H |
| S01F01 |
SecsS01F01 |
在线探测请求 (Are You Online) |
Header only |
W |
H→E |
| S01F02 |
SecsS01F02 |
在线数据 (On Line Data) |
[MDLN, SOFTREV] (E→H), [] (H→E) |
— |
E↔H |
| S01F03 |
SecsS01F03 |
选中设备状态请求 (Selected Status Request) |
[SVID, ...] |
W |
H→E |
| S01F04 |
SecsS01F04 |
选中设备状态数据 (Selected Status Data) |
[SV, ...] |
— |
MB |
| S01F11 |
SecsS01F11 |
状态变量名称列表请求 (SV Namelist Request) |
[SVID, ...] |
W |
H→E |
| S01F12 |
SecsS01F12 |
状态变量名称列表回复 (SV Namelist Reply) |
[{SVID, SVNAME, UNITS}, ...] |
— |
MB |
| S01F13 |
SecsS01F13 |
建立通信请求 (Establish Communication) |
[MDLN, SOFTREV] (E→H), [] (H→E) |
W |
E↔H |
| S01F14 |
SecsS01F14 |
建立通信确认 (Communication Acknowledge) |
{COMMACK, [MDLN, SOFTREV]} |
— |
E↔H |
| S01F15 |
SecsS01F15 |
请求离线 (Request Offline) |
Header only |
W |
H→E |
| S01F16 |
SecsS01F16 |
离线确认 (Offline Acknowledge) |
OFLACK: B[1] |
— |
E→H |
| S01F17 |
SecsS01F17 |
请求在线 (Request Online) |
Header only |
W |
H→E |
| S01F18 |
SecsS01F18 |
在线确认 (Online Acknowledge) |
ONLACK: B[1] |
— |
E→H |
| S01F21 |
SecsS01F21 |
数据变量名称列表请求 (DV Namelist Request) |
[VID, ...] |
W |
H→E |
| S01F22 |
SecsS01F22 |
数据变量名称列表 (DV Namelist) |
[{VID, DVVALNAME, UNITS}, ...] |
— |
E→H |
| S01F23 |
SecsS01F23 |
收集事件名称列表请求 (CE Namelist Request) |
[CEID, ...] |
W |
H→E |
| S01F24 |
SecsS01F24 |
收集事件名称列表 (CE Namelist) |
[{CEID, CENAME, [VID, ...]}, ...] |
— |
E→H |
S02 — Equipment Constants and Reports(设备常量与报告)
规范: SEMI E5 Section 6.3
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S02F00 |
SecsS02F00 |
中止 Stream 2 事务 |
Header only |
— |
E↔H |
| S02F13 |
SecsS02F13 |
设备常量请求 (EC Request) |
[ECID, ...] |
W |
H→E |
| S02F14 |
SecsS02F14 |
设备常量数据 (EC Data) |
[ECV, ...] |
— |
MB |
| S02F15 |
SecsS02F15 |
设置设备常量发送 (New EC Send) |
[{ECID, ECV}, ...] |
W |
H→E |
| S02F16 |
SecsS02F16 |
设置设备常量确认 (New EC Acknowledge) |
EAC: B[1] |
— |
E→H |
| S02F17 |
SecsS02F17 |
日期时间请求 (Date & Time Request) |
Header only |
W |
H→E |
| S02F18 |
SecsS02F18 |
日期时间数据 (Date & Time Data) |
TIME: A[32] |
— |
E→H |
| S02F21 |
SecsS02F21 |
远程命令发送 (Remote Command Send) |
RCMD: U1/I1/A |
(W) |
H→E |
| S02F22 |
SecsS02F22 |
远程命令确认 (Remote Command Acknowledge) |
CMDA: U1/I1 |
— |
E→H |
| S02F23 |
SecsS02F23 |
轨迹初始化 (Trace Initialize) |
{TRID, DSPER, TOTSMP, REPGSZ, [SVID, ...]} |
W |
MB |
| S02F24 |
SecsS02F24 |
轨迹初始化确认 (Trace Init Acknowledge) |
TIAACK: B[1] |
— |
E→H |
| S02F25 |
SecsS02F25 |
环回诊断请求 (Loopback Request) |
ABS: B |
W |
H→E |
| S02F26 |
SecsS02F26 |
环回诊断数据 (Loopback Data) |
ABS: B |
— |
E→H |
| S02F29 |
SecsS02F29 |
设备常量名称列表请求 (EC Namelist Request) |
[ECID, ...] |
W |
H→E |
| S02F30 |
SecsS02F30 |
设备常量名称列表 (EC Namelist) |
[{ECID, ECNAME, ECMIN, ECMAX, ECDEF, UNITS}, ...] |
— |
MB |
| S02F31 |
SecsS02F31 |
设置日期时间请求 (Set Time Request) |
TIME: A[32] |
W |
H→E |
| S02F32 |
SecsS02F32 |
设置日期时间确认 (Set Time Acknowledge) |
TIACK: B[1] |
— |
E→H |
| S02F33 |
SecsS02F33 |
定义报告 (Define Report) |
{DATAID, [{RPTID, [VID, ...]}, ...]} |
W |
MB |
| S02F34 |
SecsS02F34 |
定义报告确认 (Define Report Acknowledge) |
DRACK: B[1] |
— |
E→H |
| S02F35 |
SecsS02F35 |
链接事件报告 (Link Event Report) |
{DATAID, [{CEID, [RPTID, ...]}, ...]} |
W |
MB |
| S02F36 |
SecsS02F36 |
链接事件报告确认 (Link Report Acknowledge) |
LRACK: B[1] |
— |
E→H |
| S02F37 |
SecsS02F37 |
启用/禁用事件报告 (En/Disable Event Report) |
{CEED: BOOLEAN, [CEID, ...]} |
W |
H→E |
| S02F38 |
SecsS02F38 |
启用/禁用事件报告确认 (Event Report Acknowledge) |
ERACK: B[1] |
— |
E→H |
| S02F41 |
SecsS02F41 |
主机命令发送 (Host Command Send) |
{RCMD, [{CPNAME, CPVAL}, ...]} |
W |
H→E |
| S02F42 |
SecsS02F42 |
主机命令确认 (Host Command Acknowledge) |
{HCACK: B[1], [{CPNAME, CPACK: B[1]}, ...]} |
— |
E→H |
| S02F43 |
SecsS02F43 |
重置假脱机发送 (Reset Spooling Send) |
[{STRID: U1, [FCNID: U1, ...]}, ...] |
W |
H→E |
| S02F44 |
SecsS02F44 |
重置假脱机确认 (Reset Spooling Acknowledge) |
{RSPACK: B[1], [{STRID, STRACK: B[1], [FCNID, ...]}, ...]} |
— |
E→H |
| S02F45 |
SecsS02F45 |
定义变量限制属性 (Define Variable Limits) |
{DATAID, [{VID, [{LIMITID, [UPPERDB, LOWERDB]}, ...]}, ...]} |
W |
MB |
| S02F46 |
SecsS02F46 |
定义变量限制属性确认 (Limit Attributes Acknowledge) |
{VLAACK: B[1], [{VID, LVACK: B[1], [LIMITID, LIMITACK: B[1]]}, ...]} |
— |
E→H |
| S02F47 |
SecsS02F47 |
变量限制属性请求 (Limit Attribute Request) |
[VID, ...] |
W |
H→E |
| S02F48 |
SecsS02F48 |
变量限制属性数据 (Limit Attribute Data) |
[{VID, {UNITS, LIMITMIN, LIMITMAX, [{LIMITID, UPPERDB, LOWERDB}, ...]}}, ...] |
— |
E→H |
| S02F49 |
SecsS02F49 |
增强远程命令 (Enhanced Remote Command) |
{DATAID, OBJSPEC, RCMD, [{CPNAME, CEPVAL}, ...]} |
— |
MB |
| S02F50 |
SecsS02F50 |
增强远程命令确认 (Enhanced Remote Command ACK) |
{HCACK: B[1], [{CPNAME, CPACK: B[1]}, ...]} |
— |
E→H |
S03 — Material/Recipe Status(物料/配方状态)
规范: SEMI E5 Section 6.4
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S03F17 |
SecsS03F17 |
载具操作请求 (Carrier Action Request) |
{DATAID, CARRIERACTION, CARRIERID, PTN, [{CATTRID, CATTRDATA}, ...]} |
W |
MB |
| S03F18 |
SecsS03F18 |
载具操作确认 (Carrier Action Acknowledge) |
{CAACK: B[1], [{ERRCODE, ERRTEXT}, ...]} |
— |
E→H |
S05 — Exception/Alarm Reporting(异常/告警报告)
规范: SEMI E5 Section 6.5
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S05F00 |
SecsS05F00 |
中止 Stream 5 事务 |
Header only |
— |
E↔H |
| S05F01 |
SecsS05F01 |
告警报告发送 (Alarm Report Send) |
{ALCD: B[1], ALID, ALTX: A[120]} |
(W) |
E→H |
| S05F02 |
SecsS05F02 |
告警报告确认 (Alarm Report Acknowledge) |
ACKC5: B[1] |
— |
H→E |
| S05F03 |
SecsS05F03 |
启用/禁用告警发送 (En/Disable Alarm Send) |
{ALED: B[1], ALID} |
(W) |
H→E |
| S05F04 |
SecsS05F04 |
启用/禁用告警确认 (En/Disable Alarm Acknowledge) |
ACKC5: B[1] |
— |
E→H |
| S05F05 |
SecsS05F05 |
列出告警请求 (List Alarms Request) |
[ALID, ...] |
W |
H→E |
| S05F06 |
SecsS05F06 |
列出告警数据 (List Alarms Data) |
[{ALCD: B[1], ALID, ALTX: A[120]}, ...] |
— |
MB |
| S05F07 |
SecsS05F07 |
列出已启用告警请求 (List Enabled Alarms Request) |
Header only |
W |
H→E |
| S05F08 |
SecsS05F08 |
列出已启用告警数据 (List Enabled Alarms Data) |
[{ALCD: B[1], ALID, ALTX: A[120]}, ...] |
— |
MB |
| S05F09 |
SecsS05F09 |
异常发布通知 (Exception Post Notify) |
{TIMESTAMP: A, EXID: A[20], EXTYPE: A, EXMESSAGE: A, [EXRECVRA: A[40], ...]} |
(W) |
E→H |
| S05F10 |
SecsS05F10 |
异常发布确认 (Exception Post Confirm) |
Header only |
— |
H→E |
| S05F11 |
SecsS05F11 |
异常清除通知 (Exception Clear Notify) |
{TIMESTAMP: A, EXID: A[20], EXTYPE: A, EXMESSAGE: A} |
(W) |
E→H |
| S05F12 |
SecsS05F12 |
异常清除确认 (Exception Clear Confirm) |
Header only |
— |
H→E |
| S05F13 |
SecsS05F13 |
异常恢复请求 (Exception Recover Request) |
{EXID: A[20], EXRECVRA: A[40]} |
W |
H→E |
| S05F14 |
SecsS05F14 |
异常恢复确认 (Exception Recover Acknowledge) |
{EXID: A[20], {ACKA: BOOLEAN, {ERRCODE, ERRTEXT: A[120]}}} |
— |
E→H |
| S05F15 |
SecsS05F15 |
异常恢复完成通知 (Exception Recover Complete) |
{TIMESTAMP: A, EXID: A[20], {ACKA: BOOLEAN, {ERRCODE, ERRTEXT: A[120]}}} |
(W) |
E→H |
| S05F16 |
SecsS05F16 |
异常恢复完成确认 (Exception Recover Complete ACK) |
Header only |
— |
H→E |
| S05F17 |
SecsS05F17 |
异常恢复中止请求 (Exception Recover Abort) |
EXID: A[20] |
W |
H→E |
| S05F18 |
SecsS05F18 |
异常恢复中止确认 (Exception Recover Abort ACK) |
{EXID: A[20], {ACKA: BOOLEAN, {ERRCODE, ERRTEXT: A[120]}}} |
— |
E→H |
S06 — Data Collection(数据采集)
规范: SEMI E5 Section 6.6
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S06F00 |
SecsS06F00 |
中止 Stream 6 事务 |
Header only |
— |
E↔H |
| S06F01 |
SecsS06F01 |
轨迹数据发送 (Trace Data Send) |
{TRID, SMPLN, STIME, [SV, ...]} |
(W) |
MB |
| S06F02 |
SecsS06F02 |
轨迹数据确认 (Trace Data Acknowledge) |
ACKC6: B[1] |
— |
H→E |
| S06F05 |
SecsS06F05 |
多块数据查询 (Multi Block Data Inquiry) |
{DATAID, DATALENGTH} |
W |
E→H |
| S06F06 |
SecsS06F06 |
多块数据授权 (Multi Block Data Grant) |
GRANT6: B[1] |
— |
H→E |
| S06F07 |
SecsS06F07 |
数据传输请求 (Data Transfer Request) |
DATAID |
W |
E→H |
| S06F08 |
SecsS06F08 |
数据传输数据 (Data Transfer Data) |
{DATAID, CEID, [{DSID, [{DVNAME, DVVAL}, ...]}, ...]} |
— |
MB |
| S06F11 |
SecsS06F11 |
事件报告发送 (Event Report) |
{DATAID, CEID, [{RPTID, [V, ...]}, ...]} |
W |
MB |
| S06F12 |
SecsS06F12 |
事件报告确认 (Event Report Acknowledge) |
ACKC6: B[1] |
— |
H→E |
| S06F15 |
SecsS06F15 |
事件报告请求 (Event Report Request) |
CEID |
W |
H→E |
| S06F16 |
SecsS06F16 |
事件报告数据 (Event Report Data) |
{DATAID, CEID, [{RPTID, [V, ...]}, ...]} |
— |
MB |
| S06F19 |
SecsS06F19 |
单独报告请求 (Individual Report Request) |
RPTID |
W |
H→E |
| S06F20 |
SecsS06F20 |
单独报告数据 (Individual Report Data) |
[V, ...] |
— |
MB |
| S06F21 |
SecsS06F21 |
带注释单独报告请求 (Annotated Report Request) |
RPTID |
W |
H→E |
| S06F22 |
SecsS06F22 |
带注释单独报告数据 (Annotated Report Data) |
[{VID, V}, ...] |
— |
MB |
| S06F23 |
SecsS06F23 |
请求假脱机数据 (Request Spooled Data) |
RSDC: U1[1] |
W |
H→E |
| S06F24 |
SecsS06F24 |
请求假脱机数据确认 (Spooled Data Acknowledge) |
RSDA: B[1] |
— |
E→H |
S07 — Process Program Management(工艺程序管理)
规范: SEMI E5 Section 6.7
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S07F00 |
SecsS07F00 |
中止 Stream 7 事务 |
Header only |
— |
E↔H |
| S07F01 |
SecsS07F01 |
工艺程序加载询问 (PP Load Inquire) |
{PPID: A/B[120], LENGTH} |
W |
E↔H |
| S07F02 |
SecsS07F02 |
工艺程序加载授权 (PP Load Grant) |
PPGNT: B[1] |
— |
E↔H |
| S07F03 |
SecsS07F03 |
工艺程序发送 (PP Send) |
{PPID: A/B[120], PPBODY} |
W |
MB |
| S07F04 |
SecsS07F04 |
工艺程序确认 (PP Acknowledge) |
ACKC7: B[1] |
— |
E↔H |
| S07F05 |
SecsS07F05 |
工艺程序请求 (PP Request) |
PPID: A/B[120] |
W |
E↔H |
| S07F06 |
SecsS07F06 |
工艺程序数据 (PP Data) |
{PPID: A/B[120], PPBODY} |
— |
MB |
| S07F17 |
SecsS07F17 |
删除工艺程序发送 (Delete PP Send) |
[PPID: A/B[120], ...] |
W |
H→E |
| S07F18 |
SecsS07F18 |
删除工艺程序确认 (Delete PP Acknowledge) |
ACKC7: B[1] |
— |
E→H |
| S07F19 |
SecsS07F19 |
当前工艺程序请求 (Current PP Request) |
Header only |
W |
H→E |
| S07F20 |
SecsS07F20 |
当前工艺程序数据 (Current PP Data) |
[PPID: A/B[120], ...] |
— |
MB |
| S07F23 |
SecsS07F23 |
格式化工艺程序发送 (Format PP Send) |
{PPID, MDLN, SOFTREV, [{CCODE, [PPARM, ...]}, ...]} |
W |
MB |
| S07F24 |
SecsS07F24 |
格式化工艺程序确认 (Format PP Acknowledge) |
ACKC7: B[1] |
— |
E↔H |
| S07F25 |
SecsS07F25 |
格式化工艺程序请求 (Format PP Request) |
PPID: A/B[120] |
W |
E↔H |
| S07F26 |
SecsS07F26 |
格式化工艺程序数据 (Format PP Data) |
{PPID, MDLN, SOFTREV, [{CCODE, [PPARM, ...]}, ...]} |
W |
MB |
S09 — System Errors(系统错误)
规范: SEMI E5 Section 6.9
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S09F00 |
SecsS09F00 |
中止 Stream 9 事务 |
Header only |
— |
E↔H |
| S09F01 |
SecsS09F01 |
未识别的设备 ID (Unrecognized Device ID) |
MHEAD: B[10] |
— |
E→H |
| S09F03 |
SecsS09F03 |
未识别的 Stream 类型 (Unrecognized Stream Type) |
MHEAD: B[10] |
— |
E→H |
| S09F05 |
SecsS09F05 |
未识别的 Function 类型 (Unrecognized Function) |
MHEAD: B[10] |
— |
E→H |
| S09F07 |
SecsS09F07 |
非法数据 (Illegal Data) |
MHEAD: B[10] |
— |
E→H |
| S09F09 |
SecsS09F09 |
事务计时器超时 (Transaction Timer Timeout) |
SHEAD: B[10] |
— |
E→H |
| S09F11 |
SecsS09F11 |
数据过长 (Data Too Long) |
MHEAD: B[10] |
— |
E→H |
| S09F13 |
SecsS09F13 |
会话超时 (Conversation Timeout) |
{MEXP: A[6], EDID} |
— |
E→H |
S10 — Terminal Messages(终端消息)
规范: SEMI E5 Section 6.10
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S10F00 |
SecsS10F00 |
中止 Stream 10 事务 |
Header only |
— |
E↔H |
| S10F01 |
SecsS10F01 |
终端请求 (Terminal Request) |
{TID: B[1], TEXT} |
(W) |
E→H |
| S10F02 |
SecsS10F02 |
终端请求确认 (Terminal Acknowledge) |
ACKC10: B[1] |
— |
H→E |
| S10F03 |
SecsS10F03 |
终端单次显示 (Terminal Display) |
{TID: B[1], TEXT} |
(W) |
H→E |
| S10F04 |
SecsS10F04 |
终端显示确认 (Terminal Display Acknowledge) |
ACKC10: B[1] |
— |
E→H |
S12 — Wafer Map(晶圆映射)
规范: SEMI E5 Section 6.12
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S12F00 |
SecsS12F00 |
中止 Stream 12 事务 |
Header only |
— |
E↔H |
| S12F01 |
SecsS12F01 |
映射设置数据发送 (Map Setup Data Send) |
{MID, IDTYP, FNLOC, FFROT, ORLOC, RPSEL, [REFP], DUTMS, XDIES, YDIES, ROWCT, COLCT, NULBC, PRDCT, PRAXI} |
W |
E→H |
| S12F02 |
SecsS12F02 |
映射设置数据确认 (Map Setup Ack) |
SDACK: B[1] |
— |
H→E |
| S12F03 |
SecsS12F03 |
映射设置数据请求 (Map Setup Request) |
{MID, IDTYP, MAPFT, FNLOC, FFROT, ORLOC, PRAXI, BCEQU, NULBC} |
W |
E→H |
| S12F04 |
SecsS12F04 |
映射设置数据 (Map Setup Data) |
{MID, IDTYP, FNLOC, ORLOC, RPSEL, [REFP], DUTMS, XDIES, YDIES, ROWCT, COLCT, PRDCT, BCEQU, NULBC, MLCL} |
— |
H→E |
| S12F05 |
SecsS12F05 |
映射传输询问 (Map Transmit Inquire) |
{MID, IDTYP, MAPFT: B[1], MLCL} |
W |
E→H |
| S12F06 |
SecsS12F06 |
映射传输授权 (Map Transmit Grant) |
GRNT1: B[1] |
— |
H→E |
| S12F07 |
SecsS12F07 |
映射数据类型 1 发送 (Map Type1 Send) |
{MID, IDTYP, [{RSINF: I[3], BINLT}, ...]} |
W |
MB |
| S12F08 |
SecsS12F08 |
映射数据类型 1 确认 (Map Type1 Ack) |
MDACK: B[1] |
— |
H→E |
| S12F09 |
SecsS12F09 |
映射数据类型 2 发送 (Map Type2 Send) |
{MID, IDTYP, STRP: I[2], BINLT} |
W |
MB |
| S12F10 |
SecsS12F10 |
映射数据类型 2 确认 (Map Type2 Ack) |
MDACK: B[1] |
— |
H→E |
| S12F11 |
SecsS12F11 |
映射数据类型 3 发送 (Map Type3 Send) |
{MID, IDTYP, [{XYPOS: I[2], BINLT}, ...]} |
W |
MB |
| S12F12 |
SecsS12F12 |
映射数据类型 3 确认 (Map Type3 Ack) |
MDACK: B[1] |
— |
H→E |
| S12F13 |
SecsS12F13 |
映射数据类型 1 请求 (Map Type1 Request) |
{MID, IDTYP} |
W |
E→H |
| S12F14 |
SecsS12F14 |
映射数据类型 1 数据 (Map Type1 Data) |
{MID, IDTYP, [{RSINF: I[3], BINLT}, ...]} |
— |
MB |
| S12F15 |
SecsS12F15 |
映射数据类型 2 请求 (Map Type2 Request) |
{MID, IDTYP} |
W |
E→H |
| S12F16 |
SecsS12F16 |
映射数据类型 2 数据 (Map Type2 Data) |
{MID, IDTYP, STRP: I[2], BINLT} |
— |
MB |
| S12F17 |
SecsS12F17 |
映射数据类型 3 请求 (Map Type3 Request) |
{MID, IDTYP, SDBIN: B[1]} |
W |
E→H |
| S12F18 |
SecsS12F18 |
映射数据类型 3 数据 (Map Type3 Data) |
{MID, IDTYP, [{XYPOS: I[2], BINLT}, ...]} |
— |
MB |
| S12F19 |
SecsS12F19 |
映射错误报告发送 (Map Error Report) |
{MAPER: B[1], DATLC: U1} |
— |
E↔H |
S14 — Recipe Management(配方管理)
规范: SEMI E5 Section 6.14 / SEMI E39
| SF |
类名 |
描述 |
格式 |
回复 |
方向 |
| S14F00 |
SecsS14F00 |
中止 Stream 14 事务 |
Header only |
— |
E↔H |
| S14F01 |
SecsS14F01 |
获取属性请求 (GetAttr Request) |
{OBJSPEC, OBJTYPE, [OBJID, ...], [{ATTRID, ATTRDATA, ATTRRELN}, ...], [ATTRID, ...]} |
W |
E↔H |
| S14F02 |
SecsS14F02 |
获取属性数据 (GetAttr Data) |
{[{OBJID, [{ATTRID, ATTRDATA}, ...]}, ...], {OBJACK, [{ERRCODE, ERRTEXT}, ...]}} |
— |
MB |
| S14F03 |
SecsS14F03 |
设置属性请求 (SetAttr Request) |
{OBJSPEC, OBJTYPE, [OBJID, ...], [{ATTRID, ATTRDATA}, ...]} |
W |
E↔H |
| S14F04 |
SecsS14F04 |
设置属性数据 (SetAttr Data) |
{[{OBJID, [{ATTRID, ATTRDATA}, ...]}, ...], {OBJACK, [{ERRCODE, ERRTEXT}, ...]}} |
— |
MB |
ACK 值参考
以下是各 Stream/Function 回复中使用的 ACK 数据项的具体值定义。
S01F14 — COMMACK(建立通信确认码)
| 值 |
常量 |
含义 |
| 0 |
COMMACK.ACCEPTED |
接受 |
| 1 |
COMMACK.DENIED |
拒绝,请重试 |
| 2-63 |
— |
保留 |
S01F16 — OFLACK(离线确认码)
| 值 |
常量 |
含义 |
| 0 |
OFLACK.ACK |
离线确认 |
| 1-63 |
— |
保留 |
S01F18 — ONLACK(在线确认码)
| 值 |
常量 |
含义 |
| 0 |
ONLACK.ACCEPTED |
在线接受 |
| 1 |
ONLACK.NOT_ALLOWED |
在线不被允许 |
| 2 |
ONLACK.ALREADY_ON |
已经在线 |
| 3-63 |
— |
保留 |
S02F16 — EAC(设备常量确认码)
| 值 |
常量 |
含义 |
| 0 |
EAC.ACK |
确认 |
| 1 |
EAC.INVALID_CONSTANT |
拒绝,常量不存在 |
| 2 |
EAC.BUSY |
拒绝,设备忙 |
| 3 |
EAC.OUT_OF_RANGE |
拒绝,常量值超出范围 |
| 4-63 |
— |
保留,设备特定 |
S02F22 — CMDA(远程命令确认码)
| 值 |
常量 |
含义 |
| 0 |
CMDA.DONE |
已完成/已执行 |
| 1 |
CMDA.COMMAND_UNKNOWN |
命令不存在 |
| 2 |
CMDA.NOT_NOW |
当前无法执行 |
| 3-63 |
— |
保留,设备特定错误 |
S02F24 — TIAACK(轨迹初始化确认码)
| 值 |
常量 |
含义 |
| 0 |
TIAACK.OK |
正常 |
| 1 |
TIAACK.SVID_EXCEEDED |
SVID 数量超出限制 |
| 2 |
TIAACK.TRACES_DENIED |
不允许更多轨迹 |
| 3 |
TIAACK.INVALID_PERIOD |
无效的采样周期 |
| 4 |
TIAACK.SVID_UNKNOWN |
未知的 SVID |
| 5 |
TIAACK.REPGSZ_INVALID |
无效的 REPGSZ |
| 6-63 |
— |
保留 |
S02F32 — TIACK(时间设置确认码)
| 值 |
常量 |
含义 |
| 0 |
TIACK.ACK |
时间设置成功 |
| 1 |
TIACK.TIME_SET_FAIL |
时间设置失败 |
S02F34 — DRACK(定义报告确认码)
| 值 |
常量 |
含义 |
| 0 |
DRACK.ACK |
确认 |
| 1 |
DRACK.INSUFFICIENT_SPACE |
拒绝,空间不足 |
| 2 |
DRACK.INVALID_FORMAT |
拒绝,格式无效 |
| 3 |
DRACK.RPTID_REDEFINED |
拒绝,RPTID 已定义 |
| 4 |
DRACK.VID_UNKNOWN |
拒绝,VID 不存在 |
| 5-63 |
— |
保留,其他错误 |
S02F36 — LRACK(链接事件报告确认码)
| 值 |
常量 |
含义 |
| 0 |
LRACK.ACK |
确认 |
| 1 |
LRACK.INSUFFICIENT_SPACE |
拒绝,空间不足 |
| 2 |
LRACK.INVALID_FORMAT |
拒绝,格式无效 |
| 3 |
LRACK.CEID_LINKED |
拒绝,CEID 已链接 |
| 4 |
LRACK.CEID_UNKNOWN |
拒绝,CEID 不存在 |
| 5 |
LRACK.RPTID_UNKNOWN |
拒绝,RPTID 不存在 |
| 6-63 |
— |
保留,其他错误 |
S02F38 — ERACK(启用/禁用事件报告确认码)
| 值 |
常量 |
含义 |
| 0 |
ERACK.ACCEPTED |
接受 |
| 1 |
ERACK.CEID_UNKNOWN |
拒绝,CEID 不存在 |
| 2-63 |
— |
保留 |
S02F42 / S02F50 — HCACK(主机命令确认码)
| 值 |
常量 |
含义 |
| 0 |
HCACK.ACK |
确认 |
| 1 |
HCACK.INVALID_COMMAND |
拒绝,无效命令 |
| 2 |
HCACK.CANT_PERFORM_NOW |
拒绝,当前无法执行 |
| 3 |
HCACK.PARAMETER_INVALID |
拒绝,参数无效 |
| 4 |
HCACK.ACK_FINISH_LATER |
确认,稍后完成 |
| 5 |
HCACK.ALREADY_IN_CONDITION |
拒绝,已处于该状态 |
| 6 |
HCACK.NO_OBJECT |
无此对象 |
| 7-63 |
— |
保留 |
S02F42 / S02F50 — CPACK(命令参数确认码)
| 值 |
常量 |
含义 |
| 1 |
CPACK.PARAMETER_UNKNOWN |
参数名未知 |
| 2 |
CPACK.CPVAL_ILLEGAL_VALUE |
CPVAL 值非法 |
| 3 |
CPACK.CPVAL_ILLEGAL_FORMAT |
CPVAL 格式非法 |
| 4-63 |
— |
保留 |
S02F44 — RSPACK(重置假脱机确认码)
| 值 |
常量 |
含义 |
| 0 |
RSPACK.ACK |
确认,假脱机设置已接受 |
| 1 |
RSPACK.REJECTED |
假脱机设置被拒绝 |
| 2-63 |
— |
保留 |
S02F44 — STRACK(假脱机 Stream 确认码)
| 值 |
常量 |
含义 |
| 1 |
STRACK.NOT_ALLOWED |
该 Stream 不允许假脱机 |
| 2 |
STRACK.STREAM_UNKNOWN |
Stream 未知 |
| 3 |
STRACK.FUNCTION_UNKNOWN |
该 Stream 的 Function 未知 |
| 4 |
STRACK.SECONDARY |
该 Stream 的次要 Function |
S02F46 — VLAACK(变量限制属性确认码)
| 值 |
常量 |
含义 |
| 0 |
VLAACK.ACK |
确认,命令将执行 |
| 1 |
VLAACK.LIMIT_DEF_ERROR |
限制属性定义错误 |
| 2 |
VLAACK.NOT_NOW |
当前无法执行 |
| 3-63 |
— |
保留,设备特定错误 |
S02F46 — LVACK(变量限制确认码)
| 值 |
常量 |
含义 |
| 0 |
LVACK.OK |
正常 |
| 1 |
LVACK.VARIABLE_UNKNOWN |
变量不存在 |
| 2 |
LVACK.NO_LIMITS |
变量无限制 |
| 3 |
LVACK.DUPLICATE_VARIABLE |
变量重复 |
| 4 |
LVACK.LIMIT_ERROR |
限制值错误 |
| 5-63 |
— |
保留 |
S02F46 — LIMITACK(限制属性确认码)
| 值 |
常量 |
含义 |
| 0 |
LIMITACK.OK |
正常 |
| 1 |
LIMITACK.LIMITID_UNKNOWN |
LIMITID 不存在 |
| 2 |
LIMITACK.UPPERDB_MORE_LIMITMAX |
UPPERDB > LIMITMAX |
| 3 |
LIMITACK.LOWERDB_LESS_LIMITMIN |
LOWERDB < LIMITMIN |
| 4 |
LIMITACK.UPPERDB_LESS_LOWERDB |
UPPERDB < LOWERDB |
| 5 |
LIMITACK.ILLEGAL_FORMAT |
UPPER/LOWERDB 格式非法 |
| 6 |
LIMITACK.ASCII_ILLEGAL |
ASCII 值非法 |
| 7 |
LIMITACK.DUPLICATE |
重复的限制定义 |
| 8-63 |
— |
保留,设备特定错误 |
S03F18 — CAACK(载具操作确认码)
| 值 |
常量 |
含义 |
| 0 |
CAACK.ACCEPTED |
接受 |
S05F02 / S05F04 — ACKC5(Stream 5 确认码)
| 值 |
常量 |
含义 |
| 0 |
ACKC5.ACCEPTED |
接受 |
| 1-63 |
ACKC5.ERROR |
错误 |
S05F14 / S05F15 / S05F18 — ACKA(请求成功标记)
S06F02 / S06F12 — ACKC6(Stream 6 确认码)
| 值 |
常量 |
含义 |
| 0 |
ACKC6.ACCEPTED |
接受 |
| 1-63 |
ACKC6.ERROR |
错误 |
S06F06 — GRANT6(多块数据授权码)
| 值 |
常量 |
含义 |
| 0 |
GRANT6.GRANTED |
授权 |
| 1 |
GRANT6.BUSY |
忙 |
| 2 |
GRANT6.NOT_INTERESTED |
不感兴趣 |
| 3-63 |
— |
其他错误 |
S06F23 — RSDC(请求假脱机数据命令)
| 值 |
常量 |
含义 |
| 0 |
RSDC.TRANSMIT |
传输假脱机消息 |
| 1 |
RSDC.PURGE |
清除假脱机消息 |
| 2-63 |
— |
保留 |
S06F24 — RSDA(请求假脱机数据确认码)
| 值 |
常量 |
含义 |
| 0 |
RSDA.ACK |
确认 |
| 1 |
RSDA.DENIED_BUSY |
拒绝,忙,请稍后重试 |
| 2 |
RSDA.DENIED_NO_DATA |
拒绝,假脱机数据不存在 |
| 3-63 |
— |
保留 |
S07F02 — PPGNT(工艺程序授权码)
| 值 |
常量 |
含义 |
| 0 |
PPGNT.OK |
确认 |
| 1 |
PPGNT.ALREADY_HAVE |
已拥有 |
| 2 |
PPGNT.NO_SPACE |
空间不足 |
| 3 |
PPGNT.INVALID_PPID |
PPID 无效 |
| 4 |
PPGNT.BUSY |
忙,请稍后重试 |
| 5 |
PPGNT.WILL_NOT_ACCEPT |
不会接受 |
| 6-63 |
— |
保留,其他错误 |
S07F04 / S07F18 / S07F24 — ACKC7(Stream 7 确认码)
| 值 |
常量 |
含义 |
| 0 |
ACKC7.ACCEPTED |
接受 |
| 1 |
ACKC7.NO_PERMISSION |
无权限 |
| 2 |
ACKC7.LENGTH_ERROR |
长度错误 |
| 3 |
ACKC7.MATRIX_OVERFLOW |
矩阵溢出 |
| 4 |
ACKC7.PPID_NOT_FOUND |
PPID 未找到 |
| 5 |
ACKC7.MODE_UNSUPPORTED |
模式不支持 |
| 6 |
ACKC7.PERFORMED_LATER |
稍后执行 |
| 7-63 |
— |
保留 |
S10F02 / S10F04 — ACKC10(终端确认码)
| 值 |
常量 |
含义 |
| 0 |
ACKC10.ACCEPTED |
接受 |
| 1 |
ACKC10.NOT_DISPLAYED |
不会显示 |
| 2 |
ACKC10.TERMINAL_NOT_AVAILABLE |
终端不可用 |
| 3-63 |
— |
其他错误 |
S12F02 — SDACK(映射设置确认码)
| 值 |
常量 |
含义 |
| 0 |
SDACK.ACK |
已接收数据 |
| 1-63 |
— |
错误 |
S12F06 — GRNT1(映射传输授权码)
| 值 |
常量 |
含义 |
| 0 |
GRNT1.ACK |
确认 |
| 1 |
GRNT1.BUSY |
忙,请重试 |
| 2 |
GRNT1.NO_SPACE |
空间不足 |
| 3 |
GRNT1.MAP_TOO_LARGE |
映射过大 |
| 4 |
GRNT1.DUPLICATE_ID |
ID 重复 |
| 5 |
GRNT1.MATERIALID_UNKNOWN |
物料 ID 未找到 |
| 6 |
GRNT1.UNKNOWN_MAP_FORMAT |
未知映射格式 |
| 7-63 |
— |
保留,错误 |
S12F08 / S12F10 / S12F12 — MDACK(映射数据确认码)
| 值 |
常量 |
含义 |
| 0 |
MDACK.ACK |
映射已接收 |
| 1 |
MDACK.FORMAT_ERROR |
格式错误 |
| 2 |
MDACK.UNKNOWN_ID |
ID 不匹配 |
| 3 |
MDACK.ABORT_MAP |
中止/丢弃映射 |
| 4-63 |
— |
保留,错误 |
S14F02 / S14F04 — OBJACK(对象确认码)
| 值 |
常量 |
含义 |
| 0 |
OBJACK.SUCCESSFUL |
成功 |
| 1 |
OBJACK.ERROR |
错误 |
| 2-63 |
— |
保留 |
汇总统计
| Stream |
功能范围 |
规范 |
SF 数量 |
| S00 |
Abort Transaction |
SEMI E5 §6.1 |
1 |
| S01 |
Equipment Status |
SEMI E5 §6.2 |
18 |
| S02 |
Equipment Constants and Reports |
SEMI E5 §6.3 |
30 |
| S03 |
Material/Recipe Status |
SEMI E5 §6.4 |
2 |
| S05 |
Exception/Alarm Reporting |
SEMI E5 §6.5 |
18 |
| S06 |
Data Collection |
SEMI E5 §6.6 |
16 |
| S07 |
Process Program Management |
SEMI E5 §6.7 |
14 |
| S09 |
System Errors |
SEMI E5 §6.9 |
8 |
| S10 |
Terminal Messages |
SEMI E5 §6.10 |
4 |
| S12 |
Wafer Map |
SEMI E5 §6.12 |
19 |
| S14 |
Recipe Management |
SEMI E5 §6.14 / E39 |
4 |
| 合计 |
|
|
134 |
开发计划
许可证
本项目基于 MIT 许可证开源。