APP下载

基于变量快速提取的显示屏系统的设计及实现

2020-07-10张雁勋王晋斌梁智勇

软件 2020年5期
关键词:牵引车数据流显示屏

赵 贝,张雁勋,王晋斌,梁智勇

(中车大同电力机车有限公司,山西 大同 037038)

0 引言

电力蓄电池牵引车(以下简称牵引车)是中车大同电力机车有限公司自主研发,用于段内调度地铁列车[1]、牵引平板车运输货物等,也可兼顾列车救援。现阶段机车显示界面的设计还没有一种较为快捷的导入数据流的方法,为实现显示屏设计自主高效研发,大同机车厂提出以牵引车为起点,自主研发一套可快速导入变量的、完整的、可适用于所有车型的显示屏系统,为设计及售后提供便利。

1 牵引车网络功能概述

TCMS(微机网络控制系统)包括DDU(司机显示单元)、CCU(中央控制单元)、RIOM(远程输入输出模块)、TCU(牵引控制单元)GW(网关)等部分。车辆网采用MVB(多功能车辆)总线。

其中,CCU完成MVB网络总线管理功能。RIOM负责采集现场信息和数据,同时驱动相应部件现场执行。DDU位于牵引车司机室操作台,在车辆运行过程中显示车辆状态信息、故障信息和操作提示,同时完成地铁车辆的运行控制。另外司机通过 DDU也可对车辆进行参数设置及功能测试。

2 硬件介绍

牵引车显示屏采用两台 12.1英寸的 PIXY INC-91,INC-91支持XGA方案(1024*768像素)。INC-91是基于移动微机的可视化系统,主要应用在恶劣的条件或户外工业环境的移动平台上。INC-91提供两种不同类型的MVB接口: ESD(电气短距离介质)和 EMD(电气中距离介质),接口通信存储器大小为 256KBit*16,可作为一个 16bit的字的端口进行存取。

3 软件的开发及实现

开发环境:(1)界面框架:在 VMware Workstation虚拟机中,安装fedora系统,搭建QT开发环境;(2)变量快速定义:SpringBoot后端开发框架,Bootstrap web前端开发框架。

编译环境:Oracle VM VirtualBox软件在Windows环境下虚拟Linux Debian操作系统。将开发好的程序放置到此虚拟机中进行编译,生成的可执行文件即可在PIXY显示屏中运行。

3.1 人机交互概述

人机交互流程[2]如图1所示。显示屏上电后,系统读取配置文件[3],判断哪台显示屏为主屏,并读取进入某些页面所需的密码等数据;实例主对话框,显示主界面。系统可通过显示屏底部按键进入到二级界面。

图1 人机交互流程Fig.1 Human computer interaction process

3.2 界面的实现

(1)重写控件

为方便各页面调用,重写按钮、柱状图等控件。例如,柱状图控件继承自 QWidget,重绘刻度、数字文本及颜色显示区域。

(2)主对话框

自定义主对话框,主对话框继承自 QDialog,实现端口导入及数据的刷新。其中,消息映射宏OnUpdatePage可以使相应界面响应界面更新的消息,并调用函数 OnUpdatePage(),实现实时刷新牵引车所需要显示的图标、数据、故障信息等。

(3)页面跳转

在程序中添加二级页面,使用槽函数(slot)实现页面的跳转。

(4)界面绘制

添加各控件到界面,进行合理布局。

3.3 数据变量提取

实现通信需同步端口数据变量(见图1),而数据变量需先按一定格式定义,再一一初始化。变量定义强依赖于制定好的数据流 Excel文件,且工作量十分庞大。数据流文件定义了设备端口地址、偏移位、变量类型、变量名等。不同机车的数据流内容不尽相同。为提升开发效率,提高显示屏系统框架的通用性,提高程序中变量定义的准确度,研究并开发了一种快速数据流变量提取工具,主要结构如图2所示。

图2 快速数据流变量提取系统结构Fig.2 Structure of variable extraction system for fast data flow

