APP下载

列车运行控制系统人机界面设计

2014-03-26毕海婷任大伟

长春工业大学学报 2014年2期
关键词:人机界面控件车载

毕海婷, 任大伟

(1.烟台职业学院电气工程系,山东烟台 264670;2.烟台冰轮股份有限公司,山东烟台 264000)

0 引 言

列车人机界面(Human Machine Interface)是列车工作人员与车载设备信息交互的平台,是列车运行控制系统中的一个重要组成部分。随着铁路的迅猛发展和微机控制技术的飞速进步,传统的模拟仪表和指示灯为主的人机接口已经不能满足现代高速列车的需求。由此,基于微机控制的高速列车司机台显示屏[1-2]应运而生。显示屏提供了良好的人机界面,实现数据采集、处理和显示工作,对列车设备进行监视和控制,实时地得到有关列车和线路的相关状态和数据。并且,通过人机界面可以对车载设备发出的命令和警告及时进行响应,帮助列车工作人员更好地了解并完成任务,在最大程度上保证列车的安全正常运行。

基于此,文中以PIXY显示屏为硬件核心,在Linux系统平台下,基于Qt4软件开发环境设计了一个内燃动车组的人机交互界面。

1 人机界面整体设计[3]

人机界面主要平台是PIXY显示屏,以功能强大的x86架构为数据处理核心,并且在硬件电路上具有较强的抗电磁干扰和抗振能力。具有显示容量大、信息集成显示、信息可存储等特点,使机车司机室的显示装置简洁化和标准化。此外,该显示屏内嵌了一个类似于Linux的系统,Qt4开发的应用程序可以在这个系统环境下安装、调试和编译。

针对列车运行控制系统人机界面,主要完成人机交互结果的显示,设计原则是将列车运行过程中产生的重要数据和信息直观、简洁、友好地显示在人机界面上,并且要对数据进行分析,对车载设备中出现的故障及时准确地反馈给司机和列车上的工作人员。为了方便完成列车工作人员与车载设备交互工作,人机界面提供了硬件键盘输入和触屏输入两种方式来完成各个子界面相关的动作。根据显示的信息量,人机界面主要划分为以下子界面:主界面、柴油机、门界面、开关界面、门控选择、速度限制、历史故障、目前故障、维护登陆、维护、轮径设置、时间设置、密码设置、TCU界面、网络状态、RIOM界面、RIOM-DI、RIOMDO、RIOM-AX、软件版本、MVB数据。人机界面的流程树如图1所示。

图1 界面流程树

每个界面按功能分为3个区域,分别为基本信息显示区、综合信息显示区和界面切换按钮区。基本信息显示区:该区为固定显示区,显示内容包括列车编号、速度、界面名称、时间、日期。综合信息显示区:信息总览,包括了车载设备的运行状态、数据信息以及状态信息,如中间电压、中间电流等。界面切换按钮区:该区为界面切换的按钮区,点击按钮时背景色变为蓝色表示按键按下,执行相应的功能。

人机界面采用C++语言面向对象程序设计方法,将每一个界面封装成一个类。在界面中将不同功能的程序封装成不同的子模块,各个模块互不干扰。

2 人机界面软件构架

2.1 界面显示模块[4-6]

人机界面显示模块主要包括了两个部分:控件部分和界面部分。

2.1.1 控件部分

控件部分主要由按钮(CButton)、标签(CLable)、图片(CImage)、直线(CLine)、柱形条(CBar)、编辑框(CEdit)6个部分组成。各个控件类将数据和函数封装在一起形成类,从抽象类CControlInterface中以共有继承的方式来实现。

控件数据部分(protected):包括字符串(m_str)、显示的区域(m_rect)、显示的字体(m_font)、字体颜色(m_txtcolor)、背景色(m_bkcolor)、控制ID号(ctrl_ID)以及绘图指针变量(m_painter)。根据这些参数,利用Qt二维绘图工具Qpainter来绘制控件的外观部分。例如,通过下面两行代码可以绘制一个m_rect区域,在这个区域上显示字符串m_str,区域显示的背景颜色为m_bkcolor。

控件函数部分(public):抽象类CControlInterface为整个控件类族提供了统一的接口,以虚函数的方式实现多态性,可以灵活地进行动态绑定。在程序中通过外部接口重置每一个控件对象的数据部分,从而更改显示字符串、字体、字体颜色、背景色以及显示区域。

