eis/src/rcv/rcv_readme.md

96 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

# 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
```