- EIS_README.md: Overall project architecture, data flow, service inventory - zmqp/zmqc_readme: ActiveMQ producer/consumer bridging ICE - zcache_readme: Data cache hub with address mapping and type conversion - zhd_readme: Real-time snapshot persistence to iHyperDB - zinit_readme: DB2-to-shared-memory initialization service - zsub/zudp/zdsf/rcv_readme: Data receiver layer for different on-site protocols
3.7 KiB
3.7 KiB
rcv — L1 电文接收与路由
概述
rcv 是 EIS 系统中的 L1 电文接收与路由分发器。它通过 ICE 接收来自 L1(一级自动化)系统的各种电文(telegram),根据电文号和事件类型将数据路由到对应的 L2 服务:数据缓存(zcache)、物料跟踪(ztrk/zmtr)。
进程架构
L1 系统 / znode / zsub
│
│ ICE HandleMessage(ByteSeq)
▼
┌──────────────────────────────────────────┐
│ rcv │
│ │
│ HandleMessage(ByteSeq) │
│ │ │
│ ├→ 解析 stru_recvtext7 结构 │
│ │ ├─ textbuf: 电文正文 │
│ │ ├─ textlenth: 电文长度 │
│ │ ├─ ctextno: 电文号 (TeleID) │
│ │ ├─ lineno: 回线号 │
│ │ └─ header: 报文头 │
│ │ │
│ ├→ TeleID < 2000 (排除1000): │
│ │ MemoryData(带4字节头) │
│ │ │
│ └→ TeleID >= 2000 或 =1000: │
│ MemoryData(仅 textbuf) │
│ │
│ MemoryData() │
│ │ │
│ ├→ EV_TRK_SIGNAL (跟踪信号): │
│ │ ├→ ztrk_proxy (区域跟踪) │
│ │ └→ zmtr_proxy (物料跟踪) │
│ │ │
│ └→ 其他事件: │
│ └→ zcache_proxy (数据缓存) │
│ │
└──────────────────────────────────────────┘
核心职责
电文路由
rcv 不做数据解析,而是按电文类型做纯路由:
| 电文类型 | 目标 | 用途 |
|---|---|---|
| 跟踪信号 | ztrk + zmtr |
带钢位置跟踪和物料信息跟踪 |
| 其他所有 | zcache |
通用 PLC 数据缓存 |
L1-L2 桥接
rcv 是 L1(设备控制层)和 L2(过程控制层)之间的关键桥接点。代码历史中保留了大量 L1-L2 电文路由的注释,包括:
- 跟踪初始化电文
- 入口/轧机/炉区/酸洗/出口各段的周期数据电文
- PDI/PDO 数据电文
- 称重数据电文
- 辊子性能电文
- 锌层厚度电文
这些历史路由已被简化,当前大多数电文统一转发到 zcache 进行处理。
ICE 接口
服务端(接收调用)
| 方法 | 说明 |
|---|---|
HandleMessage(ByteSeq) → ByteSeq |
同步请求-响应模式,接收电文并返回相同数据(echo) |
客户端(代理调用)
| 代理 | 用途 |
|---|---|
baosight/zcache |
通用数据缓存 |
baosight/ztrk |
区域跟踪 |
baosight/zmtr |
物料跟踪 |
现场适用场景
rcv 是 EIS 系统中最通用的数据入口,适用于通过 iXcomTCP2 协议接收 L1 电文的场景。它作为 L1-L2 的电文调度中心,将所有到达的电文按类型分发给正确的 L2 服务。
源文件
src/rcv/
├── RcvBase.cpp # PACE 组件入口 + ICE 代理初始化 + HandleMessage
├── RcvCus.cpp # MemoryData() 电文路由逻辑
└── makefile