# SCADA **Repository Path**: ligshan/scada ## Basic Information - **Project Name**: SCADA - **Description**: 同学们可以参考上位机采集实站项目。 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 27 - **Forks**: 14 - **Created**: 2025-07-04 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 🎯 项目概述 **WpfScanda** 是一个基于 **WPF + .NET 8** 开发的工业 **SCADA(数据采集与监控)系统**,专门用于工业自动化生产线的实时监控、数据采集、设备控制和生产管理。 本项目主要针对涂装生产线设计,提供完整的设备监控、数据采集、报警管理、报表生成等功能,适用于中小型工业自动化生产线的监控和管理需求。 ![输入图片说明](1.png) ![输入图片说明](2.png) ![输入图片说明](3.png) ## 🏗️ 技术架构 ### 核心技术栈 - **框架**: WPF (.NET 8.0 Windows) - **架构模式**: MVVM + Prism框架 - **UI设计**: Material Design主题 - **数据库**: MySQL + SqlSugar ORM - **通信协议**: HslCommunication (支持多种PLC通信) - **图表组件**: ScottPlot.WPF - **日志系统**: NLog - **依赖注入**: Microsoft.Extensions.DependencyInjection ### 项目结构 ``` WpfScanda/ ├── Core/ # 核心功能 │ └── NavigationViewModel.cs ├── Models/ # 数据模型 │ ├── EntityBase.cs │ ├── FormulaEntity.cs │ ├── Menu.cs │ ├── ReadEntity.cs │ └── ScadaReadData.cs ├── ViewModels/ # 视图模型 │ ├── ChartViewModel.cs │ ├── DataQueryViewModel.cs │ ├── DeviceViewModel.cs │ ├── FormulaViewModel.cs │ ├── HomeViewModel.cs │ ├── IndexViewModel.cs │ └── ShellViewModel.cs ├── Views/ # 用户界面 │ ├── ChartView.xaml │ ├── DataQueryView.xaml │ ├── DeviceView.xaml │ └── ... ├── Helpers/ # 工具类 │ ├── GlobalConfig.cs │ └── SqlSugarHelper.cs ├── Configs/ # 配置文件 │ ├── appsettings.json │ ├── TulingRead.xlsx │ └── TulingWrite.xlsx ├── Uc/ # 自定义控件 │ ├── Dialog.xaml │ ├── PaginationControl.xaml │ └── StatusIndicatorControl.xaml └── Style/ # 样式资源 └── TulingBtn.xaml ``` ## 🎛️ 核心功能模块 ### 1. 设备总控 (DeviceView) - **实时监控**: 设备运行状态、温度、压力等参数 - **设备控制**: 启动/停止、复位、空运行等操作 - **状态指示**: 可视化设备运行状态和报警信息 - **参数显示**: 实时显示各工位关键参数 ### 2. 配方管理 (FormulaView) - **配方配置**: 生产工艺参数设置 - **配方存储**: 数据库配方管理 - **配方切换**: 快速切换不同生产配方 - **配方编辑**: 支持配方参数修改和保存 ### 3. 数据查询 (DataQueryView) - **历史数据**: 生产数据查询和筛选 - **数据导出**: Excel格式数据导出 - **统计分析**: 生产数据统计和分析 - **条件筛选**: 按时间、设备、参数类型筛选 ### 4. 数据趋势 (ChartView) - **实时曲线**: 关键参数实时趋势图 - **历史趋势**: 历史数据趋势分析 - **多参数对比**: 多参数同时显示对比 - **图表交互**: 支持缩放、平移等交互操作 ### 数据采集内容 #### 控制信号 - 总启动/停止控制 - 机械复位/报警复位 - 空运行模式 - 各工位开关控制 #### 运行状态 - 各设备运行状态监控 - 变频器运行状态 - 风机运行状态 - 泵运行状态 #### 报警信息 - 设备故障报警 - 工艺异常报警 - 安全报警(煤气泄漏、温度超限) - 液位报警、过载报警 #### 生产数据 - 生产计数 - 不良品统计 - 生产节拍 - 累计报警次数 ## 🔌 通信配置 ### PLC通信 - **支持协议**: S7协议 (西门子S1200) - **通信参数**: - IP地址: 127.0.0.1 - 端口: 102 - 机架号: 0 - 槽号: 0 - **采集周期**: 100ms (可配置) - **自动重连**: 通信中断自动重连机制 - **超时设置**: 连接超时100ms ### 数据库配置 - **数据库类型**: MySQL - **ORM框架**: SqlSugar - **自动建表**: 系统启动时自动创建数据表 - **连接字符串**: 支持配置文件配置 ## ⚙️ 系统特色 ### 1. 现代化UI设计 - **Material Design**: 现代化扁平化设计风格 - **响应式布局**: 适配不同屏幕尺寸 - **主题切换**: 支持明暗主题切换 - **图标系统**: 丰富的Material Design图标 ### 2. 实时数据监控 - **高频率采集**: 100ms采集周期 - **实时显示**: 数据实时更新显示 - **历史存储**: 自动存储历史数据 - **数据缓存**: 高效的数据缓存机制 ### 3. 数据管理 - **Excel导入导出**: 支持Excel格式数据交换 - **数据备份**: 自动数据备份机制 - **日志管理**: 完整的系统操作日志 - **数据清理**: 自动数据清理策略 #### 配置文件设置 编辑 `Configs/appsettings.json`: ```json { "SqlParam": { "DbType": "MySql", "ConnectionString": "server=localhost;Database=scadawpf;Uid=scada_user;Pwd=your_password;AllowLoadLocalInfile=true" }, "PlcParam": { "PlcIp": "192.168.1.100", "PlcPort": 102, "PlcType": "S1200", "PlcRack": 0, "PlcSlot": 0, "PlcConnectTimeOut": 100, "PlcReConnectTime": 100, "PlcCycleInterval": 100, "AutoCollect": true, "AutoMock": false } } ``` ## 🔧 开发指南 ### 项目结构说明 - **Models**: 数据模型层,定义实体类和数据结构 - **ViewModels**: 视图模型层,处理业务逻辑和数据绑定 - **Views**: 视图层,用户界面定义 - **Helpers**: 工具类,提供通用功能支持 - **Core**: 核心功能,基础类和接口定义 ### 开发规范 1. **命名规范**: 使用PascalCase命名类和方法,camelCase命名变量 2. **代码注释**: 重要方法必须添加XML文档注释 3. **异常处理**: 所有外部调用必须进行异常处理 4. **日志记录**: 关键操作必须记录日志 5. **单元测试**: 核心业务逻辑需要编写单元测试 ### 扩展开发 1. **添加新模块**: 在Views和ViewModels中添加对应的视图和视图模型 2. **添加新设备**: 在Models中添加设备数据模型 3. **添加新功能**: 在Helpers中添加相应的工具类 4. **修改配置**: 在Configs中修改配置文件