2.1.2 界面部分

界面部分包括了各个子界面,将数据和函数封装在一起形成类,从抽象类class CPage中以共有继承的方式来实现。

界面的数据部分主要由界面上显示的控件对象组成。车载设备产生数据信息和状态实时动态显示在对应的控件上。

界面的函数部分主要包括了界面显示、数据更新、交互功能等。按键对象与对应的功能函数绑定,在主对话框dialog中列车工作人员可通过按键或触屏两种输入方式对不同界面的按键对象进行动态操作,从而实现界面切换和车载设备参数设置的功能。

2.2 MVB数据通信模块

为了缩短开发时间和轻松访问MVB数据,PIXY公司提供了一种完善的MVB库文件,对用户来讲底层代码是隐藏的,只需要通过MVB API来访问。MVB API提供了一个标准的C接口,以头文件的形式封装,通过这个接口可以访问到MVB库文件里包含的所有的总线具体配置细节。对MVB总线有3种操作状态,即停止状态、配置状态和操作状态,3种状态可以相互转化。MVB总线在实际应用中主要工作在配置状态和操作状态,这两种状态的相互切换可以增加、减少或修改程序中逻辑端口。

停止状态主要用来完成MVB总线的初始化工作,打开MVB设备。初始化ISA总线I/O寄存器和将物理内存从MVB通道映射到用户空间。由其它状态返回到停止状态时MVB设备关闭,控制器停止,所有被分配的内存消失。

配置状态主要初始化MVB输入输出端口。给MVB通道分配一个逻辑地址,并指定端口是输出端口还是输入端口。

操作状态主要从端口中读写数据,每个端口一次读写16个字节。在程序中必须先完成MVB总线初始化工作和对MVB总线的配置,才可以访问到MVB总线上的数据。

通信程序执行流程如图2所示。

图2 MVB数据通信流程

2.3 故障诊断模块[7-9]

列车有多个分散控制的复杂单元,包括了TCN,TCU,ACU,VCU,RIOM,FFR,DOOR,EU,HCU,可能发生很多的错误,诊断系统可以进行确认、评估并提供维修指南在HMI界面上显示。诊断系统的任务是对列车人员在列车运行、维护和维修期间修正错误提供有效的支持,从而实现可靠的客运服务。故障诊断程序主要由3个部分组成:知识库、推理机和人机接口。

知识库主要表现为专家知识的集合,存放了大量专家经验和理论知识构成了故障诊断系统的核心部分。知识库表示方法在结构上主要包括事实性知识和规则性知识形成的事实库和规则库。事实部分由故障名称、故障代码、故障等级、维修指南组成。规则部分由MVB字节偏移地址、字节中的位置、故障发生标志、故障确认标志组成。

推理机是专家系统的组织控制机构。程序中推理的控制策略采用正向推理方法。诊断流程如图3所示。

图3 故障诊断流程

故障知识库提供了一组初始数据,形成一个当前匹配的知识集,从中选择第一条知识作为启用知识进行推理,根据MVB通信采集的数据信息,综合运用各种规则进行故障的推理,将推出的事实存入故障列表中,作为后面继续推理时可用的已知事实,重复这一推理过程直到知识库的最后。

人机接口是人与专家系统打交道的桥梁和窗口。目前故障界面总览实时故障信息,包括了故障代码、故障日期、开始时间、故障等级、故障位置、故障设备。在故障没解决的情况下,最新的没确认的故障的功能代码和车号闪烁显示在每个屏幕的右手边状态栏中的黄色区域。已经确认的故障信息,可查看故障信息的解决方法来消除故障,从而使列车有一定的功能限制也可以继续安全运行。已解决的故障在当前故障界面列表中删除,将其显示在历史故障界面中,并将故障信息存储在文档中。系统下次启动时从文档中读取历史故障信息数据,并显示在历史故障界面中。为了方便观测故障信息,可以从故障等级、开始日期、故障位置、故障设备对故障进行监视,各个监视器可以共同作用。

3 人机界面的实现

利用C++面向对象编程语言,并利用Troll Tech公司出品的Qt4软件,一个跨平台C++应用程序开发框架来进行软件开发。

