2. 工业HMI概述

工业人机界面(Human-Machine Interface,HMI)是操作人员与工业控制系统之间进行信息交互的软硬件总称。它把PLC、变频器、仪表、机器人等现场设备中的运行状态、报警、参数与配方,以图形、数值、趋势和按钮的形式呈现给操作员,并把操作员的指令安全地下发到控制器。与消费电子界面不同,工业HMI的第一目标是可靠、实时、可追溯,其次才是美观。

核心公式:工业HMI = 数据采集 + 状态可视化 + 操作下发 + 报警管理 + 历史追溯。它既是“眼睛”,也是“手”,但绝不替代PLC的安全联锁逻辑。

2.1 工业HMI的核心构成与工作原理

一套典型HMI由硬件层、运行时层、组态工程层和通信层组成。硬件层包括触摸屏、工控机、显示器与按键面板;运行时层负责画面渲染、变量刷新、报警扫描和脚本执行;组态工程层是工程师用组态软件绘制的画面、变量表、报警表和配方表;通信层则通过工业协议与控制器交换数据。

其数据流可以概括为:现场设备 → 通信驱动 → 变量表 → 画面/报警/趋势 → 操作事件 → 写回控制器。理解这条链路,是后续Qt组态开发的骨架。

工业HMI数据流与操作闭环 现场设备层 PLC / 变频器 / 仪表 传感器 / 机器人 通信驱动层 Modbus / OPC UA S7 / EtherNet/IP 变量与实时库 变量表 / 采集周期 报警扫描 / 历史缓存 HMI运行时画面 流程图 / 趋势 / 报警 / 配方 按钮 / 输入框 / 权限 操作事件与写回 按钮 / 设定值 / 配方下载 / 权限校验 采集方向(蓝):设备 → 驱动 → 变量库 → 画面;操作方向(橙):画面 → 事件 → 写回设备 安全联锁始终由PLC/安全模块执行,HMI只做监视与指令下发

2.2 发展历程:从按钮灯到Qt组态

工业HMI的演进大致经历四个阶段:

  • 第一代:硬件按钮与指示灯。用继电器逻辑和指示灯表达状态,功能固定、改动困难,但抗干扰强。
  • 第二代:文本终端与专用操作面板。出现数码管、字符屏和薄膜按键,可显示少量变量,仍以专用硬件为主。
  • 第三代:触摸屏组态软件。西门子WinCC、威纶通EasyBuilder、MCGS等兴起,工程师拖拽控件即可完成画面,支持报警、趋势和配方。
  • 第四代:PC架构与跨平台组态。基于Qt、C#、Web技术的HMI/SCADA出现,支持高分辨率、多屏、远程访问、数据库和MES集成,Qt凭借跨平台、C++性能与QML现代界面成为工业组态的重要选型。

2.3 典型应用场景

不同场景对HMI的要求差异很大,选型前必须先明确场景。

应用场景 典型设备 关键需求 推荐形态
单机设备 包装机、注塑机 成本低、响应快、操作简单 7~10寸触摸屏
产线控制 装配线、输送线 多工位、报警分级、节拍统计 工控机 + 组态软件
过程工业 化工、水处理 趋势、历史、联锁、防误操作 SCADA + 冗余服务器
远程运维 泵站、光伏电站 远程访问、数据上云、多终端 Web HMI / Qt远程客户端
高端装备 半导体、锂电设备 高刷新、复杂动画、配方管理 Qt + QML + OPC UA

2.4 主流技术选型对比

工业HMI的选型通常在三类方案之间权衡:专用触摸屏、传统组态软件、基于Qt的自研组态。下表给出关键维度对比。

对比维度 专用触摸屏 传统组态软件 Qt自研组态
开发效率高,拖拽即用高,模板丰富中,需自建框架
界面表现力一般中等强,QML动画流畅
跨平台绑定硬件多为WindowsWindows/Linux/嵌入式
授权成本含在硬件按点数收费LGPL可控,人力成本高
定制能力弱中强,可深度定制
适用规模小型单机中大型产线高端装备/平台化产品
选型口诀:小单机选触摸屏,标准产线选组态软件,要平台化、要跨平台、要深度定制,选Qt自研组态。

2.5 常见误区与复盘

  • 误区一:把HMI当安全系统。急停、安全门、联锁必须由安全PLC或硬接线实现,HMI只能显示和请求。
  • 误区二:变量刷新越快越好。刷新周期过短会加重通信和CPU负担,应按信号类型分级,如状态量200ms、模拟量500ms、趋势1s。
  • 误区三:只做画面不做变量规划。变量命名、数据类型、读写权限、报警限值应在组态前统一规划,否则后期维护成本极高。
  • 误区四:忽视权限与审计。工业现场需要操作员、工程师、管理员分级,关键操作应记录日志,满足追溯要求。
# 典型HMI变量规划示例(伪代码)
var:
  Tank1_Level   : REAL  addr=DB1.DBD0   unit=m   range=0~5   alarm=HH4.5, H4.0, L0.8, LL0.5
  Pump1_Run     : BOOL  addr=Q0.0       mode=RO   refresh=200ms
  Pump1_Start   : BOOL  addr=M10.0      mode=RW   perm=Operator
  Recipe_Select : INT   addr=DB2.DBW0   mode=RW   perm=Engineer