# MES_CSharp_Project **Repository Path**: DLGCY_Clone/MES_CSharp_Project ## Basic Information - **Project Name**: MES_CSharp_Project - **Description**: C#相关上位机项目、包含winform、WPF、运动控制上位机、机器视觉等实际项目。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-08-20 - **Last Updated**: 2026-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CSharp 上位机(MES_Hmi) #### 介绍 基于 .NET 8 (LTS) 的 C# 上位机解决方案,包含两种独立框架的上位机应用: - **WPF 上位机**(`src/Hmi.Wpf`):深色工业风界面,Tab 式设备连接面板 + 标签监控表格 - **WinForms 上位机**(`src/Hmi.WinForms`):经典 WinForms 界面,标签页设备管理 + DataGridView 实时监控 两个上位机**互不依赖、可独立构建**,共用底层的通讯类库。 #### 软件架构 ``` MES_CSharp_Project/ ├── MES_Hmi.sln └── src/ ├── Hmi.Communication/ # 共享通讯类库(net8.0) │ ├── Abstractions/ # IDeviceDriver 统一驱动抽象 │ ├── Models/ # TagValue / TagDataType / Quality 数据模型 │ ├── Drivers/ │ │ ├── Siemens/ # 西门子 S7 PLC(S7netplus) │ │ ├── Modbus/ # Modbus TCP / RTU(NModbus 3.x) │ │ └── OpcUa/ # OPC UA 客户端(OPCFoundation.NetStandard.Opc.Ua) │ └── DeviceManager.cs # 驱动注册与生命周期管理 ├── Hmi.Wpf/ # WPF 上位机(net8.0-windows) └── Hmi.WinForms/ # WinForms 上位机(net8.0-windows) ``` #### 通讯协议支持 | 协议 | 类库 | 地址格式示例 | |---|---|---| | 西门子 S7 | S7netplus | `DB1.DBD0`、`M100.0`、`Q0.0`、`I0.0` | | Modbus TCP | NModbus 3.x | `40001`(保持寄存器)、`30001`(输入寄存器)、`00001`(线圈)、`10001`(离散输入) | | Modbus RTU | NModbus 3.x(串口) | 同上 | | OPC UA | OPCFoundation.NetStandard.Opc.Ua | `ns=2;s=Tag1`(NodeId 字符串) | 统一通过 `IDeviceDriver` 接口读写标签,`DeviceManager` 集中管理驱动注册、连接状态与释放。 #### 安装教程 1. 安装 .NET 8 SDK(https://dotnet.microsoft.com/download/dotnet/8.0) 2. 还原并编译: ```powershell dotnet build MES_Hmi.sln ``` 3. 也可单独构建任一上位机: ```powershell dotnet build src/Hmi.Wpf/Hmi.Wpf.csproj dotnet build src/Hmi.WinForms/Hmi.WinForms.csproj ``` #### 使用说明 1. 运行任一上位机(`dotnet run --project src/Hmi.Wpf` 或 `src/Hmi.WinForms`) 2. 在设备连接页填入 IP/串口等参数,点击"连接" 3. 在标签区选择驱动、填写标签名称与地址、选择数据类型,点击"添加" 4. 点击"启动轮询"开始周期读取标签值(默认 1000ms) 5. 选中标签行并输入值,点击"写入"下发写操作 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request