APP下载

基于Qt的矿用自卸车HMI软件设计与开发

2019-11-14梁智勇崔岚穆岩岩赵贝

软件 2019年9期

梁智勇 崔岚 穆岩岩 赵贝

摘  要: 为了实现矿用自卸车信息的实时显示和人机交互功能,设计并开发了基于Qt构架的HMI软件。软件开发以ARM9为硬件基础,搭建了Ubuntu+Qt的开发平台,在提出界面功能概述和拓扑结构的基础上,采用了基于界面基类、主框架界面和信号与槽的开发技术,实现了各界面的构建、切换、实时数据采集、故障记录和信号标定等功能。实验结果表明,HMI软件运行稳定、功能完善、交互友好,满足设计要求。

关键词矿用自卸车;HMI;ARM9;Ubuntu;Qt

中图分类号: TP311.1    文献标识码ADOI:10.3969/j.issn.1003-6970.2019.09.024

本文著录格式:梁智勇,崔岚,穆岩岩,等. 基于Qt的矿用自卸车HMI软件设计与开发[J]. 软件,2019,40(9):101-104

Design and Development of HMI Software for Mine Dump Truck Based on Qt

LIANG Zhi-yong, CUI Lan, MU Yan-yan, ZHAO Bei

Research Institute of Datong Electric Locomotive Co., Ltd of CRRC, Microcomputer Network Control Laboratory, Shanxi Datong 037038,China

Abstract: In order to realize the function of real-time display and human-computer interaction of mining dump truck, designed and developed the HMI software based on Qt framework. Development of software was based on ARM9, established the platform based on Ubuntu and Qt, on the basis of proposing the overview of interface function and topological structure, using the development technology based on interface of base class, interface of main frame, signal and slot, achieved the function of construction of each interface, change, real-time data acquisition, fault record and calibration of signal. The experimental results show that: HMI software run stably, had perfect functions and friendly interaction, meeting the design requirements.

Key words: Mining dump truck; Human machine interface; ARM9; Ubuntu; Qt

0  引言

交流电传动矿用自卸车广泛应于矿山和能源等领域,与普通自卸车相比,矿用自卸车具有耐用性强、载重量大、适用于各种矿区和复杂工况地面条件运输等优点[1-2]

随着整车控制系统的应用,矿用自卸车的模块化和自动化程度进一步提高[3],但伴随而来的是矿用自卸车系统各部件信息和故障不能方便及时地反馈给司机,因此为了实现对整车控制系统的实时监控,人机交互界面(HMI)功能的现实就显得特别 重要。

通过人机交互界面,司机可以很方便地掌握矿车运行状态的信息,并对矿车各部件反馈的信息和数据进行实时监控。通过分析HMI显示屏的实时故障和记录的历史故障,可以有针对性地解决矿车运行时遇到的各类问题。司机还可以通过HMI显示屏界面向矿车控制系统发送信息,从而完成矿车参数设置和信号标定等工作。因此,人机交互界面的实现对矿车信息监控、故障的分析和处理以及整车运行的稳定性都有重要的意义。

鉴于人机交互界面对整车运行的重要意义,本文在ARM硬件平台的基础上,开发了一种基于Qt的矿用自卸车人机交互界面软件,这为矿用自卸车安全运行提供了保障。

1  硬件平台介绍

硬件平台选用基于ARM9处理器的电路开发板。ARM板带有CAN通讯模块和液晶显示屏,CAN通讯模块基于MCP2515和MCP2551芯片设计[4],液晶顯示屏尺寸为10.4英尺,分辨率为800*600,通过LCD接口与电路板相连。

Qt应用程序可通过电路板的IF卡槽或USB接口拷贝至ARM板linux系统中运行。

为实现在ARM板linux系统中运行Qt应用程序,需要通过Busybox制作带有QtE的文件系统,制作完成后将其烧写进ARM板并修改系统的环境变量[5]

2  软件开发环境

2.1开发环境的特点

软件开发采用基于Ubuntu-Kylin操作系统的Qt Creator软件。

Ubuntu-Kylin系统是Ubuntu系统的衍生版,具有应用广泛、系统稳定、发展成熟和可移植性强等优点[6],此外,其符合中国用户的定制功能会大大提高编程的效率。

Qt是Trolltech公司开发的跨平台C++图形用户界面应用程序的开发框架,有着“一次编写,到处编译”的美誉,Qt Creator则是一款基于Qt框架用于开发GUI应用程序的集成开发环境。Qt Creator独特的元对象系统支持信号与槽机制,这一特性使得程序中各对象之间的协同工作变得十分简单,其丰富的API、类库和大量实例为UI界面的设计提供了思路和帮助[7]

