机车数据记录仪程序设计
侯波 郭瑾玉 黄众 覃事东
摘 要:本文介绍了Vxworks操作系统下的机车数据记录仪程序设计过程,详细论述主程序、功能模块的实現方式。
关键词:VxWorks;数据记录仪;嵌入式系统
中图分类号:TP393.1
Program design of locomotive data recorder
Hou Bo Guo Jinyu Huang Zhong Qin Shidong
CRRC Zhuzhou Locomotive CO.,LTD HunanZhuzhou 412000
Abstract:This article introduces the procedure design process of locomotive data recorder under Vxworks operating system.Discuss in detail the implementation of the main program and functional modules.
Key words:VxWorks;data recorder;embedded system
CLC number:TP393.1
机车车辆数据记录仪是具有数据采集、传输和存储功能的嵌入式设备。这里的采集是指从总线读取数据,例如列车的速度、位置、方向等信息是由其他系统采集后放到了MVB总线。本文讲的记录仪还将文件远程上传到地面系统,可以在第一时间将数据发回地面。记录仪的数据可通过地面软件打开,然后显示,可用于分析故障发生原因。
该系统的功能主要功能可以分为:(1)各系统的数据的采集;(2)根据数据记录为文件;(3)压缩文件;(4)上传文件。
1 设备主要特点
(1)数据记录仪采集了大量的数据,具有比较强的数据处理能力,足够大的硬盘资源。
(2)为了保证通数据记录仪的通用性和可拓展性,该设备具备用于扩展的存储器、串行数据接口、以太网接口、MVB接口和无线传输接口。
(3)设备采用的Vxwokrs操作系统具有微内核、实时性好,运用广泛的特点。
2 数据记录仪的程序设计
数据记录仪的程序开发一般有以下步骤:设计模块功能,设计主线程,根据需求裁剪内核,编写代码。
数据记录仪程序具体需要实现如下功能块,每个功能应该尽量相互独立,方便使用。
(1)配置文件读取模块:读取系统参数、MVB端口配置、以太网网卡配置、以太网UDP、TCP端口配置、数据协议配置。
(2)MVB总线数据接收模块:根据MVB接口程序,按MVB端口及周期将数据循环读取到共享的内存中。
(3)以太网实时数据接收模块:按以太网具体的协议,UDP、TCP或者其他上层协议如TRDP、HTTP等将数据读取到内存;同时根据数据协议对数据进行处理。
(4)以太网文件数据接收模块:将子系统文件存储到文件夹准备压缩和上传,具体的接收方法和文件校验方法根据协议进行。
(5)数据记录模块:将需要记录的数据按协议和记录方法记录到文件,记录到文件的方法和示波记录仪记录文件的方法是一致的。注意用信号量或者其他机制保证共享的数据内存不被同时读写,如果同时读写可能会导致记录的数据错误。
(6)文件压缩模块:压缩线程不断地检测压缩目录下有没有文件,若有则按照zlib压缩算法进行压缩,并另存到指定的文件上传目录。
(7)数据上传模块:压缩后的文件成功上传到地面后,然后另存到最终的文件存储目录。
(8)磁盘管理模块:采用单独的磁盘管理线程,定时检查磁盘空间,如果磁盘空间不足,删掉最终存储目录中的历史文件。
(9)地面数据解析工具:对数据按时间进行表格、图形展示,可用来分析故障发生原因。
内核裁剪是对Vxworks内核进行功能配置、增加或者删除。比如开启DNS域名解析解析支持;开启FTP及用户名密码支持;开启ping和路由配置支持;开启pthread库支持;配置最大文件描述符个数等。
3 主线程实现
Vxworks内核程序不区分线程和进程。主线程负责开启各个模块的线程。根据线程需要划分任务等级、存储空间、甚至运行的CPU内核。具体步骤如下。读配置文件和配置MVB网路、以太网网卡信息必须正常,否则会影响其他设备运行。主程序的实现如下图。
4 接收数据模块和记录数据模块的实现
这些模块中,最重要的就是数据接收模块和记录模块的实现。
接收程序的功能是通过总线完成实时数据接收,MVB和以太网的实时数据接收处理原理是类似的,下图是数据接收和存储流程。其中的数据接收循环过程采用Vxworks的timer定时函数循环,保证周期间隔。记录函数简单while循环,获取信号量后记录数据,不获取则无法记录,同时保证了共享内存Port结构体的数据是写完以后再读。程序过程如图2。
5 测试与结果
设备将记录的文件数据使用FTP断点续传方式发到地面。Vxworks的ftp函数不支持断点续传,需要编写续传函数,其原理是TCP应答和文件读写。续传需要地面FTP服务器支持SIZE和APPE指令,分别用来获取文件大小、续传指定的文件。完成续传函数,需要看FTP相关的资料。
地面软件对数据解析如下图3,经过长期运行检验,记录仪的程序可稳定运行、工作正常。
参考文献:
[1]李峰,朱涛,傅军,徐茂俊.基于VxWorks的综合导航系统数据记录仪软件设计[A].测控技术,2013(02).
[2]马祥.基于以太网的船载通信航行数据记录仪的数据优化[A].舰船科学技术,2019(08).
[3]陈蜀,李鹤鸣,余瑞锋.船舶数据记录仪的主程序设计[A].船海工程,2006(06).
[4]唐武兵,关永,吴立锋,王国辉,李晓娟,潘巍.超级电容UPS智能监测系统设计与实现[A].计算机工程与设计,2015(12).
作者简介:侯波(1988—),男,本科,工程师,主要研究方向:软件测试;郭瑾玉(1986—),女,硕士,工程师,主要研究方向:机械设计;黄众(1986—),男,硕士,工程师,主要研究方向:软件测试;覃事东(1990—),男,硕士,工程师,主要研究方向:软件测试。