WinForms 工业 HMI 上位机框架,Modbus TCP + MQTT 都搞定了

0 阅读6分钟

前言

在工业自动化项目干了几年,发现上位机开发有很多重复工作。每个新项目都要重新写数据库连接、硬件通信、日志系统这些基础功能。有时候为了赶工期,代码质量也难以保证。后来决定把这些通用功能抽出来,做一个可复用的工业上位机框架。经过几个项目的验证,现在整理出来分享给大家,希望能帮到做同类开发的同行。

项目介绍

项目一个基于 .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技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!

声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!