地铁列车显示屏软件的设计与开发
2018-05-10杜苗苗宋君君
杜苗苗, 宋君君, 冀 云
(中车唐山机车车辆有限公司 产品研发中心, 河北唐山 063035)
随着轨道交通的快速发展,地铁已经在国内很多城市开通运营,给人们出行带来了极大的便利,同时也加快了城市的建设,今后地铁项目将会走入更多的城市,得到更快的发展,列车人机交互接口单元作为列车网络控制系统的终端设备在地铁项目中得到了广泛的应用。
列车网络设备多而复杂,而人机接口交互单元可提供车辆运行状态信息、故障信息以及安全操作提示,同时司机及维护人员也可根据显示信息对列车进行参数设置、自检测试及系统维护等操作[1],因此列车显示控制单元是列车正常运行的重要保证之一,此部分的设计与开发工作对于列车行车安全有着重要的意义。为了满足地铁列车运行过程中的监控需求,及时解决列车调试过程中的问题,加快列车调试效率,特对其显示屏软件进行自主设计与开发。
1 系统介绍
1.1 硬件介绍
每辆地铁列车配置两个人机交互接口单元(Human Machine Interaction Interface Unit,简称HMI),显示器分辨率为1 024×768,处理器为PowerPc架构,主频为400 MHz,平台操作系统采用开源的Linux操作系统,并且支持多种通信方式,全触摸无按键电阻屏,色彩鲜明,人机交互友好,应用程序数据操作精确,采用U盘下载方式,简单快捷。
1.2 开发环境介绍
HMI的软件开发是在Linux操作系统下,使用Qt Creator开发工具来进行的。Qt是基于C++开发语言、跨平台的图形用户界面应用程序框架,它包括一套跨平台的类库、一套整合的开发工具和一个跨平台的集成开发环境[2],采用面向对象编程,封装良好,满足显示屏软件开发过程中的需求。
2 应用程序设计
2.1 网络拓扑
地铁列车采用6辆编组,网络控制系统主干网采用满足IEC 61375-1标准的MVB网络[3],主要硬件设备有列车中央控制单元CCU、数据记录模块ERM、中继器REP、远程输入输出单元RIOM、人机接口设备HMI和必要的总线终端连接器等。网络拓扑图如图1所示。
2.2 界面设计
根据用户需求,地铁显示屏界面主要包括司机界面和维护界面两大部分,设计界面显示框架如图2所示。
3 应用程序实现
3.1 显示界面实现
显示屏界面是由自定义类CPage实现,每个界面类基于CPgae类派生而来,继承基类的基本属性,通过调用自定义的按钮,图片,文本,线条,编辑框等控件来实现对各界面的绘制。各界面类包括对界面的初始化及函数的定义:
① ROMDATA g_PicRom_Main[];∥结构体数组,实现对各控件的初始化
② Void OnInitPage(); ∥界面初始化函数,实现首次进入界面各变量的初始化
③ Void OnShowPage(); ∥界面展示函数,实现每次切换到该界面所需控件状态的显示
Tc-拖车;M-动车;CCU-列车中央控制单元;REP-中继器;DXM-数字量输入输出模块;DIM-数字量输入模块;AXM-模拟量输入输出模块;ERM-事件记录仪; ATC-列车自动控制;HMI-人机接口单元;FDS-火灾报警系统;PIS-乘客信息显示系统;MDCU-车门控制单元;ACU-空调控制单元;DCU/M-牵引控制单元;DCU/A-辅助控制单元;BECU-制动控制单元;BMS-蓄电池;CCU-D-数据记录仪。图1 网络拓扑图
图2 界面设计框架图
④ Void OnUpdatePage(); ∥界面更新函数,实现实时数据的通讯以及各控件状态的刷新
静态界面的实现主要在ROMDATA结构体数组中,根据功能划分,将界面显示分为4部分,包括公共信息显示区、主显示及功能按钮区、故障提示区和公共按钮区,如图3所示。其中公共信息显示区包括对列车站点、电压及时间等重要信息的显示,主显示区根据用户对按钮的选择显示对应的信息,故障提示区提示列车当前的最新故障,按钮区实现用户的操作。
3.2 数据通讯
列车显示屏实现对列车运行过程中实时数据的监控,要对MVB总线数据进行读写操作。根据各系统接口规范,MVB数据通讯部分首先要对端口进行定义,需要先进行pit表的配置,pit表是定义端口号,源宿端口和端口大小所生成的配置文件。关于配置pit表所使用的工具如图4所示。
图3 显示屏界面
图4 pit表配置工具
在配置工具中各项的定义为:
① 端口号: 十六进制数表示;
② 端口类型: 1表示宿端口(接收数据端);2表示源端口(发送数据端);
③ 端口存储地址:第一个地址为4,第二个地址为8,第三个地址为12,…,以此类推,不能使用端口地址0;
④ 端口大小: 端口的大小可以是2,4,8,16,32,根据数据流选择相应的端口大小,在pit配置工具中分别对应0,1,2,3,4。
各端口输入完毕,点击生成配置即可生成相应的数据pit表。pit表配置完毕,对数据读写函数进行调用并对其数据进行逻辑处理
∥读数据函数
mvb.get_uint(unsigned short port_num, char ofs_byte); ∥读双字数据
mvb.get_uchar(unsigned short port_num, char ofs_byte); ∥读单字节数据
mvb.get_ushort(unsigned short port_num, char ofs_byte);∥读单字数据
mvb.get_ubit(unsigned short,char ofs_byte,char ofs_bit); ∥读bit位数据
∥写数据函数
mvb.put_uint(unsigned short port_num, char ofs_byte, unsigned char value);∥写双字数据
mvb.put_uchar(unsigned short port_num, char ofs_byte, unsigned char value); ∥写单字节数据
mvb.put_ushort(unsigned short port_num, char ofs_byte, unsigned char value); ∥写单字数据
mvb.put_ubit(unsigned short port_num, char ofs_byte, char ofs_bit, unsigned char value); ∥写bit位数据
依据各系统接口规范,通过对以上函数的调用,来获取MVB总线上的实时数据,根据数据值,对其进行逻辑处理并对相关控件的状态进行控制,来实现界面的刷新。
4 故障诊断
列车故障诊断部分是网络控制系统的一个重要组成部分,主要实现车载各部件故障数据的采集、分析、转储和显示功能[4]。故障诊断程序主要是对故障字典数据表的建立以及对数据库数据的读写操作。
根据故障对子系统或列车的性能或安全性的影响划分为不同的故障等级,不同的故障等级对应不同的声光信息提示,有4种等级:
(1) 严重故障 :列车无法动车、安全回路故障、烟温探测报警、关键系统故障等;
(2) 中等故障 :司机操作失误、乘客信息系统故障等不影响列车牵引的故障;
(3) 轻微故障 :空调系统、备份功能切换等不影响列车正常载客运营的故障;
(4) 提示信息:非故障,只作一次性的提示作用。
故障诊断程序实时检测故障数据信号,当检测到列车发生故障时,根据端口号、字节号以及位的信息来查询故障字典中相应的故障数据,并且将查询中的信息记录到当前故障列表中,同时在HMI上进行显示。当故障消失后,故障信息从当前故障列表中删除,插入到历史故障列表中,当前故障列表和历史故障列表到达一定的数量限制之后,将最早的100条记录进行删除,故障诊断程序流程图如图5所示。
经过上述几部分的代码开发,显示屏应用程序已基本开发完毕,经本地测试之后,交叉编译生成镜像文件,通过U盘下载到HMI设备中,经过试验台的功能测试,再上车联调。自主开发显示屏程序给测试人员带来了很大的便利,调试过程中的问题能够得到及时的反馈和解决,大大提高了工作效率。
图5 故障诊断程序流程图
5 结束语
网络控制系统作为一列车的大脑,意义重大,而HMI作为列车网络控制系统的眼睛也担负着重要作用,列车显示屏的软件设计与开发工作对测试人员、司机及维护人员都有着重要的意义。地铁列车显示屏程序应用软件已在地铁项目中运用,经过多次试验和调试,列车现已进入运营阶段。该地铁显示屏应用程序下载简单,人机界面交互友好,用户操作便捷高效,软件运行稳定可靠,对其他轨道交通项目的显示屏软件开发具有很好的参考价值。
[1] 李 伟,张天军.一种基于Linux的地铁列车显示屏设计[J].铁道车辆,2014,52(12):29-30.
[2] 闫锋欣,曾泉人,张志强.C++ GUI Qt4编程[M](第2版).北京:电子工业出版社,2011.
[3] IEC 61375-1— 1999.Electric Railway Equipment Train Bus Part 1:Train Communication Network[S].
[4] 孙帮成.CRH380BL型动车组[M].北京:中国铁道出版社,2014.