# ECDS **Repository Path**: hactory/ecds ## Basic Information - **Project Name**: ECDS - **Description**: 能耗监测系统。该项目拟在开发一个基于本地的多采集器的QT上位机程序,测试硬件为基于Modbus的RS485传输协议,开发的构建环境QT6.8.2MinGW64-bit - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 2 - **Created**: 2025-03-08 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Qt, Cpp, 上位机程序 ## README # 能耗监测系统 ECDS ECDS(Energy Consumption Detection System)是一个基于 Qt 6 的能耗监测上位机程序。项目面向 RS485/Modbus RTU 采集设备,提供串口连接、寄存器轮询、实时数据展示、阈值告警、历史数据入库与导出等功能。 当前工程以 Windows + Qt 6.8.2 MinGW 64-bit 环境开发,使用本地 SQLite 数据库保存采集记录。 ## 功能概览 - 登录与权限:首次运行会自动创建默认用户 `admin/admin` 和 `user/user`。 - 能耗总概括:展示今日总能耗、当前功率、碳排放估算和设备告警状态。 - 能耗监控:按采集器和参数显示实时值,并绘制实时趋势曲线。 - 历史查询:按设备、时间范围查询本地数据库记录,支持删除、清空和导出。 - 数据分析:提供按日期、设备和能耗区间筛选的分析页面,部分分析能力仍在完善中。 - 系统配置:集中查看日志、接收数据、接收配置和发送配置的运行目录。 - 串口测试工具:配置串口参数,读取 Modbus 寄存器,维护接收配置和发送配置。 ## 技术栈 - Qt 6.8.2 - C++17 - Qt Widgets - Qt Serial Port - Qt Serial Bus / Modbus RTU - Qt SQL / SQLite - Qt Charts - Qt Multimedia - QCustomPlot - ActiveQt(用于原生 Excel 导出,仅 Windows 可用) ## 项目结构 ```text . ├── ECDS.pro # qmake 工程文件 ├── main.cpp # 程序入口 ├── mainwindow.* # 登录窗口 ├── work_window.* # 主功能窗口和页面切换 ├── ems_summary.* # 能耗总概括页面 ├── devicemonitor.* # 实时监控页面 ├── historypage.* # 历史查询和数据导出 ├── energydashboard.* # 数据分析页面 ├── serialtoolwidget.* # 串口/Modbus 工具页面 ├── modbuspoller.* # Modbus RTU 轮询 ├── modbusscanner.* # Modbus 地址扫描 ├── receive_processor.* # 接收配置解析和采集值处理 ├── databasemanager.* # SQLite 单例管理 ├── systemsettingspage.* # 系统配置页面 ├── Resource/ # 工程资源 ├── 项目说明配图/ # README 配图 └── build/ # 当前仓库内保留的示例构建输出和运行配置 ``` ## 构建与运行 1. 安装 Qt 6.8.2,并确保安装了 MinGW 64-bit、Qt Serial Port、Qt Serial Bus、Qt SQL、Qt Charts、Qt Multimedia、Qt 5 Compatibility 和 ActiveQt 组件。 2. 使用 Qt Creator 打开 `ECDS.pro`。 3. 选择 `Desktop Qt 6.8.2 MinGW 64-bit` 套件构建。 4. 运行前确认运行目录中包含以下文件或目录: - `settings/serial_port_settings.txt` - `Receive_config/*.txt` - `Send_config/*.txt` - `Resource/L_green.tiff` - `Resource/L_red.tiff` - `Resource/L_gray.tiff` - `Resource/L_yellow.tiff` - `Resource/alarm.wav` - `登录界面背景图.jpg` 仓库中的 `build/Desktop_Qt_6_8_2_MinGW_64_bit-Debug` 和 `build/Desktop_Qt_6_8_2_MinGW_64_bit-Release` 目录保留了可参考的运行配置。若重新构建后程序启动失败,优先检查运行目录中的配置文件和资源文件是否齐全。 ## 运行配置 ### 串口配置文件 默认路径: ```text settings/serial_port_settings.txt ``` 该文件保存串口和运行选项,例如: - 自动打开上次连接端口 - 上次连接端口 - 波特率 - 数据位 - 校验位 - 停止位 - 数据模拟 - 自动接收 - 自动保存到数据库 - 轮询周期 文件内容使用制表符分隔。程序退出时会覆盖保存当前配置。 ### 接收配置文件 默认路径: ```text Receive_config/01.txt ``` 接收配置用于描述采集器寄存器和业务字段的映射关系。当前示例包含电流、电压、有功功率、无功功率、视在功率、功率因数、电量、IO 状态、相序状态和频率等参数。 字段含义: | 字段 | 说明 | | --- | --- | | 寄存器位置 | Modbus 保持寄存器位置,多个寄存器用 `_` 连接 | | 编码方式 | 数据编码说明,当前主要用于备注 | | 实际倍率 | 原始寄存器值转换为实际显示值时乘以的系数 | | 单位 | 参数单位 | | 变量名 | 页面显示名称 | | 变量类型 | SQLite 字段类型 | | 数据库名 | 写入数据库时使用的字段名 | | 阈值 | 超过阈值后触发告警状态 | ### 发送配置文件 默认路径: ```text Send_config/01_03.txt ``` 发送配置保存需要周期发送的 Modbus 请求帧。示例内容为: ```text 01 03 00 00 00 28 45 D4 ``` ## 页面说明 ### 软件理论结构 ![软件理论结构](项目说明配图/理论结构.png) ### 外部理论结构 本项目使用本地 SQLite 数据库存储采集数据。数据库连接和查询逻辑见 `databasemanager.cpp`,历史数据建表与写入逻辑见 `historypage.cpp`。 ![外部理论结构](项目说明配图/理论结构2.png) ### 能耗总概括 该页面展示今日总能耗、当前功率、碳排放估算、24 小时趋势图和设备告警状态。当前总览页的统计精度和中部图表适配仍有待继续完善。 ![能耗总概括页面](项目说明配图/能耗总概括页面.png) ### 能耗实时监控 该页面会根据接收配置生成设备树和参数页面。每个参数都可以显示当前值、阈值、是否超限,并绘制实时曲线。 ![能耗实时监控页面](项目说明配图/能耗实时监控页面.png) ### 实时数据曲线 截图中的曲线来自数据仿真效果。实际接入采集设备后,程序会读取真实 Modbus 数据并更新实时曲线。 ![实时数据曲线](项目说明配图/实时数据曲线.png) ### 历史查询 历史查询基于本地 SQLite 数据库。程序会按采集器地址创建数据表,并支持按时间范围筛选、参数列显示控制、删除记录、清空记录,以及导出 CSV、HTML 和 Excel 文件。 ![历史查询页面](项目说明配图/历史查询页面.png) ### 串口测试工具 串口测试工具用于选择串口、配置波特率/数据位/校验位/停止位、打开或关闭 Modbus RTU 连接,并按周期读取寄存器数据。 ![串口配置工具页面](项目说明配图/串口配置工具页面.png) ### 配置文件示例 接收配置文件: ![接收配置文件](项目说明配图/接收配置文件.png) 串口配置文件: ![串口配置文件](项目说明配图/串口配置文件.png) ## 已知限制 - 能耗总概括页面的部分统计逻辑和图表适配仍在完善中。 - 数据分析页面已有基础 UI 和示例图表,完整统计分析逻辑仍需继续补齐。 - 原生 `.xlsx` 导出依赖 Windows COM 和本机 Microsoft Excel;不满足条件时可使用 CSV 或 HTML 导出。 - `ModbusScanner` 中存在硬编码串口示例,实际项目中建议改为复用界面选择的串口参数。 - 运行目录资源较多,重新构建或迁移程序时需要同步配置目录和运行资源。 ## 许可证 本项目使用 MIT License,详见 [LICENSE](LICENSE)。