杜苗苗, 宋君君, 冀 云
(中車唐山機(jī)車車輛有限公司 產(chǎn)品研發(fā)中心, 河北唐山 063035)
隨著軌道交通的快速發(fā)展,地鐵已經(jīng)在國內(nèi)很多城市開通運(yùn)營,給人們出行帶來了極大的便利,同時(shí)也加快了城市的建設(shè),今后地鐵項(xiàng)目將會(huì)走入更多的城市,得到更快的發(fā)展,列車人機(jī)交互接口單元作為列車網(wǎng)絡(luò)控制系統(tǒng)的終端設(shè)備在地鐵項(xiàng)目中得到了廣泛的應(yīng)用。
列車網(wǎng)絡(luò)設(shè)備多而復(fù)雜,而人機(jī)接口交互單元可提供車輛運(yùn)行狀態(tài)信息、故障信息以及安全操作提示,同時(shí)司機(jī)及維護(hù)人員也可根據(jù)顯示信息對列車進(jìn)行參數(shù)設(shè)置、自檢測試及系統(tǒng)維護(hù)等操作[1],因此列車顯示控制單元是列車正常運(yùn)行的重要保證之一,此部分的設(shè)計(jì)與開發(fā)工作對于列車行車安全有著重要的意義。為了滿足地鐵列車運(yùn)行過程中的監(jiān)控需求,及時(shí)解決列車調(diào)試過程中的問題,加快列車調(diào)試效率,特對其顯示屏軟件進(jìn)行自主設(shè)計(jì)與開發(fā)。
每輛地鐵列車配置兩個(gè)人機(jī)交互接口單元(Human Machine Interaction Interface Unit,簡稱HMI),顯示器分辨率為1 024×768,處理器為PowerPc架構(gòu),主頻為400 MHz,平臺(tái)操作系統(tǒng)采用開源的Linux操作系統(tǒng),并且支持多種通信方式,全觸摸無按鍵電阻屏,色彩鮮明,人機(jī)交互友好,應(yīng)用程序數(shù)據(jù)操作精確,采用U盤下載方式,簡單快捷。
HMI的軟件開發(fā)是在Linux操作系統(tǒng)下,使用Qt Creator開發(fā)工具來進(jìn)行的。Qt是基于C++開發(fā)語言、跨平臺(tái)的圖形用戶界面應(yīng)用程序框架,它包括一套跨平臺(tái)的類庫、一套整合的開發(fā)工具和一個(gè)跨平臺(tái)的集成開發(fā)環(huán)境[2],采用面向?qū)ο缶幊?,封裝良好,滿足顯示屏軟件開發(fā)過程中的需求。
地鐵列車采用6輛編組,網(wǎng)絡(luò)控制系統(tǒng)主干網(wǎng)采用滿足IEC 61375-1標(biāo)準(zhǔn)的MVB網(wǎng)絡(luò)[3],主要硬件設(shè)備有列車中央控制單元CCU、數(shù)據(jù)記錄模塊ERM、中繼器REP、遠(yuǎn)程輸入輸出單元RIOM、人機(jī)接口設(shè)備HMI和必要的總線終端連接器等。網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。
根據(jù)用戶需求,地鐵顯示屏界面主要包括司機(jī)界面和維護(hù)界面兩大部分,設(shè)計(jì)界面顯示框架如圖2所示。
顯示屏界面是由自定義類CPage實(shí)現(xiàn),每個(gè)界面類基于CPgae類派生而來,繼承基類的基本屬性,通過調(diào)用自定義的按鈕,圖片,文本,線條,編輯框等控件來實(shí)現(xiàn)對各界面的繪制。各界面類包括對界面的初始化及函數(shù)的定義:
① ROMDATA g_PicRom_Main[];∥結(jié)構(gòu)體數(shù)組,實(shí)現(xiàn)對各控件的初始化
② Void OnInitPage(); ∥界面初始化函數(shù),實(shí)現(xiàn)首次進(jìn)入界面各變量的初始化
③ Void OnShowPage(); ∥界面展示函數(shù),實(shí)現(xiàn)每次切換到該界面所需控件狀態(tài)的顯示
Tc-拖車;M-動(dòng)車;CCU-列車中央控制單元;REP-中繼器;DXM-數(shù)字量輸入輸出模塊;DIM-數(shù)字量輸入模塊;AXM-模擬量輸入輸出模塊;ERM-事件記錄儀; ATC-列車自動(dòng)控制;HMI-人機(jī)接口單元;FDS-火災(zāi)報(bào)警系統(tǒng);PIS-乘客信息顯示系統(tǒng);MDCU-車門控制單元;ACU-空調(diào)控制單元;DCU/M-牽引控制單元;DCU/A-輔助控制單元;BECU-制動(dòng)控制單元;BMS-蓄電池;CCU-D-數(shù)據(jù)記錄儀。圖1 網(wǎng)絡(luò)拓?fù)鋱D
圖2 界面設(shè)計(jì)框架圖
④ Void OnUpdatePage(); ∥界面更新函數(shù),實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的通訊以及各控件狀態(tài)的刷新
靜態(tài)界面的實(shí)現(xiàn)主要在ROMDATA結(jié)構(gòu)體數(shù)組中,根據(jù)功能劃分,將界面顯示分為4部分,包括公共信息顯示區(qū)、主顯示及功能按鈕區(qū)、故障提示區(qū)和公共按鈕區(qū),如圖3所示。其中公共信息顯示區(qū)包括對列車站點(diǎn)、電壓及時(shí)間等重要信息的顯示,主顯示區(qū)根據(jù)用戶對按鈕的選擇顯示對應(yīng)的信息,故障提示區(qū)提示列車當(dāng)前的最新故障,按鈕區(qū)實(shí)現(xiàn)用戶的操作。
列車顯示屏實(shí)現(xiàn)對列車運(yùn)行過程中實(shí)時(shí)數(shù)據(jù)的監(jiān)控,要對MVB總線數(shù)據(jù)進(jìn)行讀寫操作。根據(jù)各系統(tǒng)接口規(guī)范,MVB數(shù)據(jù)通訊部分首先要對端口進(jìn)行定義,需要先進(jìn)行pit表的配置,pit表是定義端口號(hào),源宿端口和端口大小所生成的配置文件。關(guān)于配置pit表所使用的工具如圖4所示。
圖3 顯示屏界面
圖4 pit表配置工具
在配置工具中各項(xiàng)的定義為:
① 端口號(hào): 十六進(jìn)制數(shù)表示;
② 端口類型: 1表示宿端口(接收數(shù)據(jù)端);2表示源端口(發(fā)送數(shù)據(jù)端);
③ 端口存儲(chǔ)地址:第一個(gè)地址為4,第二個(gè)地址為8,第三個(gè)地址為12,…,以此類推,不能使用端口地址0;
④ 端口大小: 端口的大小可以是2,4,8,16,32,根據(jù)數(shù)據(jù)流選擇相應(yīng)的端口大小,在pit配置工具中分別對應(yīng)0,1,2,3,4。
各端口輸入完畢,點(diǎn)擊生成配置即可生成相應(yīng)的數(shù)據(jù)pit表。pit表配置完畢,對數(shù)據(jù)讀寫函數(shù)進(jìn)行調(diào)用并對其數(shù)據(jù)進(jìn)行邏輯處理
∥讀數(shù)據(jù)函數(shù)
mvb.get_uint(unsigned short port_num, char ofs_byte); ∥讀雙字?jǐn)?shù)據(jù)
mvb.get_uchar(unsigned short port_num, char ofs_byte); ∥讀單字節(jié)數(shù)據(jù)
mvb.get_ushort(unsigned short port_num, char ofs_byte);∥讀單字?jǐn)?shù)據(jù)
mvb.get_ubit(unsigned short,char ofs_byte,char ofs_bit); ∥讀bit位數(shù)據(jù)
∥寫數(shù)據(jù)函數(shù)
mvb.put_uint(unsigned short port_num, char ofs_byte, unsigned char value);∥寫雙字?jǐn)?shù)據(jù)
mvb.put_uchar(unsigned short port_num, char ofs_byte, unsigned char value); ∥寫單字節(jié)數(shù)據(jù)
mvb.put_ushort(unsigned short port_num, char ofs_byte, unsigned char value); ∥寫單字?jǐn)?shù)據(jù)
mvb.put_ubit(unsigned short port_num, char ofs_byte, char ofs_bit, unsigned char value); ∥寫bit位數(shù)據(jù)
依據(jù)各系統(tǒng)接口規(guī)范,通過對以上函數(shù)的調(diào)用,來獲取MVB總線上的實(shí)時(shí)數(shù)據(jù),根據(jù)數(shù)據(jù)值,對其進(jìn)行邏輯處理并對相關(guān)控件的狀態(tài)進(jìn)行控制,來實(shí)現(xiàn)界面的刷新。
列車故障診斷部分是網(wǎng)絡(luò)控制系統(tǒng)的一個(gè)重要組成部分,主要實(shí)現(xiàn)車載各部件故障數(shù)據(jù)的采集、分析、轉(zhuǎn)儲(chǔ)和顯示功能[4]。故障診斷程序主要是對故障字典數(shù)據(jù)表的建立以及對數(shù)據(jù)庫數(shù)據(jù)的讀寫操作。
根據(jù)故障對子系統(tǒng)或列車的性能或安全性的影響劃分為不同的故障等級,不同的故障等級對應(yīng)不同的聲光信息提示,有4種等級:
(1) 嚴(yán)重故障 :列車無法動(dòng)車、安全回路故障、煙溫探測報(bào)警、關(guān)鍵系統(tǒng)故障等;
(2) 中等故障 :司機(jī)操作失誤、乘客信息系統(tǒng)故障等不影響列車牽引的故障;
(3) 輕微故障 :空調(diào)系統(tǒng)、備份功能切換等不影響列車正常載客運(yùn)營的故障;
(4) 提示信息:非故障,只作一次性的提示作用。
故障診斷程序?qū)崟r(shí)檢測故障數(shù)據(jù)信號(hào),當(dāng)檢測到列車發(fā)生故障時(shí),根據(jù)端口號(hào)、字節(jié)號(hào)以及位的信息來查詢故障字典中相應(yīng)的故障數(shù)據(jù),并且將查詢中的信息記錄到當(dāng)前故障列表中,同時(shí)在HMI上進(jìn)行顯示。當(dāng)故障消失后,故障信息從當(dāng)前故障列表中刪除,插入到歷史故障列表中,當(dāng)前故障列表和歷史故障列表到達(dá)一定的數(shù)量限制之后,將最早的100條記錄進(jìn)行刪除,故障診斷程序流程圖如圖5所示。
經(jīng)過上述幾部分的代碼開發(fā),顯示屏應(yīng)用程序已基本開發(fā)完畢,經(jīng)本地測試之后,交叉編譯生成鏡像文件,通過U盤下載到HMI設(shè)備中,經(jīng)過試驗(yàn)臺(tái)的功能測試,再上車聯(lián)調(diào)。自主開發(fā)顯示屏程序給測試人員帶來了很大的便利,調(diào)試過程中的問題能夠得到及時(shí)的反饋和解決,大大提高了工作效率。
圖5 故障診斷程序流程圖
網(wǎng)絡(luò)控制系統(tǒng)作為一列車的大腦,意義重大,而HMI作為列車網(wǎng)絡(luò)控制系統(tǒng)的眼睛也擔(dān)負(fù)著重要作用,列車顯示屏的軟件設(shè)計(jì)與開發(fā)工作對測試人員、司機(jī)及維護(hù)人員都有著重要的意義。地鐵列車顯示屏程序應(yīng)用軟件已在地鐵項(xiàng)目中運(yùn)用,經(jīng)過多次試驗(yàn)和調(diào)試,列車現(xiàn)已進(jìn)入運(yùn)營階段。該地鐵顯示屏應(yīng)用程序下載簡單,人機(jī)界面交互友好,用戶操作便捷高效,軟件運(yùn)行穩(wěn)定可靠,對其他軌道交通項(xiàng)目的顯示屏軟件開發(fā)具有很好的參考價(jià)值。
[1] 李 偉,張?zhí)燔姡环N基于Linux的地鐵列車顯示屏設(shè)計(jì)[J].鐵道車輛,2014,52(12):29-30.
[2] 閆鋒欣,曾泉人,張志強(qiáng).C++ GUI Qt4編程[M](第2版).北京:電子工業(yè)出版社,2011.
[3] IEC 61375-1— 1999.Electric Railway Equipment Train Bus Part 1:Train Communication Network[S].
[4] 孫幫成.CRH380BL型動(dòng)車組[M].北京:中國鐵道出版社,2014.