3、HMI软件架构:组态软件的概念、运行时系统与开发环境、固件与操作系统
好,咱们今天聊聊HMI的软件架构。说实话,很多工程师做了好几年HMI项目,对这块的理解还是模模糊糊的。你问他组态软件和运行时系统有什么区别,他可能说不上来。这其实挺要命的——搞不清架构,出了问题你都不知道该找谁。
我个人习惯,把HMI软件架构拆成三层来看:开发环境、运行时系统、还有底层的固件与操作系统。这三层各司其职,又紧密配合。咱们一层一层说。
3.1 组态软件的概念
组态软件,说白了就是「画界面、配逻辑」的工具。你想想看,一个HMI项目,从零开始写代码?那得写到猴年马月去。组态软件就是让你用拖拽、配置的方式,快速把界面搭起来。
我在项目中遇到过一件事:有个客户非要自己用C#写HMI,折腾了三个月,界面丑不说,通讯还老断。后来我建议他换成组态软件,一周就搞定了。嗯,这就是组态软件的价值——把工程师从底层编码中解放出来。
核心概念:组态软件 = 可视化开发工具 + 通讯协议库 + 脚本引擎。它不生成独立的可执行文件,而是生成一个「工程文件」,交给运行时系统去解释执行。
常见的组态软件有哪些?我列个表,大家心里有个数:
| 软件名称 | 厂商 | 特点 |
|---|---|---|
| WinCC | 西门子 | 与S7系列PLC无缝集成,生态完善 |
| Intouch | 施耐德 | 老牌组态软件,驱动丰富 |
| 组态王 | 亚控 | 国产代表,性价比高 |
| MCGS | 昆仑通态 | 嵌入式HMI常用,轻量级 |
3.2 运行时系统与开发环境
这两个概念容易混淆,我重点说一下。
开发环境,就是你装在自己电脑上的那个软件。用来画图、写脚本、配变量、调试通讯。它生成一个工程文件,后缀名可能是.pdb、.mcg、.apj之类的。
运行时系统,是跑在HMI硬件上的那个程序。它负责读取工程文件,然后解释执行——把画面渲染出来,把变量刷新上去,把通讯跑起来。
为什么会这样设计?我刚开始做HMI时也觉得奇怪,为什么不能直接生成一个exe?后来明白了:运行时系统是通用的,工程文件是专用的。同一套运行时,可以加载不同的工程文件。这样你换项目时,只需要换工程文件,不用重新烧写整个系统。
一个小技巧:调试时,很多组态软件支持「模拟运行」模式。就是在你的开发电脑上直接启动一个本地运行时,不用连真机也能看到效果。我建议你养成习惯,每改一个画面就模拟跑一下,别等到下载到设备上才发现问题。
开发环境和运行时系统的关系,我用一张图来说明:
3.3 固件与操作系统
这一层离应用最远,但恰恰是最容易出问题的。我曾经在一个项目上吃过亏——HMI频繁死机,查了三天,最后发现是固件版本和运行时系统不匹配。从那以后,我每次做项目都会先确认固件版本。
固件是什么?它是烧录在HMI硬件里的底层程序。包括:
- Bootloader:上电后最先运行,负责引导操作系统启动
- 硬件驱动:触摸屏、LCD、以太网、串口……这些外设的驱动
- 文件系统:用来存储工程文件、历史数据、配方等
操作系统的选择,直接影响HMI的稳定性和实时性。目前主流的有三种:
- Linux:开源、灵活,中高端HMI用得最多。我建议你熟悉一下Linux的基本命令,调试时会方便很多。
- Windows Embedded:兼容性好,但成本高。老牌HMI厂商还在用。
- RTOS(实时操作系统):比如FreeRTOS、uC/OS。用在要求高实时性的场合,比如运动控制HMI。
注意:不要以为HMI的操作系统和你电脑上的Windows一样。很多HMI用的是裁剪过的Linux内核,没有图形桌面,只有运行时系统在跑。你没法在上面装QQ、看网页——嗯,确实有人问过我这个问题。
固件和操作系统的升级,也是日常维护的一部分。我建议你:
- 每次拿到新设备,先查一下固件版本
- 去官网看看有没有更新,特别是修复了已知bug的版本
- 升级前一定要备份当前固件,万一新版本有问题还能回退
好了,关于HMI软件架构,咱们就聊到这儿。记住这三层的关系:开发环境生成工程文件,运行时系统解释执行,固件和操作系统提供底层支撑。搞清楚了这些,你以后做项目会少走很多弯路。
公众号:蓝海资料掘金营,微信deep3321