# DotNetSCADA
**Repository Path**: smallcore/dot-net-scada
## Basic Information
- **Project Name**: DotNetSCADA
- **Description**: WPF + Prism 模块化工业设备监控与数据采集(SCADA)平台
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://mp.weixin.qq.com/s/E0pI5dKIAfxHA0Rigq7dTA
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 6
- **Created**: 2026-01-03
- **Last Updated**: 2026-01-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 设备监控, 数据采集, 上位机
## README
> 声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!
[ **WPF + Prism 模块化工业设备监控与数据采集(SCADA)平台** ](https://mp.weixin.qq.com/s/E0pI5dKIAfxHA0Rigq7dTA)
基于WPF与Prism框架的模块化工业设备监控与数据采集(SCADA)平台
基于WPF的工业监控系统,实现Modbus RTU设备数据异步轮询采集(温湿度/灯光)、实时曲线展示、阈值警告及SQL Server存储,采用MVVM设计模式+Prism框架+EF优化数据库操作,使用Timer定时器实现实时数据刷新、状态监控。
## 系统概述
本系统采用采用MVVM设计模式+Prism框架+EF优化数据库操作,结合Modbus RTU通信协议和SQL Server数据库,实现对工业设备的实时监控和数据管理。系统提供友好的用户界面,支持设备数据采集、状态控制、实时曲线展示和报警功能。
## 应用场景
- 该软件可以连接至生产线上的PLC或各种传感器,用于监控设备的工作状态,如电机温度、水箱液位、压力值等,WPF界面可以作为一个小型的监控中心(HMI),显示生产线的实时数据(如当前速度、产量、故障状态)。
## 技术栈
- **前端界面**: WPF (C#)
- **通信协议**: Modbus RTU (使用NModbus库)
- **数据库**: SQL Server + Entity Framework ORM框架
- **系统架构**: MVVM设计模式+Prism框架
## 功能特性
### 1. 系统登录
- 基于数据库的用户名密码验证机制
- 安全的登录验证流程
-
### 2. 设备数据采集
- 实时轮询采集设备温度、湿度、亮度状态
- 支持多从站设备通信
- 可配置串口通信参数(波特率、数据位、停止位、校验位)
-
### 3. 数据可视化
- 实时曲线展示温度、湿度变化趋势
- 设备状态直观显示(正常、高温、低温)
- 历史最高/最低温度记录显示
-
### 4. 设备控制
- 通过Modbus写线圈指令控制5盏LED灯状态
- 支持向设备寄存器写入文本指令(如"请检修")
- 实时反馈设备控制结果
-
### 5. 报警管理
- 可配置温度、湿度阈值
- 自动触发报警状态并记录
- 视觉报警提示(颜色变化)
-
### 6. 数据存储
- 使用Entity Framework优化数据库操作
- 设备数据表设计包含时间挫、当前温度、当前湿度、当前亮度
- 支持历史数据查询和导出
- 用户表信息
-
## 安装与部署
### prerequisites
- .NET Framework 4.7.2或更高版本
- SQL Server 2012或更高版本
- 支持Modbus RTU协议的设备或模拟器
### 安装步骤
1. 克隆或下载项目源代码
2. 使用Visual Studio打开解决方案文件(.sln)
3. 还原NuGet包依赖
4. 配置数据库连接字符串(在App.config中)
5. 执行数据库迁移或创建数据库表结构
6. 编译并运行项目
### 配置说明
1. 修改App.config中的数据库连接字符串
2. 配置串口通信参数(波特率、数据位、停止位等)
3. 设置设备从站地址和寄存器地址映射
4. 配置温度、湿度报警阈值
## 使用说明
1. **登录系统**: 输入正确的用户名和密码登录系统
2. **连接设备**: 配置串口参数并连接Modbus设备
3. **数据监控**: 查看实时数据曲线和设备状态
4. **设备控制**: 通过界面控制LED灯状态和发送文本指令
5. **报警管理**: 设置报警阈值并查看报警历史
## 开发注意事项
1. Modbus通信采用异步方式,避免UI线程阻塞
2. 数据库操作使用EF的异步方法提高响应性能
3. 采用依赖注入管理各层之间的依赖关系
4. 遵循三层架构设计原则,保持各层职责分离
## 许可证
本项目仅用于学习和研究目的,未经许可不得用于商业用途。
*注意:本项目需要配合Modbus RTU设备或模拟器使用,建议先使用Modbus模拟软件进行测试和开发。*