3.1 界面显示

控件对象作为每个界面对象的数据部分显示在界面上,并将创建的界面对象存入vector容器中。首先,自定义一个结构体struct ROMDATA数据类型来表示描述控件的数据部分,根据这些参数绘制控件。然后,定义一个ROMDATA类型结构体数组存放所有的控件,数组中每一个元素都代表着一个控件对象,这样一个界面的所有控件就由一个数组来存储,可实现对所有页面控件对象的统一管理。最后,根据控件种类nControl Type不同来绘制各个控件,并将其显示在界面上。对MVB数据流进行处理后,根据控件唯一的ctrl_ID标识,在程序中将数据显示在指定的控件上。

3.2 数据更新

利用Qt信号和槽的机制,实现对象和函数的绑定。定时器定时200 ms,定时时间到发出timeout()信号,执行数据更新函数On UpdateData(),定时器又重新计数,从而来实现每200 ms数据更新一次。在数据更新函数中完成以下任务:通过MVB数据通信模块程序,实时采集列车运行过程中车载设备的数据信息;界面显示模块程序对数据信息进行处理;故障诊断模块程序对数据信息进行分析。最终将所有信息都显示在人机界面上,从而使列车工作人员能够方便地观测到车载设备运行状态。

3.3 交互功能

为了方便完成人机的交互工作,系统提供了两种人机交互方式。利用Qt的事件处理机制,keyPressEvent事件实现键盘输入;mouse-PressEvent事件来实现触屏输入。键盘按下或者触屏按下,执行对应按键功能,从而可以实现界面的动态切换和车载设备参数设定。

3.4 界面运行

人机界面运行主界面如图4所示。

图4 主界面

MVB数据界面将通信数据显示在界面上,如图5所示。

图5 MVB数据界面

列车运行故障中产生的所有故障实时动态显示在界面上,如图6所示。

图6 故障界面

4 结 语

首先介绍了人机界面的整体设计包括各个子界面的划分以及界面功能区域设计。然后介绍了人机界面的软件构架,界面显示模块,从控件到界面的设计;MVB数据通信模块,实现车载设备数据的采集;故障诊断模块,保障列车运行安全。各个功能模块为单独的程序,使得系统拥有较强的逻辑性以及可扩展性。最后,在此基础上实现界面的显示、数据更新和交互功能,并展示了人机界面的效果。由此可以看出,文中阐述的人机界面设计方案具有较强的实用性。

[1] 客金坤,梅樱,郭红卫,等.基于图形化编程语言的列车人机界面设计[J].都市快轨交通,2007,24(1):66-68.

[2] 任亚飞,唐涛.基于嵌入式Linux的列控系统车载人机界面的设计与实现[J].铁路计算机应用,2005,14(12):23-26.

[3] 张立斌.基于Qt的电力机车显示屏系统的软件设计[D]:[硕士学位论文].大连:大连海事大学,2008.

[4] Jasmin Blanchette,Mark Summerfield.C++GUI Qt4编程[M].2版.北京:电子工业出版社,2011.

[5] 蔡志明,卢传富,李立夏.精通Qt4编程[M].2版.北京:电子工业出版社,2012.

[6] 郑莉,董渊,何江舟.C++语言程序设计[M].4版.北京:清华大学出版社,2012.

[7] 陆陆,徐正国,王文海,等.列车运行控制系统故障诊断方法研究[J].铁道通信信号,2010,46(5):44-46.

[8] 李婷,刘峰,张春.铁路动车组故障诊断知识库管理系统的设计[J].电脑知识与技术,2008,16(12):1243-1245.

[9] 刘白林,范跃华.故障诊断专家系统中的推理机设计[J].西北工业学院学报,2004,24(3):240-243.

猜你喜欢

人机界面控件车载
一种车载可折叠宿营住房
基于.net的用户定义验证控件的应用分析
高速磁浮车载运行控制系统综述
奔驰S级48V车载电气系统(下)
关于.net控件数组的探讨
智能互联势不可挡 车载存储需求爆发
CBTC系统车载人机界面的设计与实现
基于PLC与人机界面的经编机电子横移控制系统研究
CTCS-3级列控车载人机界面的系统设计与实现
达人机界面DOP-B10VS511