干了大半辈子自动化项目,我发现自己最怕的从来不是PLC程序多复杂,也不是伺服参数多难调,而是项目收尾阶段,操作员坐在我们自己做的HMI前面,皱着眉说一句: “屏太多了,我一个人看不过来。”
这句话背后的分量,做过的都懂。多设备监控场景下,操作员要同时盯着好几条产线、好几台关键设备,注意力被撕成碎片。出了故障,报警灯在屏幕上闪成一片,他不知道该先处理哪台,最后往往是哪台叫得最响、闪得最快就先去点哪台——这恰恰是最大的隐患。今天这篇,我想从HMI多任务操作设计的角度,把多设备监控时注意力分散这件事拆开揉碎讲清楚,包括界面怎么布局、报警怎么分级、跨设备操作怎么做、以及博图、威纶通、倍福这些主流平台上具体怎么落地。
内容更适合正在做设备级或产线级HMI、SCADA相关项目的工程师,尤其适合那些被“操作员嫌画面乱、嫌报警烦、嫌切换慢”折磨过的朋友。看完这篇文章,你至少能带走一套可以套用到自己项目里的设计思路和排查经验。
1. 多设备监控的注意力危机:真正让人疲劳的不是设备,是信息
1.1 为什么“看着很多屏”不等于“知道发生了什么”
先想一个问题:一台设备一个屏,三条产线九个屏,操作员坐在中控室里,真的在“监控”这九台设备吗?我的观察是,大部分时间他只是在“扫描”——眼球从左到右、从上到下逐屏扫过去,每块屏停留几秒钟,确认没异常,然后循环。
这个过程极其消耗认知资源。人一次能同时处理的信息本来就只有4到7个组块,九块屏上每块又有十几个动态数据、好几个状态指示灯,信息总量早就溢出了。操作员的短期记忆被反复读写,十几分钟后就进入一种“看了但没看见”的状态:屏幕上那个异常数字其实已经停在红色阈值上方好一会儿了,但他没捕捉到,因为他的注意力被右上角一块屏上滚动速度更快的报警列表吸引走了。
我在一个包装产线项目里就亲历过这种情况。当时操作员需要同时盯五台热收缩膜包装机的温度与速度,每台机的画面结构还不一样,有的温度显示在右上角,有的在左下角。设备二温度超限报警,操作员却一直在盯着设备三看,因为那块屏的画面上有一个动态的产量趋势图在不断刷新,视觉上特别“显眼”。等发现的时候,产品已经连续不合格了一百多件。
这里的问题不是操作员不负责,而是HMI没有帮他做注意力的路由。合格的HMI设计,其核心任务之一就是替操作员回答一个问题:现在哪件事最需要你看?而不是把选择权留给他的眼球的随机捕捉。要做到这点,首先得承认一个常识——人的注意力天生会被“动的东西”和“变化明显的东西”吸引。所以那些在生产正常时也没必要一直在动、在变的元素,就应当从“常态监控画面”里拿掉,不然它就是一枚视觉炸弹。
1.2 报警疲劳:“狼来了”喊多了,狼真的来了也无人起身
多设备监控场景里,最普遍的注意力杀手是报警疲劳。我见过很多项目,投运三个月后,操作员对报警铃已经免疫了——为什么?因为报警太多了,而且大量报警是无效的、重复的。
举一个真实例子。某汽车零部件产线上,有一个冷却水流量传感器因为安装位置离弯头太近,水流会有轻微脉动,瞬时流量经常掉到阈值以下触发低流量报警,每次持续两三秒又恢复。这个报警每天响几十次,虽然厂家把HMI上的报警条做成了闪烁+红色高亮,但操作员已经默认它是“那个假报警”,根本不会抬头看。
三个月后,真正的高压泵故障引发低流量报警时,操作员依然以为是老毛病,没有第一时间响应。直到后续联锁停机,才惊觉出大事了。这个例子有点极端,但我相信很多朋友在项目里都见过类似苗头。
要缓解报警疲劳,单靠操作员培训没用,必须在HMI设计里从源头做三件事:
- 报警分类分级要一刀切到位,不能所有报警同一个优先级:紧急报警(设备紧急停止、安全回路断开)、重要报警(设备故障停机、产品质量超标)、一般报警(参数偏差、维护提醒)必须用完全不同的呈现强度。
- 重复报警要有抑制机制:同一信号在一定时间窗内反复触发/恢复时,只记录一次并标记为“重复触发”,而不是没完没了地刷列表。
- 报警确认机制要强制:操作员必须逐条“确认”报警,确认后的报警在视觉上降为静态黄色条目,只有未确认的报警保持高亮。这个设计逼着人去“处理”而不是“路过”。
以上三条,任何一个搞过多设备监控项目的工程师看了都会点头,因为这是现场最真实的需求。
1.3 分屏与单屏:两种设计的典型误区
多设备监控在HMI物理形态上通常走两个极端:
- 误区一:一个HMI画面里堆下所有设备的信息。为了“一屏看全”,把每台设备的流程示意图、趋势、参数、报警全部塞进一页,结果每台设备只能分到一个很小的区域,操作员根本看不清关键参数,画面一缩小全部糊成一团。
- 误区二:每台设备单独一个HMI/页面,互不联动。设备A有自己的屏,设备B有自己独立的屏,视觉风格、操作逻辑完全不统一。操作员遇到紧急情况时还要回忆“画面页号多少来着”,记忆负荷超高。
真正合理的思路是在两者之间找平衡:让信息按照“全局总览—区域概览—单机详情”三层分级布局,并让层与层之间可以平滑跳转。这其实和飞机驾驶舱仪表设计的思路一致——飞行员的屏幕同样有不少信息,但核心设计原则是“以有效导航和告警为核心”,让最需要关注的内容自动呈现,而不是让飞行员逐屏搜索。工业HMI的注意力设计,本质上也该走这条路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 界面信息架构:把监控屏设计成“驾驶舱”而不是“地铁导视屏”
2.1 优先级驱动的三层布局,让眼睛有个“习惯路径”
我在前文提到“把选择权交给眼球”是错误的做法。正确的做法是,在每一个监控画面里,给操作眼的排布一个固定的“阅读路径”,这样他不需要思考去哪里找信息。
具体来说,我建议固定采用这样的三层布局:
- 顶部区域(或左侧窄条):全场设备状态总览。用一张小的设备树或流程全景图,每台设备只用一个色块/图标表示,绿=运行、灰=停机、黄=警告、红=故障。这一层回答的是“今天全场整体怎么样”。
- 中部区域(主操作区):当前选中的单台设备或单条产线的工艺流程画面,详细参数、按钮、趋势都在这层。这一层回答的是“这台设备具体什么情况”。
- 底部区域(或右侧浮动条):全局报警列表。按“未确认+高优先级”排在最前,已确认的降为低亮度。这一层回答的是“有什么事情需要我处理”。
这种布局的逻辑是:操作员的视觉重心优先落“中部”,但上下两层的状态总览和报警列表始终在他的余光范围内。当设备异常时,顶部色块变红,底部报警条目置顶高亮——无论是哪个方向来的刺激,都能把他从“正在操作某台设备”的状态里拉出来,立即看见异常。
我接手过一个老项目的改造,当时操作员反馈最多的一句话是“每次看个数据要在一堆画面里翻来翻去”。我们把布局统一成上面说的三层之后,操作员上手一周就完全适应了,之后的反馈变成“现在扫一眼就知道哪里有问题”。注意,这里我不建议在画面的四个角堆满信息,因为人的有效视野其实很窄,四角的信息属于高遗忘区,放重要的状态反而容易被忽略。
2.2 给颜色、闪烁和形状定“法律”:不能你想怎么用就怎么用
多设备监控时,不同设备、不同画面的颜色语义如果不一致,等于每天给操作员下绊子。比如设备A的画面里红色代表“故障”,设备B的画面里红色却代表“急停中”,操作员在疲劳状态下很容易把“故障”和“急停中”弄混,做出错误的处置。
所以HMI项目在设计阶段就应当定义一份《状态颜色编码规范》,而且整个团队、整个项目强制执行。我建议一套比较通用的规范如下:
| 颜色 | 语义 | 典型状态 |
|---|---|---|
| 绿色 | 正常运行 | 设备运行中、参数在范围内 |
| 灰色 | 停止/待机 | 设备待机、无任务 |
| 黄色 | 警告 | 参数越限但未停机、需要关注 |
| 红色 | 故障/紧急 | 设备故障停机、安全回路触发 |
| 白色/默认 | 无状态/信息显示 | 标签、静态文本 |
| 蓝色 | 需要人工操作/状态切换中 | 手动模式下允许操作、配方切换中 |
注意,红色黄色这种颜色语义对色弱人群并不友好。虽然工业现场这种考虑不一定被重视,但如果你有条件,建议在关键状态上叠加形状或文本辅助。比如设备故障时除了色块变红,还可以叠加一个符号或闪烁的边框,即使色弱的人也能通过形状变化感知到异常。
闪烁是必须被严格限制的。我的经验是:闪烁只用于“需要立即行动的报警”,比如急停触发、安全回路断开、设备意外停止。除此之外一律不准闪烁。闪烁频率建议设在2Hz上下,每秒闪2次。还要定义好闪烁的停止条件:操作员点击确认后,闪烁立即停止,转为红色常亮或黄色常亮。这样“闪烁”这个视觉符号才保有稀缺性,才会每次出现都真的能抓住操作员的眼球。
2.3 正常状态下的“信息隐身”与按需展开
很多HMI工程师习惯把一切信息都摆到画面上,“这样显得信息全,专业”。但全和多是两回事。多设备监控的核心矛盾在于:信息总量大,视觉通道有限。所以必须在“常态画面”上做减法——把那些高频参考但非关键的数据,藏到二级页面里去。
我的做法是:
- 设备正常时,画面只显示最重要的几个参数(如产量、温度/速度等核心指标、设备状态)。
- 历史趋势、详细IO状态、维修信息、配方参数等,统一收敛到“详情页”,通过点击设备图标或“详情”按钮打开。
- 现场操作员日常需要反复观察的数据,可以根据工艺需求“钉选”到画面边缘的悬浮区。
我经手过一个项目,原设计里每台设备的画面都放着6个实时趋势窗口,屏幕上密密麻麻的曲线,操作员一开始还看,后来完全不看了。我把趋势全部收拢到详情页,只在主画面保留一个可切换的“关键参数趋势”区,默认显示最近10分钟的速度与温度曲线。结果操作员反馈,现在反而更会主动去点趋势看,因为内容少、清爽、一眼看得到重点。
3. 跨设备操作流程:让操作员跟着报警走,而不是满厂找报警
3.1 全局报警列表与“一键跳转”:缩短从发现到处置的通路
注意力分散的另一大来源是“操作路径太长”。想象一个场景:操作员在中控室看到设备F报警了,他要先找到F对应的画面页号,手动输入页号或翻页,切过去之后还要在画面里找到出问题的具体部件,再点开详情、看报警原因,再跑到现场。这一串操作如果每一步都要花几秒钟,一路下来十几秒过去了,紧急情况下每秒钟都是钱。
所以HMI多设备监控设计的一条铁律是:报警列表中的每一条报警,都必须能点击跳转到对应的设备画面或具体部件所在页面,而且跳转后还要自动定位到该报警关联的对象上(比如高亮闪烁这个部件)。
举一个具体的例子。我在某个项目里用了博图的全局报警窗口(Global Alarm Window),报警条目里有一个“跳转”按钮,点击后直接切换到对应画面,并触发一个“对象定位脚本”,让故障部件在画面中闪烁3秒。操作员从发现报警到定位故障点,只需要一次点击。这个设计在试运行阶段就帮操作员省了大量时间,也因为这条路径短,注意力散失的面积就小了。
这里要强调一下,报警列表本身也要有交互设计。当报警条目数超过一屏高度时,必须自动把“未确认的、优先级最高的”排在窗口最顶部;已确认的条目建议置灰下沉,不能和未确认报警混在一起滚来滚去。很多HMI默认报警列表按时间排序,这会让最需要处理的那条报警被埋在一堆历史报警下面,这种设计要改掉。
3.2 统一事件时间轴:别让操作员靠“回忆”拼上下文
多设备同时出问题时,操作员的思路特别容易乱。A设备停了,B设备跟着停了,C设备温度也开始升高,他要在脑子里拼一个“这几台设备的故障有没有因果关系”的链条,这太难了。更常见的是,他根本记不清哪台设备先报的警,导致分析方向走偏。
我的解决方案是,在HMI里做一个统一的“事件时间轴视图”,把三类事件打上时间戳并按时间顺序混合展示:
- 操作事件:谁、什么时间、按了哪个按钮、切换了什么模式;
- 设备事件:哪台设备启动/停止/报警/复位、信号变化;
- 报警事件:报警触发时间、确认时间、恢复时间、操作员、处理结果。
这三类事件放在同一个时间序列里,操作员一眼就能看出“先是设备B报警,操作员A 5秒后按了急停,然后设备C报失联”——因果链清清楚楚。这在多设备联合监控里是真正的“注意力救星”,因为它消解了操作员的记忆负担。
市面上主流HMI平台对这类事件记录的支持差异挺大。有的平台(如西门子的Unified、WinCC)原生支持审计跟踪功能,能记录操作和管理员操作;有的平台需要自己用脚本写。如果项目预算有限,至少要做到:报警记录必须带操作堆栈,能导出到报表系统;操作日志必须能对应到画面和按钮。不然出了问题永远只能靠调监控录像,那就太被动了。
3.3 组操作与配方切换:减少“重复点击”带来的注意力流失
多设备监控还有一个被很多人忽略的注意力消耗点:重复性点击。举个例子,一条产线有六台设备,每次换型时操作员要在每台设备上分别设置配方参数,一共要切换到6个画面、点几十次按钮。这种高度重复的操作很容易诱发失误,也容易让操作员在“多点了一下会不会点错”的焦虑中分神。
设计上可以做两件事:
- 组级操作:将同一产线/同一工艺段的设备做成“分组”对象。操作员可以在总览页选择一个分组,执行统一的“组启动/组停止/组急停”,而不是逐台设备操作。
- 配方集中管理:针对多台设备的配方参数,做一个“配方总览页”,操作员可以在一个页面里查看/修改整个产线所有设备的同工序参数(如温度、速度、压力),修改完成后“一键下发”到各台设备。
当然,组操作要考虑安全性,不是所有设备都能做成组的。组启动/组停止按钮要有二次确认弹窗,而且要在画面里明确标注这个组包含了哪些设备。我的原则是:安全联锁相关的操作永远单独执行,不能放进组操作;组操作只用于生产流程协同类的操作,比如同步启动一条产线的输送系统。
4. 主流HMI平台上落实多设备监控的关键选择
4.1 西门子TIA Portal Unified:HMI多屏与仿真调试的工程实践
说到现代HMI平台,绕不开TIA Portal V20起的Unified HMI。它基于HTML5/Web技术架构,屏幕渲染不再依赖WinCC Runtime传统引擎,而是走浏览器内核。这个变化对多设备监控场景是重大利好:同一套Unified HMI工程可以通过Web方式在多台客户端上展示,这意味着“一台设备一块独立屏”的物理形态可以被打破,操作员在任意一台能开浏览器的机器上都可以查看同一套监控界面。
实际项目里,我通常这样设计:现场中控室放一台性能较好的工控机,跑Unified HMI运行时,通过HDMI扩展给多块显示器,每块显示器上通过Web页面打开不同画面(比如屏A显示产线1,屏B显示产线2);同时现场每台设备的本地HMI触摸屏还是保留,独立运行。中控室的大屏主要负责“总览”,本地触摸屏负责“单机操作”,两层职责清晰。
这里有一个工程实践细节容易被新手忽略:Unified HMI的Web访问在设计阶段需要在工程里启用“Web服务”,并配好用户权限。如果只是本机显示,可以直接用运行时窗口;如果要在多台客户端上访问,就要考虑并发连接数、网络带宽、以及登录用户的权限分配。
再说仿真。标题里提到“博图HMI仿真按钮无反应”,这确实是个高频问题。我自己也踩过坑。Unified HMI的仿真和WinCC传统仿真不一样,它不是直接按“启动仿真”就能跑的。如果你发现仿真运行时画面上的按钮怎么点都没反应,先检查以下几项:
- 仿真模式是否真正进入了“运行”状态?Unified仿真需要先激活运行系统,再进入仿真界面,两者都完成后按钮才可操作。
- 画面对象属性里,按钮的“操作模式”是否被设置了“仅输出”或“无操作”?有时候按钮被误设为只读状态,仿真里当然点不动。
- 变量连接是否有问题?如果按钮关联的变量是来自PLC的外部变量,而仿真时PLC没有连接,按钮操作虽然在画面上看起来“按下去了”,但变量值不会变化,给人“无反应”的错觉。
关于第三点,一个常用的调试技巧是:在仿真里先切换到“变量模拟”模式,给外部变量赋一个可操作的测试值,排除变量连接层面的问题。如果变量模拟下按钮工作正常,而连接真实PLC后不工作,问题多半出在网络通信或PLC侧。
4.2 威纶通EasyBuilder Pro:Local HMI与多设备数据交互
威纶通(Weintek)的HMI在中小型设备里市场占有率很高,成本低、上手快。多设备监控时,威纶通常见用法是多台HMI之间通过以太网互通数据,由一台作为主站汇总显示,其余作为从站各自采集现场设备数据。
新手最常见的困惑是“如何新增Local HMI数据类型”。这个概念不复杂,但要理解它才能正确做多机数据互通。EasyBuilder Pro里的“Local HMI”标签本质上是某个HMI自己私有的一组缓存地址/变量,它不属于任何外部PLC,只在HMI内部使用。两台HMI互通数据时,实际上需要在地址映射里把对方HMI的Local地址当作一个可访问的变量来读写。
我举个例子帮你理解:现场有两台威纶通,HMI_A接设备A的PLC,HMI_B接设备B的PLC。现在希望HMI_A能显示设备B的故障状态,那么:
- 在HMI_B上,把设备B的故障位映射到它的“Local HMI”地址(比如LB-0)。
- HMI_A通过以太网访问HMI_B的LB-0地址,读取到设备B的故障状态,然后在自己的画面上显示。
此时如果项目里多台HMI各自定义了不同的Local地址,就必须在项目文档里维护一张《HMI地址映射表》,否则很容易出现地址冲突——两台HMI用了同一个LB地址,数据互相覆盖,操作员看到的设备状态完全错乱。我在现场遇到过这类问题,排查到最后的根源就是HMI A和HMI B的LB地址段规划重叠。
另一个威纶通项目里的常见经验:在多设备监控时,尽量把报警列表的数据源集中在主站HMI上。也就是每台从站HMI把报警事件通过事件触发写入主站的Local地址或专用寄存器,主站统一读取并展示。这样做的好处是,报警顺序和优先级统一由主站控制,不依赖各台从站的报警窗口性能,避免各屏幕报警时间不一致。
4.3 倍福TwinCAT HMI:动态数据刷新的性能边界
倍福TwinCAT HMI(基于TwinCAT 3或TwinCAT CAT)在性能和灵活性上很强,尤其适合数据变化快、动态内容多的设备监控。它的数据绑定机制默认采用“订阅+推送”,而不是传统PLC系统里常见的“轮询”,所以在画面数据实时性上天生有优势。
但在多设备监控场景里它也容易产生一个问题:动态订阅过多,导致浏览器端或HMI端性能急剧下降,画面卡顿、操作延迟,操作员点一个按钮要等一两秒才有反应,注意力必然被拉扯。我在一个多轴控制项目里就遇到过:HMI画面上放了80多个动态绑定的数据点,外加一个全局动态的报警窗口,运行一段时间后,客户端CPU占用率居高不下,画面切换明显变慢。
后来我们做了几个调整:
- 降低非关键数据的订阅频率:把一些“秒级更新就够”的参数(如产量累加、电机温度)从毫秒级订阅降为几百毫秒一次或定时刷新;把真正需要实时变化的运动轴位置、速度、力矩设为毫秒级订阅。
- 使用“分组动态”替代“全量动态”:倍福HMI支持按需订阅,画面不在前台时不刷新后台数据,切回该画面时才重新激活订阅,减少资源占用。
- 报警窗口改为“事件触发刷新”:不要每毫秒轮询报警列表,而是用报警服务器在有新报警时推送更新。
从中得到的原则是:动态数据是HMI的利器也是负担。动态刷新本身不是问题,不加选择地全量订阅才是问题。多设备监控时,画面上的动态元素越多,操作员注意力消耗越大,性能风险也越高;宁可牺牲一点极端实时性,也要保住画面的流畅和操作响应。
5. 调试阶段最容易翻车的地方与排查经验
5.1 从“仿真按钮无反应”说开:HMI调试的完整排查链路
“HMI仿真按钮无反应”这个问题,其实不只是Unified平台上存在,WinCC、威纶通、倍福都有类似的情况。我给你梳理一套通用的排查链路,你以后遇到这类问题就按这个顺序走:
- 确认仿真环境真的进入了运行状态。不少工程师点了“开始仿真”后,HMI画面虽然显示出来了,但左下角没有出现运行状态标识,或者“运行/停止”开关还是停止状态。这种状态下画面不可交互。
- 检查按钮属性是“输入”还是“输出”。你的按钮绑定的是一个内部位变量,按下去后变量值应该翻转。如果按钮被配成“仅显示状态”,那它本质上就是个彩色方块,不是按钮。
- 给按钮关联一个临时内部变量,用内部变量做一次“自测”。如果内部变量能翻转,说明按钮功能没问题,问题出在外部变量/PLC通信侧;如果内部变量也不能翻转,问题出在画面或工程本身。
- 检查PLC通信。外部变量模式下,仿真HMI连接的是仿真PLC还是真实PLC?如果目标是真实PLC,网络连没连通?PLC的允许PUT/GET通信被勾选了吗?这些因素都会导致按钮按下后变量没变化。
- 查看报警和日志。HMI仿真运行日志里通常会有通信错误、变量读写失败的记录,这是定位问题的重要线索。
我见过有同事在仿真“按钮无反应”上折腾了一下午,最后发现是HMI的两个按钮重叠摆放在同一位置,上层是一个透明的“纯显示框”,把下层按钮的所有触摸事件都吃掉了。这种画面层级的坑,检查属性表是不容易发现的,必须切到“布局”模式查看图层顺序。这个案例告诉我们:排查HMI交互问题,图层和对象遮挡关系永远要先过一遍。
5.2 威纶通Local HMI数据类型与变量冲突的避坑
前面提过“威纶通如何新增Local HMI数据类型”这个热搜词。操作路径其实很常规:在EasyBuilder Pro的“项目树”里找到本地HMI,在“系统参数”里新增LB/LW等本地地址段,命名并注释用途。但真正容易出问题的是它的“类型”定义和地址规划。
我建议,新增了Local HMI地址后,一定要为每个地址段设置清晰的命名注释。比如LB-0命名为“设备B_故障状态”,LW-10命名为“设备A_产量实时值”。如果只是新建一串地址而不做命名,后面写脚本时根本不知道自己在读哪个变量,调试起来极其痛苦。
变量冲突是另一个高频坑。多台威纶通HMI互联时,最常见的错误是几台HMI都使用了相同的LB/LW地址,且互相设置了对对方的读写权限,结果出现“设备A的产量偶尔变成设备B的产量”这种诡异现象。原因是两个LB地址被两个HMI同时写,后写的覆盖了先写的。解决办法就是前面强调的:规划一张全项目的地址映射表,每个地址的所有者、读写权限、用途写清楚,并且尽量把跨设备数据交互限制在“主站读从站”的单向模式,避免多向写入。
5.3 倍福HMI里动态数据的“少即是多”
倍福HMI本身性能很强,但一旦动态订阅失控,照样卡。这里补充几个优化细节:
- 每个画面里的动态刷新区要有“分页”意识。不要在一个页面上同时放“实时位置曲线 + 实时IO表 + 动态报警列表 + 动态配方下拉框”,每样都占资源。建议把IO表做成点击按钮才展开的浮动面板。
- 如果用到外部JavaScript扩展,注意内存泄漏。倍福HMI支持前端代码扩展,但长期运行的页面如果存在未释放的定时器或订阅,内存会越涨越高,最终页面白屏。这种问题在调试期很难发现,因为要跑几个小时甚至几天才触发。建议在交付前做一次72小时无人值守运行测试,观察浏览器内存曲线。
- 报警音频提示不要太“积极”。很多项目里只要报警一来就响蜂鸣器,多设备同时报警时操作员耳边一片混乱。更合理的是:只有新增的、最高优先级的报警触发声音,且操作员确认后声音停止。至于次级报警,用视觉变化提示即可,不要什么都用声音。
6. 把设计规范落到现场:一套可复用的项目落地流程
6.1 设计之前先做“信息分层”和“报警分级”
一个成功的多设备监控HMI项目,80%的工作在设计阶段就已经决定了。好的设计师不会直接打开开发软件拖控件,而是先在文档里回答两个问题:
- 操作员在“正常生产”时,需要看什么?答:全厂/全产线的状态总览、关键工艺指标、当前运行模式、以及是否有未确认的报警。
- 操作员在“异常处理”时,需要看什么?答:报警位置、故障原因、受影响的相关设备、处置步骤建议、历史事件上下文。
这两个问题的答案,直接决定画面分几层、每层展示什么、报警窗口放哪里、跳转逻辑怎么设计。然后按照“总览—概览—详情”三层结构输出画面清单。每台设备至少有一个“详情页”,每3到5台设备归入一个“区域概览页”,再有整线“总览页”。
报警分级表更要在设计初期就定下来。我常用的分级表模板如下:
| 优先级 | 定义 | 呈现方式 | 操作要求 |
|---|---|---|---|
| Level 1 | 安全相关/紧急停机 | 红色闪烁+高频率声音 | 强制弹窗,必须确认 |
| Level 2 | 设备故障/产线停机 | 红色常亮+中频声音 | 报警窗口置顶,需确认并复位 |
| Level 3 | 参数越限/品质预警 | 黄色常亮+无声 | 列表记录,操作员自行处理 |
| Level 4 | 维护提醒/信息 | 不醒目显示 | 记录备查 |
有了这张表,调试阶段再有人提出“这个报警要不要闪一下”就能直接拍板,不用每次都靠直觉决策。
6.2 画面视觉和交互规范的“立法”与执行
项目里如果没有统一的画面规范,每个工程师画出来的画风完全不一样:有人喜欢深色底、有人喜欢浅色底、有人把按钮做成圆的、有人做成方的,字体大小也不统一。等到操作员去看的时候,他每切一个画面就要重新“学习”一次这个画面的视觉语法,注意力消耗巨大。
所以建议在多设备监控项目启动时,就编写一页纸的《HMI画面设计规范》,内容至少包括:
- 基准色板:主背景色、画面底色、状态色、强调色的RGB值。
- 常用控件样式:按钮、输入框、下拉框、报警条、状态指示灯的标准尺寸和字体。
- 交互操作规范:按钮按下/松开效果、确认弹窗风格、快捷键/功能键约定。
- 画面导航规范:菜单结构、返回逻辑、跨画面跳转按钮的固定位置。
不要小看这一页纸,它虽然简单,但能避免后期大量无意义的返工。我经历过一个项目,两个工程师分别做画面,结果一个把所有按钮放在画面底部,另一个全部放在右侧,操作员换画面时手总是点错位置。统一规范后,这类问题就彻底消失了。
6.3 原型验证与现场迭代:让操作员当“最终用户”
就算设计文档写得再完善,也一定要在仿真环境或现场让真实操作员试操作,观察他的行为,听听他的抱怨。因为我发现,工程师设计HMI时容易陷入“逻辑正确”的思维,觉得“这个页面信息全、跳转合理”,但真实操作员要的是“我熟悉的位置、熟悉的颜色、熟悉的流程”。这份熟悉感只能在试用中建立。
建议的项目节奏是:
- 仿真环境下做第一轮验证,重点检查按钮交互、画面跳转、报警逻辑是否正确。
- 现场试运行阶段安排操作员试用,收集反馈:哪些信息他从来不看?哪些操作他觉得太慢?哪些报警他觉得是误报?
- 根据反馈做一到两轮迭代,重点调整布局、报警阈值和默认显示内容。
在迭代时,有一个原则要守住:不要为了满足某一位操作员的个人习惯,把画面改得越来越“重”。操作员的建议要听,但最终的判断标准仍然是“这套HMI在紧急情况下能否帮助操作员快速定位问题”,而不是“某个按钮他按着顺手”。
我在一个化工项目里调整了四次报警阈值才把“报警疲劳”压下去。第一次是厂家默认的阈值,报警太多;第二次把阈值放宽,结果真正的问题被漏报了;第三次加了延时确认逻辑,设定持续3秒以上才触发报警;第四次才终于达到“既不漏报、也不打扰”的平衡。这个过程没有捷径,只能靠现场数据说话。
多设备监控的HMI设计,表面上是画画面、配变量、做报警,本质上是在和人的认知弱点做对抗。操作员的注意力是有限的、易疲劳的、会被视觉噪音带偏的,好的设计就是帮他排除干扰、缩短路径、降低记忆负担。这篇文章里写的每一件事,都是我在项目里要么自己踩过、要么看同事踩过之后总结出来的。如果你正准备做一个多设备监控的HMI项目,建议你把这里面的布局思路、报警分级逻辑、跨设备跳转设计、以及各平台的调试要点都过一遍,再结合你现场的真实工艺去调整。HMI这东西,从来没有完美的方案,只有最合适当前场景的方案,而“合适”的前提,是想清楚操作员的注意力到底应该花在哪里。
