<p align="center">
  <h1 align="center">🔧 VisionMES Pro</h1>
  <p align="center"><strong>工业视觉检测制造执行系统 (WPF版)</strong></p>
  <p align="center">
    <img src="https://img.shields.io/badge/.NET-8.0-blueviolet" alt=".NET 8.0"/>
    <img src="https://img.shields.io/badge/WPF-工业版-blue" alt="WPF"/>
    <img src="https://img.shields.io/badge/OpenCV-4.13-brightgreen" alt="OpenCV"/>
    <img src="https://img.shields.io/badge/MVVM-Architecture-orange" alt="MVVM"/>
    <img src="https://img.shields.io/badge/Version-2.0-red" alt="Version"/>
  </p>
</p>

---

## 📖 项目简介

**VisionMES Pro** 是一款基于 **WPF (.NET 8.0)** 开发的工业级视觉检测制造执行系统（MES）桌面客户端。系统将 **机器视觉检测** 与 **制造执行管理** 深度融合，面向产线质检场景，提供从设备监控、视觉检测、生产管理到统计分析的全流程解决方案。

### ✨ 核心特性

- 🔍 **视觉检测** — 集成 OpenCV 图像处理，支持实时相机采集、缺陷检测、模板匹配
- 📊 **设备监控** — 实时监控 PLC 设备状态，支持 Modbus TCP 通信协议
- 📋 **MES 生产管理** — 工单管理、产品管理、生产进度追踪
- 🚨 **报警中心** — 实时报警推送、报警记录查询与统计
- 📈 **统计分析** — 良率趋势、产量统计、可视化图表（LiveCharts）
- 📺 **生产看板** — 大屏展示生产数据、实时产量与良率
- 📝 **检测记录** — 完整的检测数据记录，支持 Excel 报表导出
- 🔐 **权限管理** — 多角色权限控制（Admin / Engineer / Operator）
- 🎨 **工业深色主题** — 专为工业环境设计的暗色 UI，护眼且专业

---

## 🏗️ 系统架构

```
┌─────────────────────────────────────────────────────────┐
│                    VisionMES Pro WPF                     │
│                      (表现层)                             │
├──────────┬──────────┬──────────┬────────────────────────┤
│  Views   │ViewModels│Converters│  Themes / Resources    │
├──────────┴──────────┴──────────┴────────────────────────┤
│                                                          │
│  ┌──────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │ VisionMESPro │  │VisionMESPro  │  │VisionMESPro   │  │
│  │    .BLL      │  │   .Models    │  │  .Common      │  │
│  │  (业务逻辑层) │  │  (实体模型层) │  │  (公共工具)    │  │
│  └──────────────┘  └──────────────┘  └───────────────┘  │
│                                                          │
│  ┌──────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │VisionMESPro  │  │VisionMESPro  │  │VisionMESPro   │  │
│  │    .DAL      │  │.Communication│  │   .Vision     │  │
│  │  (数据访问层) │  │  (通信层)     │  │  (视觉处理层)  │  │
│  └──────────────┘  └──────────────┘  └───────────────┘  │
└─────────────────────────────────────────────────────────┘
           │                    │               │
     ┌─────┴─────┐       ┌─────┴─────┐   ┌─────┴─────┐
     │ SQL Server│       │PLC (Modbus)│   │ Camera    │
     │ Database  │       │  TCP 502   │   │(OpenCV)   │
     └───────────┘       └───────────┘   └───────────┘
```

---

## 📁 项目结构

```
VisionMESPro.Wpf/
├── App.xaml / App.xaml.cs          # 应用程序入口
├── Config/
│   └── appsettings.json            # 数据库连接 & PLC 配置
├── Converters/
│   └── Converters.cs               # XAML 值转换器集合
├── Services/                        # 服务层（预留）
├── Themes/
│   └── IndustrialDark.xaml          # 工业深色主题样式（20000+ 行）
├── ViewModels/                      # MVVM ViewModel 层
│   ├── ViewModelBase.cs             # INotifyPropertyChanged 基类
│   ├── RelayCommand.cs              # ICommand 实现
│   ├── MainWindowViewModel.cs       # 主窗口（导航、PLC轮询、时钟）
│   ├── LoginViewModel.cs            # 登录认证
│   ├── DeviceMonitorViewModel.cs    # 设备状态监控
│   ├── VisionInspectViewModel.cs    # 视觉检测（核心）
│   ├── MESViewModel.cs              # MES 数据管理
│   ├── AlarmRecordViewModel.cs      # 报警记录
│   ├── InspectionRecordViewModel.cs # 检测记录
│   ├── StatisticsViewModel.cs       # 统计分析
│   ├── DashboardViewModel.cs        # 生产看板
│   ├── ProductManagerViewModel.cs   # 产品管理
│   ├── UserManagerViewModel.cs      # 用户管理
│   └── SystemConfigViewModel.cs     # 系统配置
└── Views/                           # XAML 视图层
    ├── LoginWindow.xaml(.cs)        # 登录窗口
    ├── MainWindow.xaml(.cs)         # 主窗口（左侧导航栏）
    ├── DeviceMonitorWindow.xaml     # 设备监控
    ├── VisionInspectWindow.xaml     # 视觉检测界面
    ├── MESWindow.xaml               # MES 数据管理
    ├── AlarmRecordWindow.xaml       # 报警记录
    ├── InspectionRecordWindow.xaml  # 检测记录
    ├── StatisticsWindow.xaml        # 统计分析
    ├── DashboardWindow.xaml         # 生产看板
    ├── ProductManagerWindow.xaml    # 产品管理
    ├── UserManagerWindow.xaml       # 用户管理
    └── SystemConfigWindow.xaml      # 系统配置
```

