PLCSharp — 开源 PLC 风格上位机控制系统
最近在 GitHub 上发现了一个很有意思的开源项目——PLCSharp,一个基于 WPF/.NET 8 的 PLC 风格上位机软件,特此分享一下。
什么是 PLCSharp?
PLCSharp 是一套工业上位机控制系统,用户可以通过灵活配置硬件、界面、视觉工具、运动控制和编写工艺流程脚本,快速完成工业自动化项目的开发。
技术交流 QQ 群:109869009
界面展示
主界面可灵活设置,包括:

技术栈
项目使用了一套现代 .NET 技术栈:
| 技术 | 用途 |
|---|---|
| .NET 8 (net8.0-windows) | 运行时 |
| WPF + Prism.DryIoc | UI 框架 + MVVM 依赖注入 |
| OpenCvSharp4 | 机器视觉处理 |
| EF Core SQLite | 本地数据持久化 |
| Natasha | C# 动态编译(用于工艺流程脚本) |
项目架构
PLCSharp 的分层设计清晰合理:
| 层级 | 说明 |
|---|---|
| Core/ | 基础设施层:Prism 扩展、通用模型、工具类、自定义控件、图标字体 |
| Models/ | 全局数据模型:EF Core 数据库上下文、全局变量、导航状态 |
| VVMs/ | 业务模块(View-ViewModel 对):认证、主页、通讯、运动控制、视觉、工作流、配方、机器人 |
业务模块(VVMs)详解
- Authority — 用户认证与权限管理
- Connects — 通讯管理:支持 Modbus TCP/RTU、Socket、SerialPort
- MotionController — 运动控制:支持固高科技 EMC/SMC 系列板卡
- Vision — 机器视觉引擎:海康相机封装 + 视觉流程步骤处理器
- Workflows — 工作流引擎:流程步骤编排、条件分支、动态编译执行
- GlobalVariables — 全局变量管理:变量列表、编辑器、导入导出
- Recipe — 配方管理
- Robots — 机器人配置
核心亮点
1. 视觉流程引擎
PLCSharp 内置了一套完整的机器视觉流程引擎,采用策略模式设计:
- 图像获取:海康相机拍照、文件读取、全局/局部图像
- 图像处理:灰度化、阈值分割、通道拆分、坐标转换
- 视觉算法:卡尺寻边、卡尺找圆、卡尺找旋转矩形、ORB 特征匹配、两线交点检测
- ROI 绘制:内置 ImageEdit 控件,支持直线、圆、旋转矩形的拖拽绘制和调整
每种视觉工具对应一个独立的 Handler,新增算法只需添加枚举 + 实现接口,扩展性极强。
2. 运动控制
支持固高科技 EMC/SMC 系列运动控制板卡,提供轴配置、点位管理等完整功能,适合多轴联动控制场景。
3. 通讯管理
内置 Modbus TCP/RTU、Socket、SerialPort 等工业通讯协议,方便与 PLC、传感器、执行器等设备对接。
4. 工作流引擎
通过 Natasha 实现 C# 脚本的动态编译执行,支持工艺流程的步骤编排和条件分支,灵活应对不同的生产工艺。
适用场景
- 需要快速搭建工业视觉检测系统
- 替代传统 PLC + 触摸屏 方案的上位机开发
- 自动化设备的集成控制软件开发
- 学习 WPF + Prism + 机器视觉 的工业级项目参考
免责声明
项目作者特别声明:本项目仅用于学习交流,未经严格测试及安全认证,请勿用于实际生产环境,作者不对使用该软件所造成的任何直接和间接后果负责。
获取项目
- GitHub 仓库:https://github.com/wangLei0909/plcsharp
- 许可证:Apache-2.0
感兴趣的朋友可以 Star 关注一下,后续我也会尝试基于这个项目做一些二次开发和功能扩展。