侯波 郭瑾玉 黃眾 覃事東
摘 要:本文介紹了Vxworks操作系統(tǒng)下的機(jī)車數(shù)據(jù)記錄儀程序設(shè)計(jì)過程,詳細(xì)論述主程序、功能模塊的實(shí)現(xiàn)方式。
關(guān)鍵詞:VxWorks;數(shù)據(jù)記錄儀;嵌入式系統(tǒng)
中圖分類號: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
機(jī)車車輛數(shù)據(jù)記錄儀是具有數(shù)據(jù)采集、傳輸和存儲功能的嵌入式設(shè)備。這里的采集是指從總線讀取數(shù)據(jù),例如列車的速度、位置、方向等信息是由其他系統(tǒng)采集后放到了MVB總線。本文講的記錄儀還將文件遠(yuǎn)程上傳到地面系統(tǒng),可以在第一時間將數(shù)據(jù)發(fā)回地面。記錄儀的數(shù)據(jù)可通過地面軟件打開,然后顯示,可用于分析故障發(fā)生原因。
該系統(tǒng)的功能主要功能可以分為:(1)各系統(tǒng)的數(shù)據(jù)的采集;(2)根據(jù)數(shù)據(jù)記錄為文件;(3)壓縮文件;(4)上傳文件。
1 設(shè)備主要特點(diǎn)
(1)數(shù)據(jù)記錄儀采集了大量的數(shù)據(jù),具有比較強(qiáng)的數(shù)據(jù)處理能力,足夠大的硬盤資源。
(2)為了保證通數(shù)據(jù)記錄儀的通用性和可拓展性,該設(shè)備具備用于擴(kuò)展的存儲器、串行數(shù)據(jù)接口、以太網(wǎng)接口、MVB接口和無線傳輸接口。
(3)設(shè)備采用的Vxwokrs操作系統(tǒng)具有微內(nèi)核、實(shí)時性好,運(yùn)用廣泛的特點(diǎn)。
2 數(shù)據(jù)記錄儀的程序設(shè)計(jì)
數(shù)據(jù)記錄儀的程序開發(fā)一般有以下步驟:設(shè)計(jì)模塊功能,設(shè)計(jì)主線程,根據(jù)需求裁剪內(nèi)核,編寫代碼。
數(shù)據(jù)記錄儀程序具體需要實(shí)現(xiàn)如下功能塊,每個功能應(yīng)該盡量相互獨(dú)立,方便使用。
(1)配置文件讀取模塊:讀取系統(tǒng)參數(shù)、MVB端口配置、以太網(wǎng)網(wǎng)卡配置、以太網(wǎng)UDP、TCP端口配置、數(shù)據(jù)協(xié)議配置。
(2)MVB總線數(shù)據(jù)接收模塊:根據(jù)MVB接口程序,按MVB端口及周期將數(shù)據(jù)循環(huán)讀取到共享的內(nèi)存中。
(3)以太網(wǎng)實(shí)時數(shù)據(jù)接收模塊:按以太網(wǎng)具體的協(xié)議,UDP、TCP或者其他上層協(xié)議如TRDP、HTTP等將數(shù)據(jù)讀取到內(nèi)存;同時根據(jù)數(shù)據(jù)協(xié)議對數(shù)據(jù)進(jìn)行處理。
(4)以太網(wǎng)文件數(shù)據(jù)接收模塊:將子系統(tǒng)文件存儲到文件夾準(zhǔn)備壓縮和上傳,具體的接收方法和文件校驗(yàn)方法根據(jù)協(xié)議進(jìn)行。
(5)數(shù)據(jù)記錄模塊:將需要記錄的數(shù)據(jù)按協(xié)議和記錄方法記錄到文件,記錄到文件的方法和示波記錄儀記錄文件的方法是一致的。注意用信號量或者其他機(jī)制保證共享的數(shù)據(jù)內(nèi)存不被同時讀寫,如果同時讀寫可能會導(dǎo)致記錄的數(shù)據(jù)錯誤。
(6)文件壓縮模塊:壓縮線程不斷地檢測壓縮目錄下有沒有文件,若有則按照zlib壓縮算法進(jìn)行壓縮,并另存到指定的文件上傳目錄。
(7)數(shù)據(jù)上傳模塊:壓縮后的文件成功上傳到地面后,然后另存到最終的文件存儲目錄。
(8)磁盤管理模塊:采用單獨(dú)的磁盤管理線程,定時檢查磁盤空間,如果磁盤空間不足,刪掉最終存儲目錄中的歷史文件。
(9)地面數(shù)據(jù)解析工具:對數(shù)據(jù)按時間進(jìn)行表格、圖形展示,可用來分析故障發(fā)生原因。
內(nèi)核裁剪是對Vxworks內(nèi)核進(jìn)行功能配置、增加或者刪除。比如開啟DNS域名解析解析支持;開啟FTP及用戶名密碼支持;開啟ping和路由配置支持;開啟pthread庫支持;配置最大文件描述符個數(shù)等。
3 主線程實(shí)現(xiàn)
Vxworks內(nèi)核程序不區(qū)分線程和進(jìn)程。主線程負(fù)責(zé)開啟各個模塊的線程。根據(jù)線程需要劃分任務(wù)等級、存儲空間、甚至運(yùn)行的CPU內(nèi)核。具體步驟如下。讀配置文件和配置MVB網(wǎng)路、以太網(wǎng)網(wǎng)卡信息必須正常,否則會影響其他設(shè)備運(yùn)行。主程序的實(shí)現(xiàn)如下圖。
4 接收數(shù)據(jù)模塊和記錄數(shù)據(jù)模塊的實(shí)現(xiàn)
這些模塊中,最重要的就是數(shù)據(jù)接收模塊和記錄模塊的實(shí)現(xiàn)。
接收程序的功能是通過總線完成實(shí)時數(shù)據(jù)接收,MVB和以太網(wǎng)的實(shí)時數(shù)據(jù)接收處理原理是類似的,下圖是數(shù)據(jù)接收和存儲流程。其中的數(shù)據(jù)接收循環(huán)過程采用Vxworks的timer定時函數(shù)循環(huán),保證周期間隔。記錄函數(shù)簡單while循環(huán),獲取信號量后記錄數(shù)據(jù),不獲取則無法記錄,同時保證了共享內(nèi)存Port結(jié)構(gòu)體的數(shù)據(jù)是寫完以后再讀。程序過程如圖2。
5 測試與結(jié)果
設(shè)備將記錄的文件數(shù)據(jù)使用FTP斷點(diǎn)續(xù)傳方式發(fā)到地面。Vxworks的ftp函數(shù)不支持?jǐn)帱c(diǎn)續(xù)傳,需要編寫續(xù)傳函數(shù),其原理是TCP應(yīng)答和文件讀寫。續(xù)傳需要地面FTP服務(wù)器支持SIZE和APPE指令,分別用來獲取文件大小、續(xù)傳指定的文件。完成續(xù)傳函數(shù),需要看FTP相關(guān)的資料。
地面軟件對數(shù)據(jù)解析如下圖3,經(jīng)過長期運(yùn)行檢驗(yàn),記錄儀的程序可穩(wěn)定運(yùn)行、工作正常。
參考文獻(xiàn):
[1]李峰,朱濤,傅軍,徐茂俊.基于VxWorks的綜合導(dǎo)航系統(tǒng)數(shù)據(jù)記錄儀軟件設(shè)計(jì)[A].測控技術(shù),2013(02).
[2]馬祥.基于以太網(wǎng)的船載通信航行數(shù)據(jù)記錄儀的數(shù)據(jù)優(yōu)化[A].艦船科學(xué)技術(shù),2019(08).
[3]陳蜀,李鶴鳴,余瑞鋒.船舶數(shù)據(jù)記錄儀的主程序設(shè)計(jì)[A].船海工程,2006(06).
[4]唐武兵,關(guān)永,吳立鋒,王國輝,李曉娟,潘巍.超級電容UPS智能監(jiān)測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[A].計(jì)算機(jī)工程與設(shè)計(jì),2015(12).
作者簡介:侯波(1988—),男,本科,工程師,主要研究方向:軟件測試;郭瑾玉(1986—),女,碩士,工程師,主要研究方向:機(jī)械設(shè)計(jì);黃眾(1986—),男,碩士,工程師,主要研究方向:軟件測試;覃事東(1990—),男,碩士,工程師,主要研究方向:軟件測試。