前言
工业自动化和智能制造的快速发展,对设备运行状态的实时监控、数据采集与智能分析提出了更高要求。传统的人工巡检与静态监控方式已难以满足现代产线对高可靠性、低延迟响应和可视化管理的需求。一套轻量级、可扩展且易于部署的工业监控系统,成为中小型制造企业实现数字化转型的重要切入点。
本文推荐一个基于 WPF + Prism + Modbus RTU,开发的轻量级、模块化的 SCADA 平台,支持数据采集、实时可视化、设备控制与报警管理,为工业监控应用提供实用的技术参考。
项目介绍
本系统采用 MVVM 设计模式 + Prism 框架 + Entity Framework (EF) 优化数据库操作,结合 Modbus RTU 通信协议 和 SQL Server 数据库,实现对工业设备的实时监控与数据管理。
系统提供 WPF 用户界面,支持设备数据采集、状态控制、实时曲线展示、阈值报警 及历史数据存储。
项目技术
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
项目场景
项目功能
1、系统登录
基于数据库的用户名/密码验证。
安全登录流程,防止未授权访问。
2、设备数据采集
异步轮询采集温度、湿度、亮度数据。
支持 多从站设备(可配置从站地址)。
可动态配置 串口参数:波特率、数据位、停止位、校验位。
3、数据可视化
使用 LiveCharts 或 OxyPlot 实现 实时曲线图。
设备状态颜色标识:正常(绿色)、高温(红色)、低温(蓝色)。
显示历史最高/最低温度记录。
4、设备控制
通过 Modbus 写线圈(Write Coil) 控制 5 盏 LED 灯。
支持向保持寄存器写入文本指令(如 "请检修")。
控制结果实时反馈至 UI。
5、报警管理
可配置 温度/湿度报警阈值。
超限时自动触发 视觉报警(背景变色、弹窗提示)。
报警事件自动记录至数据库。
6、数据存储
使用 EF 异步方法(如 SaveChangesAsync)提升性能。
数据表结构包含:时间戳、温度、湿度、亮度。
支持 历史数据查询 与 Excel 导出。
用户信息独立存储于用户表。
安装与部署
前提条件
-
.NET Framework 4.7.2 或更高
-
SQL Server 2012+
-
支持 Modbus RTU 的物理设备或 Modbus 模拟器(如 Modbus Slave)
安装步骤
1、克隆或下载项目源码。
2、使用 Visual Studio 打开 .sln 解决方案。
3、还原 NuGet 包(含 Prism.Unity、NModbus4、EntityFramework 等)。
4、修改 App.config 中的 数据库连接字符串。
5、执行数据库初始化(Code First 迁移或手动建表)。
6、编译并运行项目。
配置说明
-
数据库连接:在
App.config中配置<connectionStrings>。 -
串口参数:在设置页面或配置文件中指定 COM 端口、波特率等。
-
设备映射:定义从站地址 → 寄存器地址(如温度=40001,湿度=40002)。
-
报警阈值:可在 UI 或配置文件中设置高温/高湿上限。
使用说明
1、登录系统:输入有效凭据进入主界面。
2、连接设备:选择 COM 口,点击"连接"建立 Modbus 通信。
3、监控数据:查看实时曲线与设备状态面板。
4、控制设备:点击 LED 开关或发送文本指令。
5、管理报警:设置阈值,查看报警日志。
开发注意事项
异步通信:Modbus 读写必须在后台线程执行,避免阻塞 UI。
EF 异步操作:所有数据库写入使用 async/await。
依赖注入:通过 Prism 的 ContainerRegistry 注册服务(如 IModbusService、IRepository)。
三层架构:严格分离 View / ViewModel / Model,ViewModel 不直接引用 View。
异常处理:串口断开、超时、CRC 错误需有容错机制。
项目源码
关键词
#WPF、#SCADA系统、#Prism模块化开发、#MVVM、#工业监控、#Modbus RTU通信、#NModbus、C#、#实时数据曲线、#阈值报警、#EF异步数据库、#HMI、 #人机界面、#工业物联网、#IIoT

