当前位置: 首页 > news >正文

通讯管理机之数源系统(一)框架

更多内容点击:边缘智联专栏

一、功能概述

数源系统是通讯管理机的核心数据子系统,负责对接下端采集设备,完成实时数据的采集、存储、查询和控制。主要包含以下五大功能:

功能模块说明
配置加载从配置文件加载通道、设备、测点的完整描述信息,建立内存数据模型
数据采集通过可动态加载的协议驱动(如 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 等) │ └─────────────────┘

http://www.cnnetsun.cn/news/2853392.html

相关文章:

  • 一个人就是一家公司:200+ AI 专家自动协作,帮你搞定研发、运营和营销
  • 简单易用的进销存该怎么选?分清真易用与功能极简陷阱(2026行业权威标准)
  • js中不会冒泡的事件有哪些?
  • Hybrid AI应用架构设计——WebView+LLM混合开发实践
  • 茶馆主题H5前端静态包|uni-app编译生成,2020风格UI,开箱即用
  • 协议碎片化与性能瓶颈破局:WVP-GB28181-Pro分布式视频管理平台架构深度解析
  • AlistHelper:告别命令行,用图形界面轻松管理Alist文件服务
  • Paperxie 工科代码辅助:AI 一键匹配论文需求生成完整工程源码
  • 【学术干货】清华团队发布RWAI框架:让AI从“能做“到“能落地“,产业应用效率提升50%
  • 线上 Bug 排查与修复实录
  • Android 权限请求构建器使用指南
  • 中小企业做GEO的投入和产出怎么算——从成本、时间线和效果三个方向来看
  • Windows苹果触控板终极指南:免费实现原生级触控体验的完整教程
  • 2026年医学文献AI解读工具热门平台盘点:当循证决策成为医生工作流的新标配
  • 涉及内存指针位运算例题摘要
  • 前端八股文面经大全:美团前端暑期实习一面(2026-06-08)·面经深度解析
  • 汕头项目经理,高考后干了3年工地,最后选了室内设计培训,现在自己接项目
  • 如何在AI+iPaaS平台上创建自动化工作流?
  • 【JAVA毕设源码分享】基于springboot综合性旅游服务系统(程序+文档+代码讲解+一条龙定制)
  • Agent与工具调用 - 问题与解决方案
  • LeetCode 128 最长连续序列:从暴力枚举到 O (n) 最优解法全解析
  • 硅谷AI泡沫下:创始人、投资人、工程师各有押注,泡沫逼出五个新判断
  • 食品里虫子尸体投诉赔偿谈不拢,品牌口碑管理里异物处理SOP怎么执行
  • webrtc 音频模块FEC模块
  • 宝塔和云效webhook配置
  • Typora插件开发指南:打造专属IDE式写作环境
  • 涡喷发动机及其延伸应用(二)
  • 01-PyTorch加载数据初认识(dataset运用)
  • 端口协议和rtl的对应
  • 英国首相计划下周宣布新政策:禁止16岁以下儿童用社交媒体,防儿童收发裸照