Secs/Gem第十讲(基于secs4net项目的ChatGpt介绍)
好,那我们继续——
第十讲:VID、CEID、RPTID 都是哪里来的?——报文变量的定义机制全解(S2F35 深度剖析)
关键词:Variable ID、Report ID、Collection Event、S2F33、S2F35、设备资料字典(SDD)、数据建模
本讲目标
你将掌握:
- CEID / RPTID / VID 这三个核心变量的定义来源与作用
- 如何通过 S2F33、S2F35 告诉设备:我想要什么数据、以什么结构上报
- 如何用这套机制“定制化”设备上报行为
- 了解 SDD(设备资料字典)的设计结构与读取方式
这部分是你从“会用”走向“懂原理”的关键一跃。
一、核心概念复盘(一定要记住这张三角关系图)
Collection Event (CEID)↓ 绑定
Report (RPTID)↓ 包含
Variable (VID)
名称 | 含义 |
---|---|
CEID | 事件编号,比如“生产开始”、“报警触发” |
RPTID | 报告编号,是一组变量的集合 |
VID | 变量 ID,比如 LOT_ID、PRODUCT_ID、EQ_STATE |
每个 CEID 对应一批 RPTID,每个 RPTID 对应若干 VID。
你告诉设备:“发生哪个事件(CEID),就发送哪个报告(RPTID),报告里面包含这些变量(VID)”。
二、这些信息怎么告诉设备?——S2F33 与 S2F35
(1)S2F33:Define Report
告诉设备:RPTID=1 是哪些 VID 的组合
S2F33
- List of [RPTID, List of VIDs]例如:RPTID = 101
→ VIDs = [3001, 3002, 3003] // LOT_ID, PRODUCT_ID, EQP_STATE
用 SECS4NET 表示:
var rpt = List
(U2(101),List(U2(3001), U2(3002), U2(3003))
);
(2)S2F35:Link Event to Report
告诉设备:CEID = 1 时,请发哪个 RPTID
S2F35
- List of [CEID, List of RPTID]例如:CEID = 1 → [101]
CEID = 2 → [102]
var link = List
(U2(1),List(U2(101))
);
合起来就是:“事件编号1,绑定报告101,报告101包含变量[3001,3002,3003]”。
三、为什么要搞这么麻烦?
答:因为这是标准化的数据模型设计。
优点:
- 可复用(多个 CEID 可以复用同一个 RPTID)
- 可动态配置(主机可以随时修改要监听哪些事件)
- 可解耦(变量与事件分离)
更重要的是——每家设备厂定义的变量不同,但只要你理解这个机制,就能适配所有厂家的设备。
四、变量(VID)从哪里知道含义?
来自设备提供的 SDD(SEMI Data Dictionary) 文件,或者叫设备说明文档。
SDD 中会写明:
VID | 名称 | 类型 | 描述 |
---|---|---|---|
3001 | LOT_ID | A | 当前批次编号 |
3002 | PRODUCT_ID | A | 当前产品型号 |
3003 | EQP_STATE | U1 | 设备状态码 |
你要根据这些定义,知道怎么解析:
if (vid.ID == 3001) value = item.Value; // A
if (vid.ID == 3003) value = item.U1Value; // U1
五、如何写一个完整的定义流程(初始化时发送 S2F33/S2F35)
// 定义报告
var s2f33 = new SecsMessage(2, 33, "S2F33", true,List(List(List(U2(101), List(U2(3001), U2(3002))), // LOT + PRODUCTList(U2(102), List(U2(3003))) // EQP_STATE))
);// 绑定事件
var s2f35 = new SecsMessage(2, 35, "S2F35", true,List(List(List(U2(1), List(U2(101))), // Start LotList(U2(2), List(U2(102))) // Equipment State Changed))
);// 发送
await gem.SendAsync(s2f33);
await gem.SendAsync(s2f35);
六、小拓展:你可以通过主机自己“定制”想要的数据结构
设备通常在启动后什么都不会上报,只有你:
- 用 S2F33 告诉它你要哪些变量
- 用 S2F35 告诉它这些变量在什么事件下触发
这就让你的系统非常灵活。
第十讲 · 小结
名称 | 作用 |
---|---|
VID | 变量编号,比如 LOT_ID、EQ_STATE 等 |
RPTID | 报告编号,是 VID 的集合 |
CEID | 事件编号,表示设备的某个行为 |
S2F33 | 定义 RPTID 包含哪些 VID |
S2F35 | 绑定 CEID 与 RPTID |
SDD | 设备提供的变量说明文档 |
你已经搞懂了 SECS/GEM 的“变量结构模型”:
- 数据是从哪里来的?
- 怎么告诉设备我要这些数据?
- 怎么映射成业务逻辑?
下一讲预告:
第十一讲:GEM 控制接口详解——S1F13/S1F14 Online/Offline、S1F1/S1F2、S2F17/S2F18 DateTime 等等
主机不止能“收数据”,也能“控制设备”上线/下线、同步时间、请求状态等。马上开启新篇章。
说声“继续”,我们出发。