简介这份PDF文档面向半导体设备自动化领域的工程师与开发人员系统讲解SECS/GEMSEMI设备通信标准/通用设备模型规范及落地实现帮助解决不同厂商设备与主机系统之间的通信标准化与互操作问题。文档以广州金南瓜科技的SECS/GEM方案为实例依次展开通信状态模型、控制状态模型与设备处理状态并逐项说明主机发起场景、事件通知、在线识别、动态事件报告配置、变量与跟踪数据采集、报警管理、远程控制、设备常数、过程程序管理、时钟及终端服务等设备能力同时给出TCP/IP通讯超时等协议细节与事件、变量、报警的实现清单目录结构完整便于按模块查阅与对照实施。资源包共1个PDF文件约1006KB轻量易读。目前已有746人学习适合需要理解SECS/GEM规范、搭建设备通信接口或进行自动化产线集成的技术人员参考。1. 一份把 SECS/GEM 从“玄学”拉回地面的规格书半导体设备联机这行有个共识SECS/GEM 本身不难难的是把标准条文翻译成能跑通的报文和状态机。很多工程师第一次接 GEM 接口面对 S1F13、S1F14、S2F33、S6F11 这些编号感觉像在看天书调不通的时候只能靠抓包猜。这份《SECS/GEM 标准规范》规格说明书就是一份把标准落到具体设备实现上的工程文档覆盖通讯状态模型、控制状态模型、事件报告配置、变量采集、报警管理、远程命令、过程程序管理等 GEM 必备能力还附了完整的 SECS 场景时序和消息格式字典。它适合两类人一是刚接手设备端 GEM 接口、需要一份可对照实现的开发二是主机端Host侧要对接不同机台、需要确认对方到底实现了哪些能力的集成工程师。下面按“文档怎么读、状态机怎么落、报文怎么对、坑在哪”的顺序拆。2. 先读状态模型通讯与控制两条主线怎么落地2.1 通讯状态模型DISABLED / ENABLED 与四个子状态文档第 2.1 节用 Harel 状态图描述了设备与主机的通讯链路核心是两层顶层 DISABLED 和 ENABLEDENABLED 下再分 COMMUNICATING 和 NOT COMMUNICATINGNOT COMMUNICATING 又拆成 HOST-INITIATED CONNECT 和 EQUIPMENT-INITIATED CONNECT 两个并行子状态。这个结构不是画着好看的它直接决定了你的代码里要维护几个布尔标志、定时器什么时候启动。落地时我一般会把它映射成一个枚举加一个定时器from enum import Enum class CommState(Enum): DISABLED 0 NOT_COMM_HOST_INIT 1 # 等主机发 S1F13 NOT_COMM_EQP_WAIT_CRA 2 # 设备主动发 S1F13等 S1F14 NOT_COMM_EQP_WAIT_DELAY 3 # 连接失败等 CommDelay 到期重试 COMMUNICATING 4 # 关键参数建立通讯超时文档中对应 ECID1 ESTABLISH_COMM_TIMEOUT 10.0 # 秒按设备实际 ECID 值配置 COMM_DELAY 5.0 # 重试间隔秒逻辑说明进入 NOT COMMUNICATING 时设备主动连接分支要立刻把 CommDelay 定时器置为“已过期”然后发 S1F13收到 S1F14 且 COMMACK0 才进 COMMUNICATING。如果连接事务失败进 WAIT DELAY清空发送队列必要时转 spool 缓冲等定时器到期再回 WAIT CRA 重发。参数上ESTABLISH_COMM_TIMEOUT对应文档里那个 ECID1 的“建立通讯超时”这个值主机和设备两边必须一致否则一方还在等、另一方已经判超时日志里就会出现“发了没回”的假象。2.2 控制状态模型OFF-LINE 下为什么还要回 S1F17第 2.2 节的控制状态模型定义了主机和设备之间的协作级别。文档写得很明确OFF-LINE 状态下设备对主机除 S1F13、S1F17 之外的所有 primary message 都回 SxF0但 S1F13 和 S1F17 要正常处理。这条规则是很多新手翻车的地方——以为离线了就什么都不理结果主机发 S1F17 请求上线设备不回主机侧一直卡在“设备不可控”。实现上建议把消息分发做成两级判断def dispatch(primary_msg): # 第一级通讯层是否已建立 if comm_state ! CommState.COMMUNICATING: if primary_msg.function in (13, 17): return handle_comm_control(primary_msg) return None # 未通讯直接丢弃不回 # 第二级控制状态 if control_state OFFLINE: if primary_msg.function in (13, 17): return handle_control(primary_msg) return build_sxf0(primary_msg) # 其余一律 SxF0 return handle_online(primary_msg)这里有个容易忽略的细节S1F17 的应答是 S1F18里面的 ONLACK 取值有约定0 表示接受1 表示拒绝设备未就绪2 表示已在 ONLINE。主机侧拿到 1 不要立刻重试先看设备是不是还在初始化否则会陷入“请求—拒绝—再请求”的循环。文档在 7.10 节的 Control 场景里给了 ON-LINE/OFF-LINE 的完整时序建议对着时序图把每个分支的应答码抄进代码注释后面排查时省一半时间。2.3 设备处理状态与 GEM 适应性清单的用法文档 1.4 节的 GEM Adaptability 表是一份“能力勾选清单”把 Fundamental GEM Requirements 和 Additional Capabilities 逐项标了 Yes/No。注意里面 Material Movement 和 Spooling 两项是 No这意味着这份实现不支持物料搬运管理和消息溢出缓冲。对接前先看这张表能避免大量无效联调比如主机侧如果依赖 Spooling 做断线补报而设备端明确不支持那断线期间的事件就是丢了得在主机侧做补偿逻辑。设备处理状态Equipment Processing States在文档目录里出现了但正文页码标注异常实际实现时按 GEM 标准常见做法是维护 INIT、IDLE、EXECUTING、PAUSE 等状态并通过 S1F3/S1F4 或状态变量对外暴露。我一般会把处理状态和事件报告绑定状态迁移时触发对应的 collection event而不是让主机轮询这样既省带宽又符合 GEM 的事件驱动模型。3. 事件报告与数据采集S2F33/S2F35 配置链路怎么搭3.1 动态事件报告配置REPORTID 与 VID 的绑定关系GEM 的数据采集核心是“主机定义报告、设备按报告上报”。文档 3.4 节和 7.2 节给了动态事件报告配置的完整场景涉及 S2F33Define Report、S2F35Link Event Report、S2F37Enable/Disable Event Report三条链路。理解它们的关系是落地前提S2F33 定义“一个 REPORTID 包含哪些 VID”S2F35 定义“哪个 CEID 触发哪个 REPORTID”S2F37 控制事件报告开不开。用 SML 表示一个典型配置大概是这样S2F33 W L [2] L [1] # 定义 1 个报告 L [2] U4 1001 # REPORTID L [3] # 该报告包含的 VID 列表 U4 2001 # 温度 U4 2002 # 压力 U4 2003 # 设备状态 L [0] # 空列表表示不删除已有报告 S2F35 W L [2] L [1] # 链接 1 个事件 L [2] U4 5001 # CEID例如“工艺开始” L [1] U4 1001 # 绑定 REPORTID 1001 L [0] 逻辑说明S2F33 的第二个列表是“要删除的报告列表”传空表示纯新增如果主机要重配常见做法是先发删除再发定义或者用 S2F33 的删除语义覆盖。参数上REPORTID 和 CEID 的数值范围由设备端 Data Item Dictionary 约定文档 6.2.1 节的 Data Item Dictionary 就是查这些 ID 的地方别自己拍脑袋编号。S2F35 的应答是 S2F36里面 DRACK/LRACK 为 0 才算成功非 0 要对照文档里的错误码表定位。3.2 变量、跟踪、状态三类数据采集的边界文档把数据采集拆成三块Variable Data Collection3.5、Trace Data Collection3.6、Status Data Collection3.7。很多对接争议就出在“这个数据该走哪条路”上。我的经验边界是需要和事件绑定的瞬时值走 Variable Data Collection通过 S6F11 随事件上报需要按固定周期连续采样的走 Trace Data Collection用 S2F23 设采样周期和总数设备用 S6F1 回传设备整体运行状态走 Status Data Collection主机用 S1F3 主动查询。Trace 采集的参数最容易设错S2F23 W L [5] U4 1 # TRID跟踪报告 ID A 000500 # DSPER采样周期格式 HHMMSS这里 5 秒 U4 0 # TOTSMP总采样数0 表示无限 U4 1 # REPGSZ每个 S6F1 包含的采样组数 L [2] # 要跟踪的 VID U4 2001 U4 2002 DSPER是字符串格式的时分秒不是秒数写成5或5都会被设备端解析失败TOTSMP0表示一直采到主机发 S2F25 停止如果主机忘了停设备端缓冲区会一直涨这是现场常见的资源泄漏点。文档 7.3.4 节的 Host Initiates Trace Report 场景给了停止时序建议在主机侧加一个“跟踪会话超时自动停”的兜底。3.3 报警管理与远程命令的消息对报警管理3.8和远程控制3.9是主机干预设备的两条手。报警侧设备用 S5F1 上报报警主机用 S5F3 做 enable/disable用 S5F5 查询报警列表远程控制侧主机用 S2F41 下发命令设备用 S2F42 回 ACK里面 HCACK 取值要严格按文档 6.2.1 的字典来0 表示命令已执行1 表示命令存在但参数无效2 表示命令不存在3 表示命令不能现在执行。S2F41 W L [2] A START # RCMD远程命令名 L [2] # 参数列表 L [2] A LOTID A LOT2024001 L [2] A RECIPE A RCP_A 参数说明RCMD 的取值必须在设备端“已实现主机命令”清单里文档 5.6 节 Implemented host commands 就是查这个的参数名和类型同样受 Data Item Dictionary 约束。HCACK1 时 S2F42 还会带一个错误参数列表主机侧要把它解析出来打到日志否则现场只看到“命令失败”四个字排查全靠猜。4. 避坑与排查联调现场最常见的五个翻车点4.1 现象S1F13 发出后一直等不到 S1F14原因通常有两个一是 TCP 层没通HSMS 的 select 流程没走完就发了 SECS-II 消息二是设备端处于 DISABLED 状态SECS-II 通信被禁止。解决先用抓包确认 TCP 连接和 HSMS select 请求/响应是否完成再看设备端通讯状态标志。文档 2.1 节明确 DISABLED 下“所有 SECS II 通信立即停止”所以操作员切了 DISABLED 之后主机侧发什么都没用别在应用层死磕。4.2 现象事件报告配置返回 ACK 非 0但不知道错在哪原因多是 REPORTID 或 VID 不在设备端已实现清单里或者 S2F33 的删除列表和定义列表语义用反了。解决对照文档 5.1 节 Implemented collection events 和 5.2 节 Implemented data variables 逐项核对 IDS2F33 第二个列表非空时是“删除这些报告”不是“保留这些报告”这个语义反了会导致配置被清空。建议把每次 S2F33/S2F35 的请求和应答原文落盘出问题直接比对。4.3 现象S6F11 上报的数据项数量和主机预期对不上原因是 REPORTID 绑定的 VID 列表在设备端被重配过或者主机侧缓存的报告定义过期。解决主机在建立通讯后先发 S2F33 重新定义不要假设设备端保留上次配置如果设备支持 S2F33 的“查询”语义部分实现支持空定义查询先查再配。文档 7.2 节的动态配置场景里配置和上报是分开的两段时序别把配置应答当成数据上报。4.4 现象OFF-LINE 下主机发 S1F17 被回 S1F0原因是消息分发逻辑把 S1F17 也归到了“非 S1F13 一律 SxF0”的分支。文档 2.2 节写得很清楚OFF-LINE 下 S1F13 和 S1F17 都要正常处理。解决按 2.2 节的分发伪代码改判断条件把 13 和 17 单独放行改完用 S1F17 单独测一遍确认 ONLACK 返回符合预期。4.5 现象Trace 采集跑一段时间后设备端内存上涨原因是 TOTSMP 设了 0无限采样但主机侧没有发 S2F25 停止或者 REPGSZ 设得过大导致单条 S6F1 消息超长被分片。解决主机侧给每个 TRID 维护会话超时到期自动发 S2F25REPGSZ 按设备端消息长度上限反推一般单条 SECS-II 消息控制在几 KB 以内。文档 3.6 节和 7.3.4 节合起来看能理清启动和停止的对称关系。5. 用 SML 字典反查报文把规格书变成可执行的对照表文档第 6 章是整份规格书里最“工具化”的部分6.1 节列了 SECS-II 消息子集6.2 节讲 SML 语言6.2.1 节是 Data Item Dictionary6.2.2 节是 Data Format。我的用法是把 Data Item Dictionary 导成一张对照表联调时按“消息号 → 结构 → 数据项 ID → 类型 → 含义”五列查比翻 PDF 快得多。消息方向关键结构常见数据项用途S1F13/F14双向COMMACK无建立通讯S1F17/F18主机→设备ONLACK无请求上线S2F33/F34主机→设备REPORTID、VID 列表DRACK定义报告S2F35/F36主机→设备CEID、REPORTIDLRACK链接事件报告S2F37/F38主机→设备CEID 列表、CEEDERACK启停事件报告S2F41/F42主机→设备RCMD、参数HCACK远程命令S5F1/F2设备→主机ALCD、ALID无报警上报S6F11/F12设备→主机CEID、报告列表无事件数据上报这张表不是让你背而是让你在写解析代码时有个锚点。比如收到 S6F11先取 CEID再按 S2F35 建立的映射找 REPORTID再按 S2F33 的定义拆 VID 列表三层解引用下来数据才对得上。SML 语言那节6.2值得单独看它定义了L、A、U4、BOOLEAN这些标记的写法抓包工具和日志里看到的报文基本都是 SML 形式能直接读 SML 就等于能读现场日志。一个实操技巧把文档 7 章的场景时序逐条转成测试用例。比如 7.1.1 的 Host Attempts to Establish Communications就写一个“主机先发 S1F13、设备回 S1F14”的用例7.4.1 的 Enable/Disable Alarms就写“S5F3 使能后 S5F1 才上报”的用例。每条用例跑通打勾跑不通就回 6.2.1 查数据项定义。这套方法我从一个模拟项目里沿用下来联调周期从“靠猜”变成“按表推进”。从那以后我每次拿到新的设备规格书第一件事就是把 Data Item Dictionary 和场景时序抽成对照表和用例清单再动手写一行代码。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
U2-Decision开源解读:让模型路由与智能体分诊更高效 最近看到云知声把 U2-Decision 开源了的消息,第一反应是:这个命名有点意思。U2-Decision,拆开理解就是“从任务输入到决策输出”,官方给的那句定位也很直白——“让正确的任务找到正确的智能”。干我们这行的人看到这句话… · 2026/11/14 19:53:36
亚马逊给Agent立规矩:不亮身份不能替用户下单 1. 这则消息背后的真正信号:Agent开始被当"人"管了刚看到"亚马逊给Agent立规矩:不亮身份,别想替用户下单"这个话题时,我第一反应是:平台终于开始认真对待AI Agent这件事了。过去一年多,… · 2026/11/14 19:53:36
AI智能体正从聊天框走向你的个人生活操作系统 1. 从聊天框到控制台:Muse 为什么让我觉得 AI 要变天了如果你现在还觉得 AI 只是一个能陪你聊天的对话框,那我建议你花点时间去看看最近讨论度很高的 Muse 智能体应用。它代表的不是某一个产品的成功,而是 AI 整个角色正在发生一次底层切换&a… · 2026/11/8 10:13:47
郑州应急局电工证是上岗必备,04年证还能用吗? 郑州应急局电工证是上岗必备,04年证还能用吗? 急需特种作业证才能上岗找工作,郑州应急局电工证是很多建筑工人心中的“上岗必备”。但很多人还分不清04年的电工证还能不能用,或者现在考的新证到底有什么不同。尤其是像新乡这样的建筑工地,电工证几乎… · 2026/11/14 19:53:21
萍乡弱电电工证怎么报名?转岗电工必须知道的实操干货 萍乡弱电电工证怎么报名?转岗电工必须知道的实操干货 你现在急需特种作业证才能上岗找工作,但对萍乡弱电电工证的报名流程、考试内容和执业范围一无所知?别急,这篇文章从报考门槛、备考技巧到证书价值,给你讲透彻。… · 2026/11/14 19:53:21
电工证考不过白交培训费?河北平山电工证考试点真实经历揭秘 电工证考不过白交培训费?河北平山电工证考试点真实经历揭秘 怕考不过白交培训费?河北平山电工证考试点真实经历告诉你,不是每个培训机构都能让你顺利拿证!去年在河北平山参加电工证考试的张师傅,就因为选错了培训点,结果不仅考试挂了,连补考都没赶上,… · 2026/11/14 19:53:21
二级电工证报考要求丢了怎么补办 电子证书怎么查 二级电工证报考要求丢了怎么补办 电子证书怎么查 证书过期了不知道怎么复审延期,你不是一个人。去年南阳卧龙区一个电工老王,因为没及时办理复审,结果被单位停职,连带项目都停工了,差点丢了饭碗。现在你手里的二级电工证,哪怕只是电子证书,也得按时“… · 2026/11/14 19:53:21
电工证总共要审几年在哪考最靠谱 电工证总共要审几年在哪考最靠谱 学历不高怕报不上名,但电工证考试真的不看学历,只要你有初中及以上学历,就能报名参加考试。而且电工证不是一劳永逸的, 电工证总共要审几年… · 2026/11/14 19:53:21
电工证检证考试严格吗?学历不高怕报不上名,值不值得考? 电工证检证考试严格吗?学历不高怕报不上名,值不值得考? 你是不是正愁学历不高,怕报不了电工证?别急,今天咱们就来聊聊电工证检证考试到底 严格吗 ,还有这证 值不值得考 ,帮你理清思路,别走弯路。 电工证检证考试严格吗?考试难度与通过率解析… · 2026/11/14 19:52:04
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/13 22:30:50
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/14 13:23:47
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/14 13:20:59
有初级电工证怎么工作 2026河南最新政策怎么应对 有初级电工证怎么工作 2026河南最新政策怎么应对 之前考的证在外省能不能转过来?这个问题我每天被问上百次。2026年河南最新政策对证书跨省转移有了明确说明,特别是南阳市的从业者,需要特别关注。… · 2026/11/14 0:00:31
电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 证书过期了不知道怎么复审延期?很多人遇到这种情况,要么是工作太忙没时间处理,要么是不知道具体流程,导致证书失效,影响工作和项目进展。其实复审并不难,关键是要找准官方报名入口,掌… · 2026/11/14 0:00:31
为什么要低压电工证实操考试考什么 为什么低压电工证值不值得考?别再被中介骗了 你是不是也经常看到网上有人在问“低压电工证到底值不值得考”?或者在找报名点时,担心被中间人骗钱?这些问题,我懂,我也经历过。作为一名在应急管理行业摸爬滚打多年的从业者,我深知低压电工证不仅是一个从… · 2026/11/14 0:00:31
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:12:21
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:11:51
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 22:31:30