eis/src/zdsf/zdsf_readme.md
Huamonarch 09b48b07e5 Add READMEs for all infrastructure services and overall project
- 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
2026-05-09 12:13:00 +08:00

3.5 KiB
Raw Blame History

zdsf — DSF 数据流订阅接收器

概述

zdsf 是 EIS 系统中的 DSFData Stream Framework数据流订阅接收器。它通过宝信 DSF SDKlibdsfapi)连接到 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] 索引:

{
  "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 初始化、标签订阅、回调处理