通讯管理机之数源系统(一)框架
更多内容点击边缘智联专栏一、功能概述数源系统是通讯管理机的核心数据子系统负责对接下端采集设备完成实时数据的采集、存储、查询和控制。主要包含以下五大功能功能模块说明配置加载从配置文件加载通道、设备、测点的完整描述信息建立内存数据模型数据采集通过可动态加载的协议驱动如 ModbusRTU与串口/网口/CAN 等链路下的现场设备进行周期性通讯获取实时遥测、遥信、遥脉数据数据查询提供以通道 → 设备 → 测点为路径的三级查询接口支持按 ID 或名称查找事件通知基于订阅模式当测点值发生变位或触发告警时主动推送给已注册的监测模块如数据转发、历史存储、告警服务等远程控制支持人工置数、遥控选、遥调等写值操作并支持闪开闪断、保持时间等高级控制模式二、整体架构2.1 层次结构数源系统采用七层递进的分层设计从上到下依次为┌─────────────────────────────────────────────┐ │ ① 统一入口层 │ │ 对外提供所有功能的单一访问入口 │ ├─────────────────────────────────────────────┤ │ ② 模块路由层 │ │ 接收上层调用分发给不同的数据子模块 │ ├──────────────┬──────────────┬────────────────┤ │ ③ 采集子模块 │ 自定义子模块 │ 系统子模块 │ ├──────────────┴──────────────┴────────────────┤ │ ④ 通道层 │ │ 每条通道 一个独立线程 一组设备 │ ├─────────────────────────────────────────────┤ │ ⑤ 设备层 │ │ 每个设备按测点类型分组管理命令块 │ ├─────────────────────────────────────────────┤ │ ⑥ 命令块层 │ │ 将同一协议命令的一组测点归并一次收发 │ ├─────────────────────────────────────────────┤ │ ⑦ 测点层 │ │ 单个测点的完整配置和实时值 │ └─────────────────────────────────────────────┘2.2 各层职责层次核心职责统一入口对外暴露加载、查询、置数、控制、事件订阅等全部 API内部通过单例确保全局唯一模块路由目前承载采集子模块的实例未来可扩展自定义模块、系统模块、数据池模块采集子模块读取配置解析通道-设备-测点树管理所有通道的启停通道继承线程基类每个通道独占一个线程负责动态加载协议驱动.so 共享库并持有该通道下的所有设备设备存储设备地址、超时时间、历史存储策略等配置按遥测/遥信/遥脉/遥控/遥调五类分组命令块命令块将一条协议命令如 Modbus 03 功能码所能读取的所有寄存器测点归为一个命令块驱动程序按块组帧一次收发批量更新测点存储名称、类型、单位、使能、系数Fk/Fb、位操作、计算公式、协议私有参数以及原始值和转换后的最终值2.3 测点类型系统支持六种工业场景标准测点类型测点类型中文名称说明YC遥测连续模拟量如温度、压力、流量YX遥信离散开关量如开关状态、告警信号YM遥脉脉冲累计值如电能、水量YK遥控远程控制输出如合闸/分闸YT遥调远程调节输出如设定值下发DEV设备变量设备自身的状态信息如通讯正常/异常2.4 关键设计要点a) 协议驱动动态加载每个通道以配置的方式指定协议驱动文件名如libModbusRTU.so运行时通过动态加载。驱动程序只需实现三个标准接口运行采集服务、销毁资源、控制测点。不同协议的驱动可独立编译、替换无需重新编译主程序。b) 每个通道一个线程每个通道对象继承自统一的线程基类启动后独立运行。线程内部由协议驱动控制采集节奏轮询设备 → 组帧 → 发送 → 等待响应 → 解析 → 更新测点值 → 检测变位/告警。c) 命令块批量收发同一设备下将同一条协议命令可读取的多个寄存器测点归并为一个命令块。采集时一条命令批量读取减少通讯次数提升采集效率。d) 原始值与转换值分离每个测点保留原始值协议直接返回的值和转换后的最终值。转换流程为原始值 → 系数换算×Fk Fb→ 位操作 → 公式计算 → 最终值。分离设计确保在取值过程中正在进行系数转换时不会读到中间状态。e) 事件订阅-通知模式变位事件和告警事件采用观察者模式。驱动程序检测到变化后将事件写入缓存最大 1000 条后立即返回不影响采集速度由独立线程定期消费缓存并推送给所有订阅者。告警支持上上限/上限/下限/下下限四级阈值和通讯中断类型每种告警有激活、恢复、确认三种状态。f) 控制操作的安全机制遥控操作遵循选择-执行两步流程先选择目标对象确认再执行控制命令。同时支持闪开闪断瞬时合闸后立即断开和保持时间保持特定时长后自动恢复两种高级模式。2.5 整体数据流┌─────────────┐ │ 配置文件 │ └──────┬──────┘ │ 加载解析 ▼ ┌────────────────────────┐ │ 内存数据模型 │ │ 通道 → 设备 → 测点 树 │ └───────────┬────────────┘ │ ┌─────────────────┼──────────────────┐ ▼ ▼ ▼ ┌──────────┐ ┌─────────────┐ ┌──────────────┐ │ 查询接口 │ │ 协议驱动采集 │ │ 控制下发接口 │ │ (读数据) │ │ (周期轮询) │ │ (写值/遥控) │ └──────────┘ └──────┬──────┘ └──────────────┘ │ ┌────────▼────────┐ │ 通讯链路驱动 │ │ COM / NET / CAN │ └────────┬────────┘ │ ┌────────▼────────┐ │ 现场设备 │ │ (PLC/RTU 等) │ └─────────────────┘