2.2软件平台的搭建

为了实现程序的可移植性,Qt Creator需要安装Qt/x86和Qt/Embedded,Qt/x86用于程序的本地机编译运行,Qt/Embedded用于交叉编译,平台的搭建步骤如下:

(1)下载Qt4源代码,编写Qt4编译脚本,运行脚本后编译出Qt/x86和Qt/Embedded;

(2)软件采用交叉编译的方式,因此将ARM编译器复制到Ubuntu-Kylin系统某一目录下,并在系统环境变量中添加ARM编译器路径[8];

(3)在PC機中安装Qt Creator,并通过设置本地编译器、交叉编译器路径以及对应的Qt版本,完成两种构建套件(kit)的配置;

在Qt应用程序源代码编写完成后,可通过选择Qt/x86版本进行本地机编译,通过选择Qt/Embedded版本进行交叉编译,交叉编译后的文件可直接运行在ARM板系统中。

3  软件设计

3.1 HMI软件功能概述

软件主要功能包括:整车数据显示功能、实时故障显示功能、人机交互功能和历史故障记录功能,如图1所示。

软件对矿用自卸车的电传系统、液压系统、柴油机系统和网络状态进行实时监控,并将相关数据显示在界面中。

为保证司机能在第一时间发现并处理故障,软件通过界面实时显示DCU、ACU、MCU1/2和柴油机的相关故障,并通过点击故障条可以弹出相应故障的解决方法。HMI软件将监测到的实时故障通过数据流的形式保存在dat文件中,便于线下故障的分析和处理。

司机通过显示屏触屏操作,可以向矿车控制系统发送信息,完成矿车参数的设定和信号的标定工作。设定的参数包括前进/后退车速限值、车号和日期/时间值等,信号的标定工作发生在矿车首次调试、检修维护和更换硬件后,主要包括油门踏板电压值、制动踏板电压值和恒速旋钮电压值,目的是为了矫正信号,使设定的值和硬件相匹配。

3.2 HMI软件构架设计

为实现软件的各项功能,提出如图2所示的软件构架。构架包括主界面、网络拓扑界面、矿车各系统信息显示界面、矿车参数设置界面、信号标定界面、实时故障界面和历史故障界面。

为避免误操作,对矿车参数设置和信号标定界面设置了密码保护。状态条界面显示矿车网络系统中各个部件的生命状态和液压起重的状态信号,该界面只在特定的几个界面中配合显示。

3.3主框架界面布局设计

为保证软件构架中各界面能够正常显示和切换,需要在软件设计时加入主框架界面,所有界面和窗口部件均布置在主框架界面上。

主框架界面布局如图3所示,标题栏构建于主框架界面的顶部,导航栏构建于主框架界面的两侧和底部,软件构架中的各界面构建于主框架界面的中部,中部各界面通过导航栏中的按键进行切换。

主框架界面左侧导航栏控制主界面、网络拓扑界面和柴油机系统界面的切换。右侧导航栏控制电传系统界面、液压系统界面和参数设置界面的切换。底部导航栏控制实时故障界面、历史故障界面、信号标定界面、车速设置界面和软件版本界面的切换。

3.4软件流程设计

软件程序按照图4所示流程进行设计。程序开始执行后,开机界面显示3s后隐藏,程序开始构建主框架界面MainWidget。在MainWidget中完成各组成界面的构建,设置主界面初始状态为显示,其余界面均为隐藏。当各导航栏按键触发切换界面的信号时,程序会根据信号与槽的机制将中间界面进行切换。

MainWidget构建时添加HMI内部数据库DataBase和通讯类NetCAN。构建DataBase可以定义并初始化界面显示所需的全部变量,构建NetCAN可以完成通讯端口的配置、初始化以及应用层数据协议解析等工作。

此外,MainWidget会构建定时器和刷新函数,刷新函数每1s执行一次NetCAN的同步函数synchronize(),从而完成CAN总线数据的实时捕获和数据解析,解析完成后将相应的数据赋值给DataBase的各成员变量,最后根据每个界面和DataBase的对应关系,完成各界面数据的刷新。

3.5软件关键技术介绍

软件程序设计时,主要存在以下关键技术。

3.5.1  界面基类的编写

软件构架中的各界面均继承自界面基类,该基类使各界面具备以下功能:

(1)使用元对象系统的一些特性,如信号与槽机制[9];

(2)使用基类中包含的各类控件,避免在每个界面中反复声明;

(3)可以调用定位子函数,在主框架界面构建时快速定义各界面的位置。

3.5.2  界面切换的实现

