在工业自动化领域,HMI是人机界面的缩写。在工业中使用HMI来控制和监控机器。如果没有HMI,就很难在工业中拥有良好的自动化流程。
人机界面的定义
人机界面 (HMI) 是一种用户界面,允许人类操作员与机器或过程进行交互。HMI通常用于工业环境,允许操作员监视和控制过程,例如工厂或发电厂中的过程。
HMI 可以采用多种形式,包括计算机上的图形用户界面 (GUI)、触摸屏或带有按钮和显示器的物理控制面板。它们用于向操作员呈现过程数据,允许操作员输入命令和设定值,以及提供警报和其他信息。
HMI通常连接到可编程逻辑控制器(PLC),PLC负责根据现场HMI和传感器的输入来控制过程。HMI只是向操作员提供信息,并允许他们输入命令,然后将其发送到PLC进行实施。
HMI是Human Machine Interface的缩写,“人机接口”,也叫“人机界面”。人机界面(又称“用户界面”或“使用者界面”)是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。凡参与人机信息交流的领域都存在着人机界面。
- 是用户可以直接看到与操作的界面
- 是具体功能实现的入口
- 是事件与状态变化的反映窗口
人机界面的职责
在解释什么是HMI的同时也就决定了它的职责
- 实现操作简单,友好的界面
- 提供具体功能的入口与整合
- 将状态的变化实时的通知用户
人机界面的类型
图形界面(Graphical User Interface,简称GUI):这些是基于计算机的HMI,使用图形界面来显示过程数据并允许操作员输入命令。GUI可以使用Microsoft Windows等软件或专门的HMI软件包创建。
触摸界面(Touchscreen Interface):通过触摸屏幕进行交互,具有简单、直观的交互方式,常用于智能手机、平板电脑、交互式白板等设备上。
语音界面(Voice Interface):通过语音识别技术进行交互,用户可以通过语音指令控制计算机,常用于智能音箱、车载系统等设备上。
物理面板:这些是物理HMI,使用按钮,开关和显示器来显示过程数据并允许操作员输入命令。通常用于GUI或触摸屏可能不实用的工业环境,例如振动或灰尘水平较高的环境。
基于Web的界面:这些人机界面使用 Web 浏览器来呈现过程数据并允许操作员输入命令。它们可以通过Web浏览器从任何设备访问,允许操作员远程监视和控制过程。
人机界面的选择
在为工业过程或系统选择人机界面 (HMI) 时,需要考虑几个因素,以确保 HMI 最适合特定应用。
兼容性:选择与其将要控制的设备和系统兼容的HMI非常重要。这包括与控制系统、通信协议和设备使用的数据格式的兼容性。
硬件:HMI应设计为坚固耐用,适合安装环境。它应该能够承受它将要承受的温度、湿度和振动。
显示:HMI 应具有清晰、易于阅读且易于导航的显示屏。屏幕应具有良好的分辨率,具有高质量的显示和背光。
可用性:HMI应易于操作和理解,具有直观的导航和清晰简洁的显示。它具有不同专业知识水平的操作员应该易于使用和理解。
数据可视化:HMI 应该能够以清晰有意义的方式显示数据,使用图形、图表和其他类型的可视化表示来帮助操作员了解流程并做出明智的决策。
可定制性:HMI应该是可定制的,能够适应过程或设备的特定需求,以及操作员的偏好。
远程访问:HMI应设计为允许远程访问,以便操作员可以从远程位置监视和控制过程。
可扩展性:HMI应设计为可扩展,随着流程或设备变得更加先进,能够处理更多的复杂性和数据。
支持:HMI供应商应提供良好的技术支持和文档,以及软件更新和升级。
人机界面的优点
人机界面 (HMI) 具有几个优点,可用于控制和监控工业过程:
提高效率:HMI允许操作员轻松访问过程数据和输入命令,从而提高被控制过程的效率。通过以清晰简洁的方式呈现数据,运营商可以做出更明智的决策,并在必要时及时采取行动。
提高安全性:HMI 可以通过向操作员显示警报和其他重要信息来提高安全性。这使运营商能够及时采取行动,在潜在问题变得严重之前解决它们。
远程监测和控制:许多HMI可以远程访问,允许操作员从远处监视和控制过程。这在过程位于偏远或危险位置的应用中特别有用。
易于使用:HMI设计为易于使用,即使对于可能没有技术专长的操作员也是如此。这使它们成为控制和监控工业过程的可访问工具。
人机界面的用途
HMI与可编程逻辑控制器(PLC)和输入/输出传感器通信,以获取和显示信息以供用户查看。HMI屏幕可用于单一功能,如监控和跟踪,或用于执行更复杂的操作,如关闭机器或提高生产速度,具体取决于它们的实施方式。
HMI 用于通过数字化和集中查看者的数据来优化工业过程。通过利用HMI,操作员可以通过一个控制台查看图形,图表或数字仪表板中显示的重要信息,查看和管理警报,并与SCADA,ERP和MES系统连接。
以前,操作员需要不断走动地板以检查机械进度并将其记录在一张纸或白板上。通过允许PLC将实时信息直接传送到HMI显示器,HMI技术消除了对这种过时做法的需求,从而减少了由于缺乏信息或人为错误而导致的许多代价高昂的问题。
人机界面的应用
人机界面 (HMI) 用于各种工业应用,它们可以帮助提高被控制过程的效率、安全性和可访问性。
HMI的一些常见应用包括:
制造:HMI 通常用于制造环境中,以控制和监控生产过程,例如工厂车间的生产过程。它们可用于向操作员呈现过程数据,允许他们输入命令和设定值,以及显示警报和其他重要信息。
发电:HMI还用于发电厂,例如使用化石燃料或可再生能源的发电厂,以监测和控制锅炉运行,涡轮机控制以及发电和配电等过程。
水和废水处理:HMI用于水和废水处理厂,以控制和监控泵送,处理和分配等过程。
石油和天然气:HMI用于石油、天然气生产和精炼,以控制和监控钻井,泵送和精炼等过程。
化学加工:HMI用于化学加工厂,以控制和监控混合,反应和蒸馏等过程。
人机界面设计工具
HMI 开发工具市场参与者众多,国内市场被中科创达(Kanzi)占领。目前, HMI 设计工具的主要玩家包括中科创达(Kanzi)、Qt、Elektrobit、Altia、CRANK、 Epic Games、Unity 等。其中,中科创达通过收购 Kanzi 切入该领域,Kanzi One 是全球首个与安卓完全兼容的汽车 HMI 工具链,目前 Kanzi 全球市场份额高达 40%以上;Qt 的产品使用范围很广,涉及汽车、医疗、消费电子等诸多领域的 HMI 设计,提供了库,工具,硬件适配和现成的解决方案的全面基础架构,支持任何平 台;Elektrobit 致力于为汽车行业提供嵌入式互联软件产品和服务的全球性供应商, HMI 方面的产品主要为 EB GUIDE 工具链。同时,某些游戏科技的 HMI 设计公 司也正向车载市场进发,如 Epic Games 旗下的 Unreal Engine、Unity 等均加速 布局车载市场。
汽车与HMI的前世今生
汽车人机交互界面在汽车诞生之时其实就已经存在。
// 第一代:机械式仪表盘
1980年前,初代仪表盘为机械芯仪表,一般包含车速里程表、转速表、机油压力表、水温表、燃油表、充电表等,汽车仪表还需要装稳压器来稳定仪表电源的电压,抑制波动幅度,保证汽车仪表的准确性。初代的汽车仪表盘以传统的热式和动磁式为主,显示的信息极为有限,担任的是车辆物理信息“通信员”的角色。
在机械时期,汽车中控台照搬飞机中控布局,以实体按键为主,功能简陋单一,只能满足驾驶的基本需求。中控台并无屏幕可言,没有交互功能。
// 第二代:电气式仪表盘+小中控屏
电气式仪表盘在上世纪90年代诞生,从真空荧光显示屏(VFD),发展到采用液晶显示屏(LED)及小尺寸薄膜晶体管显示器(TFT),显示屏显示的信息越来越清晰、快捷。目前电气式仪表在市场的保有量最大,且一般采用机械仪表结合数字仪表的方式,例如车速、转速信息采用指针,指示灯信息采用LED等点亮,其它信息则采用TFT屏。
// 第三代:全数字化仪表
汽车仪表盘领域在不断追求更新,于是划时代的全数字液晶仪表盘应运而生,也是就我们常说的虚拟仪表盘。全数字汽车仪表盘使用一整块液晶屏取代了传统的指针和刻度表,所有信息都通过这块屏幕显示出来。功能更强大、信息显示更具逻辑性,驾驶者接受信息更快,提升行车安全,也可以根据个人喜好调整相应参数。
2007年iPhone问世,大屏、轻薄机身、高清显示屏、可安装应用等功能引领了整个行业变革。电动汽车行业飞速发展,智能AI和人机互联等人车交互概念跟着兴起,用户对于中控台的需求和功能多样性也越发精细。2013年上市的特斯拉Model S,座舱里最惊艳的就是那块17寸大屏。超高的分辨率、流畅的操作度、漂亮的UI设计,让特斯拉得以快速获取了大票忠实追随者。就像苹果手机颠覆了传统手机行业,特斯拉也改变了传统汽车行业。
// 第四代:HUD显示屏
上世纪80年代开始,抬头显示技术在汽车领域已经开始被使用,直到现在才开始逐渐展露头脚。HUD抬头显示器(Head Up Display),又叫平视显示系统。它可以把重要的信息,映射在风窗玻璃上的全息半镜上,使驾驶员不必低头,就能看清重要的信息。
自动驾驶时代,HMI的设计思路
汽车作为运载工具,从诞生之始就携带着 “强制性”的人机关系,即机器对于驾驶员具有强大的“约束力”,驾驶员必须服从机器,必须严格按照机器规定的技术、动作来执行。传统汽车中,驾驶员的首要任务是驾驶,核心需求是驾驶员的驾驶安全,支持和辅助驾驶就自然成为HMI的核心功能。然而,自动驾驶技术中没有驾驶员,原有的HMI设计的目标自然失去了意义,HMI在产业发展中将产生哪些新的设计思路?
// 给用户一种控制感
汽车HMI应始终在合理的时间内通知用户当前的状态,并提供适当的反馈。当用户开车时,这一点尤为重要。如果系统在不通知驾驶员的情况下采取行动,很可能会干扰驾驶员,造成不良后果。在驾驶过程中,驾驶员实际上是在控制汽车的各种行为方式。这既是一种控制,也是一种反馈,控制了汽车的功能,反馈了功能的结果。
// 遵守“安全第一”原则
HMI系统的主要优点是它可以帮助我们避免事故的发生。现代汽车配备了传感器,可以收集信息,然后用来跟踪驾驶状况。HMI系统可以实时监控交通情况,防止交通碰撞和事故的发生。该系统对条件的反应包括:
-
反应型:系统会将所发生的事情通知驾驶员,例如胎压过低或疲劳驾驶,并提醒驾驶员。
-
主动型:系统分析情况,预测可能发生的情况,并根据潜在的不利条件向驾驶员发出警告。例如,对天气状况进行系统分析,并建议用户避免在冰天雪地里开车。在设计系统响应时,重要的不是向用户提供大量的信息,而是制定可靠的提示策略。
给用户的反馈内容应该是:
-
有价值:用户只看到他们关心的反馈。
-
及时性:应在需要时,准确地向用户发送反馈。
-
准确性:在设计反馈时,必须遵循模块化和格式塔原则,以确保用户能够快速理解反馈表达的含义。
// 认知负荷最小化
认知负荷是使用一个系统的心理和思考成本。用户的成本越低,使用起来就越方便。当一个车载系统需要大量的认知负荷时,说明该系统还有很大的改进空间。
首先,不要试图强迫用户记住有关汽车驾驶的信息。众所周知,用户在短期记忆中不可能记住很多信息,尤其是多个令人困惑的函数或抽象概念。提前考虑用户在驾驶过程中可能会遇到的问题,比如座舱温度是多少?你现在在听什么音乐?如何导航到目的地?基于这些场景和问题,系统可以回答用户的问题。
其次,在现有心智模型的基础上构建HMI至关重要。为什么大多数汽车都有类似仪表和中控?这些实际上是用户与汽车交互行为中固有的使用习惯,遵循一种熟悉的设计方式,最大限度地减少学习如何使用系统所需的工作量。
// 减少不必要的干扰
越来越多的智能汽车推出了各种车载语音助手,这些助手使用声音而不是触摸,作为用户与系统交互的主要媒介,使用它来控制场景,如切歌、打电话和调节温度等。
// 不言自明的导航体验
可发现性(发现系统中的具体特征)和导航体验应该是最高水平的设计。例如,许多车载系统现在面临太多的操作层级,用户需要多次点击才能找到他们需要的功能。这个问题可以通过仔细规划信息架构来避免,将常用的功能放在第一层级。
改善视觉效果。在关注美和适用效应的影响下,设计师可以提高系统的视觉效果,提高用户对系统的感知态度。
关注用户满意度。设计师试图在真实用户或潜在用户中可用性测试时,要问“这种设计给你的感觉如何?”如果发现用户体验不舒服,设计师可以提出更具体的问题,找出需要改进的地方。
未来发展趋势
现在的人机交互,就是图形用户界面交互。我们常见的Windows操作系统和手机上的ios和Android操作系统等都是非常底层的图形用户界面。在这个阶段,计算机接收用户多样化的输入形式,对用户进行输出的形式也产生了多样化。因此,在用户不断发出新的挑战的同时,也带来了更多新的商机。
// 虚拟与现实的无缝连接
汽车大屏下一个趋势是从车载大屏到全面屏所承载的增强现实体验。“全面屏”这个词从2017年开始就异常火热,越大的屏幕使用体验越好、越有科技感。不难预见,未来的车内大屏,除了屏幕技术外,应通过AR增强现实的手段来辅助驾驶操作,来实现人机交互的无缝连接。
// 无意识和无缝衔接的交互体验
汽车HMI人机交互的创新是消费科技产品进步的核心。在这个领域,近年最流行的概念大概就是“自然人机交互”,苹果多点触控交互设计,VR/AR 里的动作捕捉、空间定位,人工智能产品常用到的语音交互,都强调Intuitive interface,也就是直观、自然的交互体验,不需要太多学习就能上手。在汽车领域的应用形式如:上车前的汽车掌纹解锁、指纹启动与人脸识别,带指纹识别的一键启动,增强防盗功能;上车后的车内座椅位置、后视镜角度、温度调节,导航个性化设置,车联网/统一个人账户等。
// 自然语音交互
在车载环境下,语音交互的成熟可以改变现有很多车载HMI设计的层级。自然语音交互增加产品的易用性和交互的垂直性,大幅度提升用户黏性。
// 汽车介质材料的智能化演绎
智能表面集成数字交互技术是未来汽车材料的发展方向,通过特殊的介质材料来增加数字交互功能,并整合灯光、传感、触控、震动、数字显示、手势或语音控制等形式获得反馈和响应,打造可交互的下一代智能表面全新形式,汽车的智能表面交互设计正在结合更多场景,实现更更丰富的交互。
皮革作为重要的汽车内饰材料,特别是座椅面料能够满足消费者对内饰美感和舒适感的追求;智能皮革通过与电子传感器的结合,可进行各种灯光、图案显示,手指触控滑动可进行温度,灯光等调节。
塑料和金属材质也在大规模的智能化,手势触控、灯光屏显正在结合金属和塑料,在汽车触控上发挥更大的作用。
还有,运用在汽车天窗、车门、门板装饰条上的智能玻璃、整合在车门和门把手处的新材料、 应用于汽车座椅和装饰件上的智能织物等等,都将为未来的概念车带来极大的创新体验和震撼感。
HMI整体结构
State
一个State就是一个C++类的实例
State是Control中堆栈的基本组成元素,根据不同的需求State在Control内部组合成不同的堆栈结构
State的使命
- 控制Form的描画
- 对事件进行处理
- State之间的迁移
Form
只负责显示部分,至于什么时机显示和显示什么由State来控制
Form中的属性
通过Control对外暴露的接口,来改变部品的属性,从而实现State对Form的控制
State的迁移
Control中的堆栈
State是堆栈中的基本组成元素,通过改变State在堆栈中的排列方式,使HMI能描画出各种各样的表现形态
State的迁移方式
State迁移的4种方式
- Call
- Return
- Change
- Rewind
HMI-Framework内部定义了4种State的迁移方式,每一种迁移方式都实现了特定的迁移功能。通过不同的迁移,从而改变Control的堆栈结构。
State迁移的调用函数
State迁移的4个调用函数
- OnLoad
- OnForeGround
- OnBackGround
- OnUnLoad
通过调整State中4个函数的调用顺序,从而组合成不同的迁移方式,同时也为HMI作处理提供了合适的时机和场所
State的迁移方式
Call迁移方式
Call是做常用的迁移方式,在叠加State的情况下,都使用Call的迁移方式
Return迁移方式
从当前State返回到上一次迁移的State,Return迁移方式主要是为了实现返回功能
Change迁移方式
把当前的State替换为其他State的时候,使用的一种迁移方式
Rewind迁移方式
当需要直接返回到已经在堆栈中的State时,使用Rewind迁移方式
注意:迁移时的调用函数,不同的HMI框架可能调用内容不同,比如一个HMI在画面叠加时不会调用OnUnLoad(),但是在代码移植另一个HMI框架中时,又会调用OnUnLoad()处理,此时会发生很多问题,需要根据实际情况进行调整。
HMI在导航系统中的作用
- 描画用户界面
- 实现用户界面之间的迁移
- 实现用户所需的功能
HMI在导航系统中的位置
HMI的主要组成部分-Form
描画在导航界面上用户所能看到的部分
–上图中除地图部分外都由HMI负责描画,包括背景,标题,文字,按钮,图片等。
HMI的主要组成部分-State
控制Form的描画
- 通过属性的方式实现。
控制Form的迁移
- 通过控制Form的显示或消去实现,一个State通常控制一个或多个Form。
实现具体功能的入口与整合
- 从Form接收用户的事件。
- 调用Application接口执行具体的功能。
- 接收来自Application的反馈并处理。
HMI的通信方式-Event
TSW 事件(Touch SW Event)
- 用户点击某一个按钮时Form通过发送TSW事件通知State。
HD 事件(Hardkey Event)
- 用户压下某一个硬件时Form通过发送HD事件通知State。
PR事件(Preset Event)
- State之间通过发送PR事件的方式来告知彼此状态的变化。
Timer事件(Timer Event)
- State需要在一定时间做某事时使用Timer事件。
IE事件(Inner Event)
- Application通过发送IE事件的方式通知State状态的变化。
HMI的核心部分-HMIFrameWork
规则的制定者-HMIFrameWork
HMIFrameWork为HMI搭建了一个框架,HMI所有的程序开发都基于此框架进行,它描述了HMI应当是怎样管理与执行的。
如何实现state的创建、管理?
- HMIFrameWork定义了的基类CState,它具有前处理(OnLoad(),OnForeGround()),后处理(OnBackGround(),OnUnload())的功能,具有处理事件的功能(ProsessEvent())。所有继承自CState的类就是一个State。
- HMIFrameWork通过维护State的堆栈并定义State之间的迁移方式来实现对state的控制。
- State的四种基本迁移方式:Call,Change,Rewind,Return,使用这四种迁移方式的时候同时,也就进行了State的创建与销毁。
如何分类管理好各种功能?
- 通过将实现同一类功能的State组合到一个Application Control中实现(NaviControl,AuidoControl),一个Application会维护自己的一个State堆栈。
各个Application Control的管理(可见,不可见)由HMIManager进行。
如何实现事件的创建,传递与处理?
- HMIFrameWork中定义了事件的统一格式,从Form发送的事件或State之间传递的事件都会转化为统一的格式最终由State处理(Prosess Event)。
- 事件的产生与传递利用了操作系统的消息队列,通过向消息队列里压入与取得事件来实现系统各个不同部分之间的消息传递(PR事件除外)。
- 所有事件的处理都是通过State的ProsessEvent函数处理, Application Control通过在维护的State堆栈中找寻事件的 处理者的方式进行。
例子-如何实现算路功能
式样需求
Form制作
需要新建用多少个Form来实现此功能?
三个。
Form上的部品有哪些?
标题,按钮,背景,地图方位mark等。
哪些部品是可变的,哪些部品是固定的?
标题,按钮的位置固定,按钮文字可变等,按钮状态可变等。
怎么样同State交互?
按钮文字通过SwStr属性,按钮状态通过SwStatus属性同State交互。
按钮事件通过TSW事件并带上按钮序号参数通知State。
State制作
需要新建多少个State实现此功能?
三个。
每个State需要更新什么样的Form属性?
SwStr,SwStatus等。
每个State需要处理什么样的事件?
Touch按钮事件,底层算路完毕IE,Hardkey事件等。
State实现该功能需要调用什么样的底层接口。
算路接口,显示地图接口等。
每个State的前处理,后处理需要做什么?
前处理需要显示form,打开地图等,后处理需要消去form,释放内存等。
确定Form,State与Appli交互流程
1.用户点击[计算路线]按钮后,AUI发送TSW事件到State_RouteMenu。
2.State_RouteMenu判断用户点击的是[计算路线按钮],则调用Navi Appli接口开始算路。
3.State_RouteMenu call出State_Searching。
4.State_Searching显示出正在计算路线的Form。
5.Navi Appli算路完成后发送IE事件给处于栈底的 State_Location。
6.State_Location判断计算结束,call出State_RouteSingle。
7.State_RouteSingle显示出单经路的Form。
参考:
HMI人机界面基础知识及设计工具 - 知乎 (zhihu.com)
行业前沿:HMI路在何方? Plug and Play 中国 (pnpchina.com)