前言
在工业自动化项目干了几年,发现上位机开发有很多重复工作。每个新项目都要重新写数据库连接、硬件通信、日志系统这些基础功能。有时候为了赶工期,代码质量也难以保证。后来决定把这些通用功能抽出来,做一个可复用的工业上位机框架。经过几个项目的验证,现在整理出来分享给大家,希望能帮到做同类开发的同行。
项目介绍
项目一个基于 .NET Framework 4.7.2 和WinForms 的工业 HMI 系统框架。定位是解决工业上位机开发中的常见问题,提供一套完整的基础架构。
包括全局变量管理、硬件通信、数据库操作、日志系统、MQTT 通信等核心功能。
项目已经在实际产线项目中运行,稳定性经过验证。代码结构清晰,文档完善,新项目可以直接在此基础上开发,不用重复造轮子。整个框架设计考虑了工业现场的特殊需求,比如自动重连、数据缓存、异常处理等。
项目功能
1、全局变量系统,提供零开销的单例服务访问,支持智能缓存减少数据库查询
2、硬件通信框架,完整实现 Modbus TCP 的 8 个功能码,支持通用 TCP 设备通信
3、数据库管理,使用 SQLite 存储生产数据、日志、告警、用户信息,支持自动备份和数据清理
4、MQTT 通信,实现 MES 系统报工和设备状态上报,支持自动重连
5、日志系统,支持六级日志输出,文件日志和数据库日志双存储,可实时查询过滤
6、权限管理,区分管理员和普通用户操作权限
7、生产统计,自动计算当日产量、良率等关键指标
项目特点
1、全局变量采用分层设计,分为核心层、业务层、扩展层,便于维护和扩展
2、数据库查询使用智能缓存,实测减少约 80% 的查询次数
3、硬件通信支持自动重连,网络波动时不会导致程序崩溃
4、日志分级输出,生产环境可以减少约 70% 的日志量
5、全局变量内存占用控制在 2KB 以内,对系统资源影响很小
6、提供可视化测试工具,方便调试硬件通信
7、文档完善,包含 6 份文档共 2600 多行,覆盖使用指南和架构说明
项目技术
技术栈方面,选择 .NET Framework 4.7.2 和 WinForms 主要考虑工业现场的兼容性。很多工控机还在用 Windows 7 或 Windows 10 旧版本,.NET Framework 4.7.2 支持范围更广。WinForms 虽然看起来有些老,但稳定性好,现场人员也熟悉。
硬件通信框架封装了 Modbus TCP 协议,8 个常用功能码都实现了。包括读线圈、读离散输入、读保持寄存器、读输入寄存器、写单线圈、写单寄存器、写多线圈、写多寄存器。通用 TCP 设备通信支持自定义协议,可以对接视觉系统、扫码枪等设备。
数据库用 SQLite,不需要单独安装数据库服务,部署方便。生产数据、日志、告警、用户信息都存在本地,支持自动备份和定期清理。MQTT 通信用于和 MES 系统对接,实现报工和设备状态上报。
全局变量系统设计比较关键,采用单例模式,访问开销降低了 33%。生产统计类数据自动缓存,避免频繁查询数据库。权限控制也集成在全局变量里,调用方便。
项目效果
在实际项目中应用下来,效果比较明显。以前每个新项目要花一周左右搭建基础框架,现在直接用这个框架,一两天就能完成基础功能配置。
系统主页
报警记录
运动控制
数据统计
数据看板
系统日志
视觉管理
项目源码
项目源码托管在 GitHub 上,可以直接克隆使用。
1、克隆仓库
2、环境要求
- Windows 10 或 11
- .NET Framework 4.7.2
- Visual Studio 2019 或 2022
3、项目结构
docs 目录存放完整文档,包括 Gvar 使用指南、硬件框架说明、迁移指南等
目录是主项目代码,包含全局变量、通用功能类、数据库、硬件通信等模块
Config.ini 是配置文件
4、使用示例
- 日志记录:Gvar.Logger.Info("操作成功")
- 数据库操作:Gvar.DB.ExecuteQuery("SELECT * FROM Users")
- 生产统计:Gvar.Production.TodayTotalCount
- 权限控制:if (Gvar.Permission.IsAdmin)
- Modbus 通信:new ModbusTcpDevice("192.168.1.10", 502)
- 通用 TCP:new GenericTcpDevice("192.168.1.20", 8000)
5、文档说明
项目包含 6 份文档,Gvar 快速参考卡片方便速查,Hardware 框架说明详细描述了通信架构,应用总结记录了优化过程和效果。
总结
这个框架算是把工业上位机开发中常用的功能都整合起来了。代码不算复杂,但胜在实用,经过实际项目验证。如果有类似需求可以直接拿去用,或者根据自己的项目调整。
工业软件开发和互联网产品不太一样,稳定可靠比功能花哨更重要。这个框架没有太多新技术,但都是现场真正用得上的功能。文档也写得比较详细,方便后续维护。
后续还计划增加一些功能,比如 OPC UA 通信支持、更完善的数据分析模块。也欢迎有兴趣的同行一起参与完善,让工业上位机开发能更高效一些。
最后提醒一下,使用之前建议先看看文档,特别是全局变量和硬件通信部分。生产环境部署前最好充分测试,确保符合项目需求。
关键词
工业 HMI、WinForms、上位机框架、Modbus TCP、全局变量、SQLite、MQTT、日志系统、自动化、C#
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!