(1)在利用框架插件 Bootstrap web[4]开发的web界面上(即表示层)输入所需参数(数据流文档总页数、所需提取变量所包含的页面及数据流文件名等)。

(2)利用Ajax[5]交互式网页开发技术将本机地址和参数传给后台controller控制层。

(3)后台 controller控制层将封装后的参数对象传递给service业务层进行处理。

(4)service业务层对提交的数据流文档每个工作表的每一行进行遍历,分析计算后得到每行数据所映射的显示屏程序所需变量,例如提取数据流文档中所有的变量类型和变量名,并对其赋初值。

(5)导出显示屏程序所需变量的文件(Excel),如图3所示,初始化变量需要配置变量类型、变量名及初始值。将所需行导入程序新建的变量类中,即完成了对变量的初始化。

图3 提取初始化变量文件示意图Fig.3 Schematic diagram of extracting initialization variable

该工具在降低人工提取变量出错率的同时,大大提高了显示屏程序开发效率,同时具有适用于所有车型的特点。

3.4 MVB通信的实现

车辆网采用 MVB总线,用于整个车辆网内部的智能电子设备的互连,实现本车厢内部的数据交换[6]。蓄电池车MVB总线采用EMD传输,最多可支持32个设备。

通信线程的处理(如图1)即DDU与其他设备的数据交互,需要调用MVB驱动函数来实现。MVB通信基本流程如图4所示。

图4 MVB通信流程图Fig.4 MVB communication flow chart

(1)MVB初始化

在程序最开始调用初始化函数,自动完成MVB设备开启、寄存器配置等工作。初始化完成后,会返回一个值,提示初始化状态是否完成。

(2)端口配置

MVB初始化完成后,需在主程序Dialog类的构造函数程序中,按照MVB端口配置函数添加TCU、CCU等设备。mvb_AddPort()包括四个参数:端口已配好的地址、端口类型、源/宿端口及缓存区地址。

(3)启动工作模式

MVB设备工作状态函数 mvb_ChangeState()有三种状态:停止状态、配置状态及工作状态。此时,修改MVB设备为工作状态。

(4)读端口

添加设备后,还需读取端口的变量。mvb_GetPort()包括两个参数:端口地址及变量所在偏移位。下图5中getBool等函数是类crrcMvb中根据读端口函数及不同类型变量重新定义的函数,可用快速提取变量的方法,配置变量名、调用函数、变量所在端口等。或根据变量类型转换成对应的调取变量函数等。

图5 提取端口变量文件示意图Fig.5 Schematic diagram of extracting port variable

(5)写端口

DDU向其他设备发送数据,则需调用写端口函数。mvb_PutPort()包括三个参数:设备地址、变量偏移位及变量名。

界面实时刷新线程和通信线程即保证了显示界面数据的实时性。

3.5 编译

程序完成后,需进行编译(主要指令为 qmake→make clean→make),最终生成PIXY屏幕可执行文件。

4 结语

在Linux系统下采用QT软件完成了电力蓄电池牵引车显示屏设计,实现了在车辆运行过程中实时显示车辆信息和操作提示。蓄电池牵引车现已投入应用,良好稳定的界面设计为工作人员提供了便利,同时也为售后提供了快速便捷保障;易移植的显示屏框架及变量快速导入的方法,也为大同机车厂后续自主化显示屏研究提供了基础。

猜你喜欢

牵引车数据流显示屏
一块布就是一个显示屏?
基于灵敏度分析提升某重型牵引车车架刚度的研究
苍蝇迷恋显示屏
一种提高TCP与UDP数据流公平性的拥塞控制机制
降低铁水罐牵引车故障影响时间的研究与应用
未来五年LED显示屏出货将保持16%增长
某重型牵引车传动系匹配分析
基于数据流聚类的多目标跟踪算法
基于AT89S52的手势可控LED滚动显示屏设计
北医三院 数据流疏通就诊量