eis/src/zdsf/zdsf_readme.md

105 lines
3.5 KiB
Markdown
Raw Normal View History

# zdsf — DSF 数据流订阅接收器
## 概述
zdsf 是 EIS 系统中的 **DSFData 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 初始化、标签订阅、回调处理
```