# Qt工业级Modbus通信与数据采集平台 **Repository Path**: itboxin/P012 ## Basic Information - **Project Name**: Qt工业级Modbus通信与数据采集平台 - **Description**: 自研高可靠Modbus TCP/RTU通信中间件,基于 Qt 开发的工业级 Modbus TCP/RTU 通信与数据采集平台,面向工业物联网、设备监控、自动化产线与数据采集场景,提供稳定可靠的设备通信、实时采集、历史存储、报警联动、可视化看板、权限审计与远程接口能力。 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 9 - **Created**: 2026-03-20 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Qt工业级Modbus通信与数据采集平台 ## 项目简介 自研高可靠Modbus TCP/RTU通信中间件,基于 Qt 开发的工业级 Modbus TCP/RTU 通信与数据采集平台,面向工业物联网、设备监控、自动化产线与数据采集场景,提供稳定可靠的设备通信、实时采集、历史存储、报警联动、可视化看板、权限审计与远程接口能力。 ## 适用场景 - 工业物联网数据采集终端; - PLC、仪表、传感器、控制器 Modbus 数据采集; - 工厂自动化设备监控系统; - 能源、电力、水处理、环保、暖通等现场设备监控; - 串口服务器、工业网关、边缘采集盒子上位机; - 设备调试工具、协议测试工具、产线运维工具; - 工业数据可视化看板与历史追溯系统; - 高校、培训机构、企业内训中的 Qt/Modbus 工业项目实战案例。 ## 🔧使用技术栈 | 技术/框架 | 版本/模块 | 用途说明 | | --- | --- | --- | | C++ | C++11 | 项目核心开发语言,负责业务逻辑、通信调度、数据处理与桌面程序架构 | | Qt | Qt Widgets / Qt Core | 工业级桌面应用界面、事件驱动、对象模型、信号槽机制 | | Qt SerialBus | QModbusTcpClient / QModbusRtuSerialClient | 实现 Modbus TCP 与 Modbus RTU 主站通信能力 | | Qt SerialPort | QSerialPort / QSerialPortInfo | 串口枚举、串口参数配置、RTU 通信支持 | | Qt Network | QTcpServer / QTcpSocket | 内置远程 HTTP/JSON 服务接口,支持状态查询、远程读写控制 | | Qt SQL | QSqlDatabase / QSqlQuery | 历史采集数据持久化、查询与归档 | | Qt QML/JS | QJSEngine | 脚本扩展与表达式执行能力 | | Qt Resource | .qrc / ico / png | 图标、资源文件与程序界面资源管理 | | PowerShell | package_windows.ps1 | Windows 一键打包发布,集成 windeployqt 依赖部署 | ## ✨核心亮点 - 高可靠工业级通信:支持 Modbus TCP 与 Modbus RTU 两种主流工业协议接入方式,覆盖以太网设备、串口设备、网关设备与 PLC 场景。 - 稳定的数据采集机制:内置轮询任务管理,可按设备地址、寄存器类型、起始地址、采集数量与采集周期配置自动采集任务。 - 工业级可靠性保障:提供自动重连、心跳检测、连续失败告警、故障恢复状态通知等机制,适合长时间无人值守运行。 - 实时可视化展示:内置工业仪表盘 Dashboard 与实时曲线模块,可展示连接状态、轮询状态、采集时间、报警数量、通信日志与关键测点数据。 - 历史数据归档查询:通过 Qt SQL 持久化采集记录,支持按时间范围、站号、寄存器类型、起始地址进行历史查询。 - 报警规则管理:支持大于、小于、等于、不等于、区间内、区间外、位设置、位清除等多种报警条件,支持告警确认、历史记录与等级区分。 - 数据导出能力:支持采集数据缓存与 CSV 导出,便于报表分析、故障复盘、工艺数据留存与二次处理。 - 设备集中管理:支持多设备配置维护,包含 TCP/RTU 类型、通信地址、串口参数、超时、重试、轮询周期与归档标签。 - 安全权限控制:内置用户、角色、权限、API Token、远程写入开关、操作审计日志等安全机制,降低现场误操作风险。 - 远程接口服务:内置 TCP Server 形式的 HTTP/JSON 服务,可用于第三方系统读取运行状态、请求 Modbus 数据或执行受控写入。 - 插件化扩展架构:提供插件管理与插件接口,可扫描、加载、卸载、启停插件,并将采集数据与连接状态通知给插件。 - 脚本扩展能力:内置 QJSEngine 脚本引擎,支持加载脚本、执行函数、表达式计算与全局对象注入。 - 配置持久化:通过 QSettings 和 JSON 文件保存运行参数、设备列表、测点模型、模板配置、安全策略等信息。 - 工程化交付完善:项目包含用户手册、维护手册、版本发布说明、验收测试数据、产品实用化标准与 Windows 打包脚本。 ## 功能模块说明 ### 1. Modbus 主站通信 项目主窗口提供 Modbus 主站通信能力,支持: - Modbus TCP 客户端连接; - Modbus RTU 串口客户端连接; - 线圈、离散输入、输入寄存器、保持寄存器读写; - 单次读取、写入、读写组合操作; - 连接状态展示与错误信息反馈; - 串口自动枚举与参数恢复; - 写寄存器表格模型维护。 ### 2. 轮询采集管理 `PollManager` 负责周期性采集任务调度,核心能力包括: - 添加、删除、更新采集任务; - 启用或禁用单个轮询任务; - 一键启动/停止全部轮询; - 每个任务独立定时器调度; - 支持任务级报警阈值配置; - 触发采集请求与报警信号。 ### 3. 数据解析与导出 项目内置数据解析与导出模块,可用于现场采集数据的标准化处理: - 采集记录缓存; - 最大记录数限制; - CSV 文件导出; - 数据清空与记录数量统计; - 支持时间戳、站号、寄存器类型、起始地址、数据值等字段输出。 ### 4. 历史数据管理 `HistoryData` 模块提供历史数据存储与查询: - 打开/关闭数据库; - 创建历史数据表; - 添加采集记录; - 查询指定时间段数据; - 按站号、寄存器类型、地址过滤; - 查询最近记录; - 清理过期数据或清空全部历史。 ### 5. 实时图表与工业看板 项目提供实时图表与 Dashboard 两类可视化组件: - 实时曲线展示采集趋势; - 工业仪表盘展示关键测点; - 显示连接状态、轮询状态、最后更新时间、服务器地址与报警数量; - 通信日志与报警日志集中展示; - 仪表支持正常、警告、严重颜色状态。 ### 6. 报警管理 `AlarmManager` 提供完整的报警规则与事件管理: - 支持多种报警条件; - 支持 Info、Warning、Critical 多级报警; - 支持规则启停; - 支持报警确认与全部确认; - 支持活动报警、历史报警查询; - 支持防抖时间,减少现场抖动误报。 ### 7. 设备管理与模板管理 设备管理模块可集中维护工业现场设备: - 多设备配置; - TCP/RTU 类型区分; - 串口、波特率、校验位、数据位、停止位配置; - 响应超时与重试次数配置; - 设备连接、断开与错误状态记录; - 配置保存与加载。 设备模板模块可用于沉淀常见设备模型,减少重复配置工作。 ### 8. 远程服务接口 `RemoteServer` 基于 `QTcpServer` 提供轻量远程服务能力: - 启动/停止远程服务; - 监听指定端口,默认可使用 8080; - 提供 JSON 格式状态响应; - 支持远程读取请求; - 支持受控远程写入请求; - 支持 API Token 鉴权; - 支持与安全管理模块联动。 ### 9. 安全权限与审计 `SecurityManager` 负责系统安全策略: - 用户登录与退出; - 用户启用/禁用; - 角色权限管理; - 操作权限检查; - API Token 哈希校验; - 远程写入开关; - 写操作人员白名单; - 审计日志记录。 该模块适用于工业现场对写操作、远程操作、参数修改等高风险动作进行管控。 ### 10. 插件与脚本扩展 项目支持插件与脚本两种扩展方式: - 插件目录扫描; - 插件加载、卸载、重载; - 插件启用/禁用; - 插件配置保存; - 数据接收事件通知; - 连接状态变化通知; - JavaScript 脚本加载、执行与表达式计算。 适合扩展自定义协议转换、数据清洗、业务规则、第三方系统推送等能力。 ## 项目结构说明 ```text ├── master.pro # Qt qmake 项目配置文件 ├── main.cpp # 应用程序入口,初始化 Qt 应用与主窗口 ├── mainwindow.h/.cpp # 主窗口、Modbus 连接、读写操作、菜单与核心业务集成 ├── mainwindow_advanced.cpp # 高级功能入口与模块集成逻辑 ├── mainwindow.ui # 主窗口 UI 文件 ├── settingsdialog.h/.cpp/.ui # 通信参数与系统设置对话框 ├── writeregistermodel.h/.cpp # 写寄存器表格模型 ├── pollmanager.h/.cpp # 周期轮询采集任务管理 ├── dataexporter.h/.cpp # 数据缓存与 CSV 导出 ├── dataparser.h/.cpp # 采集数据解析处理 ├── realtimechart.h/.cpp # 实时曲线显示 ├── dashboard.h/.cpp # 工业看板与仪表盘组件 ├── historydata.h/.cpp # 历史数据存储、查询与清理 ├── alarmmanager.h/.cpp # 报警规则、报警事件与确认管理 ├── devicemanager.h/.cpp # 多设备连接配置与状态管理 ├── devicetemplate.h/.cpp # 设备模板管理 ├── scriptengine.h/.cpp # JavaScript 脚本扩展引擎 ├── remoteserver.h/.cpp # HTTP/JSON 远程服务接口 ├── plugininterface.h # 插件接口定义 ├── pluginmanager.h/.cpp # 插件扫描、加载、卸载与配置管理 ├── configprofile.h/.cpp # 配置方案保存与加载 ├── reliabilitymanager.h/.cpp # 自动重连、心跳、连续失败告警 ├── securitymanager.h/.cpp # 用户、角色、权限、Token、审计管理 ├── pointmodel.h/.cpp # 测点模型管理 ├── verificationmanager.h/.cpp # 验证与验收相关管理 ├── deliverymanager.h/.cpp # 交付相关管理 ├── crashlogger.h/.cpp # 崩溃日志与异常记录 ├── logviewer.h/.cpp # 日志查看窗口 ├── batchtaskmanager.h/.cpp # 批量读写任务管理 ├── master.qrc # Qt 资源文件 ├── images/ # 图标与图片资源 ├── deploy/package_windows.ps1 # Windows 一键打包脚本 ├── 用户手册.md # 用户使用说明 ├── 维护手册.md # 运维维护说明 ├── 版本发布说明.md # 版本说明与发布记录 ├── 功能验收测试数据.md # 功能验收测试数据 ├── 产品实用化标准.md # 工业实用化标准说明 └── 项目工业级功能完善清单.md # 工业级功能清单 ``` ## 效果截图 1. 项目主界面全景图 ![输入图片说明](2.png) 2. 通信参数设置 ![输入图片说明](3.png) 3. 日志查看器 ![输入图片说明](4.png) 4. 工业数据监控大屏 ![输入图片说明](5.png) 5. 报警配置与历史 ![输入图片说明](6.png) 6. 历史数据查询 ![输入图片说明](7.png) 7. 多设备管理 ![输入图片说明](8.png) 8. 点位管理 ![输入图片说明](9.png) 9. 自动化验证测试 ![输入图片说明](10.png) ## 📄开源协议 本项目采用 MIT License 开源协议,可自由学习、二次修改与非/商用,二次分发请保留原作者版权信息。 ## 📬关于作者 作者:绝顶哥 - C++ Qt 技术定位:45 岁资深 C++/Qt 开发者,专注高性能桌面应用、工业级自动化系统开发,深耕工业物联网、数据监控、设备通信领域实战项目。 欢迎 Star、Fork、关注!你的支持是持续更新优化的最大动力 💪