96 lines
3.7 KiB
Markdown
96 lines
3.7 KiB
Markdown
|
|
# 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
|
|||
|
|
```
|