SecsGemPro
SecsGemPro 是一个纯 Python 实现的 SECS/GEM 通信协议库,专为半导体制造行业设计。它完整实现了 SEMI E5 (SECS-II)、SEMI E30 (GEM) 和 SEMI E37 (HSMS) 标准,使工厂主机系统与生产设备之间能够进行标准化通信。
📋 目录
- 简介
- 协议标准参考
- 核心特性
- 项目架构
- 安装
- 快速开始
- 架构设计
- 模块说明
- 设备能力 (Capabilities)
- API 参考
- 支持的 Stream/Function
- 符号约定
- S00 — Abort Transaction
- S01 — Equipment Status
- S02 — Equipment Constants and Reports
- S03 — Material/Recipe Status
- S05 — Exception/Alarm Reporting
- S06 — Data Collection
- S07 — Process Program Management
- S09 — System Errors
- S10 — Terminal Messages
- S12 — Wafer Map
- S14 — Recipe Management
- ACK 值参考
- 汇总统计
- 开发计划
- 许可证
简介
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(请求成功标记)
| 值 | 含义 |
|---|---|
True |
成功 |
False |
失败 |
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 |
开发计划
- 支持更多 GEM 高级特性(Trace Data、Spooling 等)
许可证
本项目基于 MIT 许可证开源。
Metadata
Release files for SecsGemPro 1.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| secsgempro-1.6.0.tar.gz | 118.1 kB | Without provenance | Details for secsgempro-1.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| secsgempro-1.6.0-py3-none-any.whl | Python 3 | none | any | Details for secsgempro-1.6.0-py3-none-any.whl |
Total release size: 391.8 kB
Release files / secsgempro-1.6.0.tar.gz
| Download URL | secsgempro-1.6.0.tar.gz |
|---|---|
| Size | 118.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ce059a7bca840dc907ac0cfb1e503f60a9b62cc5327037125aecf235ac9dec8
|
|
BLAKE2b-256 checksum How to use checksums |
d1037a033ae992e4f3df6d674d492267866daae2724da1d85bd4133bea10e880
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.11.9 Windows/10
|
Release files / secsgempro-1.6.0-py3-none-any.whl
| Download URL | secsgempro-1.6.0-py3-none-any.whl |
|---|---|
| Size | 273.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff4c499f0af6670e881183a15fd5375b0e8532d33fbc812035b95ffe100457df
|
|
BLAKE2b-256 checksum How to use checksums |
a7e5f8d36f6955b83ddc44f6295ec2d74964da989a0198ef327a788ceb13fe80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.11.9 Windows/10
|
Security for SecsGemPro 1.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.