---

## 🛠️ 技术栈

| 类别 | 技术 | 说明 |
|------|------|------|
| **框架** | .NET 8.0 + WPF | 现代 Windows 桌面应用框架 |
| **架构模式** | MVVM | Model-View-ViewModel 分层架构 |
| **视觉处理** | OpenCvSharp4 4.13 | 计算机视觉与图像处理 |
| **图表可视化** | LiveCharts2 (SkiaSharp) | 统计图表绘制 |
| **报表导出** | ClosedXML 0.104 | Excel (.xlsx) 报表生成 |
| **PLC 通信** | Modbus TCP | 工业设备通信协议 |
| **数据库** | SQL Server | 生产数据持久化 |
| **主题** | 自定义 IndustrialDark | 工业深色主题，20000+ 行 XAML 样式 |

---

## ⚡ 快速开始

### 环境要求

- **操作系统**: Windows 10 / 11 (x64)
- **开发工具**: Visual Studio 2022+ 或 JetBrains Rider
- **运行时**: .NET 8.0 SDK
- **数据库**: SQL Server (LocalDB 或 Express)
- **相机**（可选）: USB 工业相机 / 网络相机

### 安装与运行

```bash
# 1. 克隆仓库
git clone https://gitee.com/hopefully-2023/vision-meso-wpf-version.git

# 2. 进入项目目录
cd vision-meso-wpf-version

# 3. 还原 NuGet 包
dotnet restore

# 4. 编译项目
dotnet build

# 5. 运行
dotnet run
```

### 配置说明

编辑 `Config/appsettings.json`：

```json
{
  "Database": {
    "ConnectionString": "Server=(local)\\SQLEXPRESS;Database=VisionMESPro;Trusted_Connection=True;TrustServerCertificate=True"
  },
  "PLC": {
    "IP": "127.0.0.1",
    "Port": 502
  }
}
```

---

## 📸 功能模块

### 🔐 登录系统
支持多角色登录认证，不同角色拥有不同的系统访问权限。

| 角色 | 设备监控 | 视觉检测 | MES数据 | 报警/记录 | 统计分析 | 系统设置 |
|------|:--------:|:--------:|:-------:|:---------:|:--------:|:--------:|
| Admin | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Engineer | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Operator | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ |

### 🔍 视觉检测
- 实时相机画面采集
- OpenCV 图像处理与缺陷检测
- 检测结果可视化展示
- 检测数据自动记录

### 📊 设备监控
- PLC 设备实时状态监控
- Modbus TCP 通信
- 设备在线/离线状态指示
- 2秒轮询心跳检测

### 📈 统计分析
- 良率趋势图（绿色 ≥95%、橙色 ≥90%、红色 <90%）
- 产量统计柱状图
- 检测数据分析

### 📺 生产看板
- 大屏展示生产数据
- 实时产量与良率
- 当前工单信息

---

## 🖥️ 系统界面截图

### 🔐 登录界面
> 支持多角色登录认证，简洁工业风格的登录表单

![登录界面](docs/screenshots/登录界面.png)

### 🏠 主界面
> 左侧导航栏 + 顶部状态栏，实时显示 PLC 状态、当前工单、登录用户与时钟

![主界面](docs/screenshots/主界面.png)

### 📊 设备监控
> 实时 PLC 设备状态监控，Modbus TCP 通信，设备在线/离线指示灯

![设备监控](docs/screenshots/设备监控.png)

### 🔍 视觉检测
> OpenCV 实时相机画面采集与缺陷检测，检测结果可视化展示

![视觉检测](docs/screenshots/视觉检测.png)

### 📋 MES数据
> 工单管理与生产数据录入，支持工单选择与生产进度追踪

![MES数据](docs/screenshots/MES数据.png)

### 📦 产品管理
> 产品信息维护与管理，支持产品增删改查

![产品管理](docs/screenshots/产品管理.png)

### 🚨 报警中心
> 实时报警推送与历史报警记录查询，便于快速定位异常

![报警中心](docs/screenshots/报警中心.png)

### 📝 检测记录
> 完整的检测数据记录与查询，支持 Excel 报表导出

![检测记录](docs/screenshots/检测记录.png)

### 📈 统计分析
> 良率趋势图与产量统计，LiveCharts 可视化数据分析

![统计分析](docs/screenshots/统计分析.png)

### 📺 生产看板
> 大屏展示实时产量、良率与当前工单信息，适合产线悬挂展示

![生产看板](docs/screenshots/生产看板.png)

### 👤 用户管理
> 用户账号增删改查与角色权限分配（Admin / Engineer / Operator）

![用户管理](docs/screenshots/用户管理.png)

### ⚙ 系统设置
> 数据库连接、PLC 通信地址等系统参数配置

![系统设置](docs/screenshots/系统设置.png)

---

## 📌 注意事项

> ⚠️ **本项目为 WPF 客户端部分**，依赖以下后端项目（以项目引用方式集成）：
>
> - `VisionMESPro.BLL` — 业务逻辑层
> - `VisionMESPro.DAL` — 数据访问层
> - `VisionMESPro.Models` — 实体模型
> - `VisionMESPro.Common` — 公共工具库
> - `VisionMESPro.Communication` — 通信层（PLC 等）
> - `VisionMESPro.Vision` — 视觉处理层
>
> 完整运行需要将这些项目放置在同级目录下。

---

## 📄 许可证

本项目仅供学习与内部使用。

---

<p align="center">
  Made with ❤️ for Industrial Automation
</p>
