105 lines
3.5 KiB
Markdown
105 lines
3.5 KiB
Markdown
|
|
# zdsf — DSF 数据流订阅接收器
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
zdsf 是 EIS 系统中的 **DSF(Data Stream Framework)数据流订阅接收器**。它通过宝信 DSF SDK(`libdsfapi`)连接到 DSF 服务器,以命名标签方式订阅实时数据(支持指定采样频率),接收后按遥测配置组装数据并通过 ICE 转发。
|
|||
|
|
|
|||
|
|
## 进程架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
DSF 服务器 (tcp, 主/备)
|
|||
|
|
│
|
|||
|
|
│ DSF SDK 订阅回调
|
|||
|
|
▼
|
|||
|
|
┌──────────────────────────────────────────┐
|
|||
|
|
│ zdsf │
|
|||
|
|
│ │
|
|||
|
|
│ DsfInit() │
|
|||
|
|
│ │ │
|
|||
|
|
│ ├→ 从 config/dsfconfig.json 读取配置 │
|
|||
|
|
│ ├→ DRSdkConnectParam 初始化连接 │
|
|||
|
|
│ ├→ 读数据库 BinaryTele 遥测配置 │
|
|||
|
|
│ ├→ 订阅标签 (tag 或 struct 模式) │
|
|||
|
|
│ └→ 注册回调 (采样频率 ms) │
|
|||
|
|
│ │
|
|||
|
|
│ recvCallBack(tagNames, tagValues) │
|
|||
|
|
│ │ │
|
|||
|
|
│ ├→ tag模式: 顺序拷贝值到缓冲区 │
|
|||
|
|
│ ├→ struct模式: 按名称匹配 │
|
|||
|
|
│ ├→ ReBuild 重建遥测结构 │
|
|||
|
|
│ ├→ ICE 转发到配置的代理 │
|
|||
|
|
│ └→ eventNo=1002: 额外转发到 eqpm │
|
|||
|
|
│ │
|
|||
|
|
└──────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 核心特性
|
|||
|
|
|
|||
|
|
### 命名标签订阅
|
|||
|
|
|
|||
|
|
与 zsub(基于地址的订阅)不同,zdsf 支持**按标签名订阅**,更加灵活:
|
|||
|
|
|
|||
|
|
- **tag 模式**: 按 FDA item 名映射到 DSF 标签名
|
|||
|
|
- **struct 模式**: 从 JSON 配置数组中读取变量名列表
|
|||
|
|
|
|||
|
|
### 采样频率控制
|
|||
|
|
|
|||
|
|
支持配置订阅的采样频率(毫秒级),实现按需采样,避免不必要的数据洪流。
|
|||
|
|
|
|||
|
|
### 回调处理
|
|||
|
|
|
|||
|
|
数据到达时通过 DSF SDK 回调 `recvCallBack()` 处理,使用 `mutex` 保证线程安全。
|
|||
|
|
|
|||
|
|
## 订阅配置
|
|||
|
|
|
|||
|
|
从 `$CRGS/config/dsfconfig.json` 读取,按服务名 `sub_node[service_name]` 索引:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"server": {
|
|||
|
|
"ip": "10.64.3.20",
|
|||
|
|
"port": 1234,
|
|||
|
|
"timeout": 5000,
|
|||
|
|
"threadpool": 10,
|
|||
|
|
"heartbeat": 60
|
|||
|
|
},
|
|||
|
|
"sub_node": {
|
|||
|
|
"zdsf": {
|
|||
|
|
"mode": "tag",
|
|||
|
|
"frequency_ms": 100,
|
|||
|
|
"tags": ["tag1", "tag2", "..."]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 与其它接收器对比
|
|||
|
|
|
|||
|
|
| 方面 | zsub | zudp | zdsf |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| 协议 | TCP 订阅 | UDP 广播 | DSF SDK |
|
|||
|
|
| 寻址方式 | 地址电文 | IP:Port | 命名标签 |
|
|||
|
|
| 数据解析 | 解析信号名/值 | 不解析 | 按标签名匹配 |
|
|||
|
|
| 采样频率 | 服务端推送 | 服务端推送 | 客户端可配置 |
|
|||
|
|
| 灵活性 | 中 | 低 | 高 |
|
|||
|
|
|
|||
|
|
## ICE 接口
|
|||
|
|
|
|||
|
|
| 方法 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `Init` | DSF 连接初始化 |
|
|||
|
|
| `regist` | 标签订阅注册 |
|
|||
|
|
| `recvCallBack` | DSF 数据回调 |
|
|||
|
|
|
|||
|
|
## 现场适用场景
|
|||
|
|
|
|||
|
|
zdsf 适用于**已部署 DSF 数据平台的现代化现场**,通过命名标签灵活订阅所需数据,支持精确的采样频率控制,无需解析复杂的电文协议。
|
|||
|
|
|
|||
|
|
## 源文件
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
src/zdsf/
|
|||
|
|
├── dsf.cpp # PACE 组件入口
|
|||
|
|
└── DsfRcv.cpp # DSF 初始化、标签订阅、回调处理
|
|||
|
|
```
|