当点击各导航栏中的按键时,按键发出的信号会触发导航栏来执行界面切换函数,并在界面切换函数中执行ChangePage(int)函数。

ChangePage(int)是在基类中定义的信号函数,该函数触发后向其父类传送信号,代码如图5所示。导航栏显然也继承了该特性,导航栏的父类是主框架界面,因此导航栏的按键触发将使主框架界面接收信号并执行槽函数SwitchPage(int)。

在槽函数SwitchPage(int)中,以当前传递的信号值为筛选条件,通过遍历包含各界面的容器类QMap实现在主框架界面中各界面的切换功能。

3.5.3  通讯类中同步函数的设计

同步函数的作用是根据数据协议对接收到的字节流进行有效数据解析。

本项目规定有效数据以$字符开头,以N字符结束,第2~4个字符表示设备ID,ID后面有效数据之间以逗号分隔。

同步函数在读取到字节流后,首先通过$字符判定是否为有效数据,然后再读取前四个字节以确定数据的来源,并通过逗号分隔和条件选择将数据解析。

3.5.4  历史故障界面的编写

在MySQL平臺编写故障数据库,库表中将故障代码作为主键,将故障描述作为外键[10]。在Qt Creator以外的DBMS编写故障数据库的好处是:当故障信息发生变化时,无需修改程序,只需通过网线对ARM板系统服务器库表进行相关更新即可。

程序运行时将首先读取服务器故障数据库,在更新程序中的故障容器后,会根据同步解析获得的故障信息以遍历的方式将相关故障显示到显示屏,并通过数据流的方式将故障写入到文件。显示屏下次开机时程序会自动读取该文件,从而完成历史故障的记录和显示。

4  实验验证

程序编译无误后,在实验室ARM平台对界面程序进行了实验。

通过TF卡或U盘将交叉编译后的可执行文件拷贝至ARM板系统目录下,修改文件权限和开机脚本,重启显示屏,然后对以下工作进行测试:点击按键验证界面切换功能是否正常;校验故障显示和记录功能;点击各交互按键,通过监控CAN总线数据流判定交互功能是否正常;改变总线数据,查看界面数据刷新是否正确,如图6所示。

实验结果表明:设计的软件界面运行良好,满足设计需求,实现了各项功能。

5  结论

本文设计了一套运行稳定、功能完善、界面友好的HMI软件。软件开发以ARM9电路板作为硬件平台,成功搭建了基于Ubuntu+Qt的软件开发环境,实现在Qt Creator软件下的宿主机编译和目标机交叉编译,使交叉编译后的程序可以直接运行在ARM板系统中。

为实现软件提出的各项功能,设计了软件的整体构架,完成了主框架界面的布局,总结出软件的各项流程,在此基础上,编写出软件的各部分程序。此外,本文对程序中的关键技术进行了介绍,总结出界面基类、通讯类、界面切换和历史故障界面的编写方法,这为程序功能的完整性奠定了技术基础。

软件在实验室ARM硬件平台进行了测试,结果表明满足各项设计要求,这为矿用自卸车提供了一套可行性较强的人机交互界面,也为国内矿车显示屏界面的设计提供了思路。

参考文献

[1] 王领, 樊庆琢, 宫站伟. 矿用自卸车发展历程与技术升级路径[J]. 工程机械与维修, 2015(7): 62-64.

[2] 冯庆东, 帅健, 许葵, 等. 矿用汽车的国内外现状[J]. 煤矿机械, 2011, 32(10): 3-5.

[3] 任伯涛. 矿用电动轮自卸车的电气系统设计[J]. 南方农机, 2017, 48(8): 39-40.

[4] 孙龙, 刘晖虎. 基于MCP2515的CAN总线控制软件的设计与实现[J]. 现代信息科技, 2018, 2(7): 4-8.

[5] 甄海涛, 聂洪淼, 陈庆文. 基于嵌入式Linux的根文件系统制作与移植[J]. 自动化技术与应用, 2014, 33(12): 21-24.

[6] 张金石. Ubuntu Linux操作系统[M]. 北京: 人民邮电出版社, 2016.

[7] 霍亚飞. Qt Creator开发实战精解[M]. 北京: 北京航空航天大学出版社, 2012.

[8] 张欢庆, 高丽, 宋承祥. 基于ARM的嵌入式Linux交叉编译环境的研究与实现[J]. 计算机与数字工程, 2012, 40(2): 151-153.

[9] 金繁, 崔培雷. 嵌入式Qt中信号与槽机制的研究[J]. 电子设计工程, 2014, 22(24): 168-170.

[10] 贝尔. 深入理解MySQL[M]. 北京: 人民邮电出版社, 2010.