杜苗苗, 宋君君, 冀 云
(中車唐山機車車輛有限公司 產品研發中心, 河北唐山 063035)
隨著軌道交通的快速發展,地鐵已經在國內很多城市開通運營,給人們出行帶來了極大的便利,同時也加快了城市的建設,今后地鐵項目將會走入更多的城市,得到更快的發展,列車人機交互接口單元作為列車網絡控制系統的終端設備在地鐵項目中得到了廣泛的應用。
列車網絡設備多而復雜,而人機接口交互單元可提供車輛運行狀態信息、故障信息以及安全操作提示,同時司機及維護人員也可根據顯示信息對列車進行參數設置、自檢測試及系統維護等操作[1],因此列車顯示控制單元是列車正常運行的重要保證之一,此部分的設計與開發工作對于列車行車安全有著重要的意義。為了滿足地鐵列車運行過程中的監控需求,及時解決列車調試過程中的問題,加快列車調試效率,特對其顯示屏軟件進行自主設計與開發。
每輛地鐵列車配置兩個人機交互接口單元(Human Machine Interaction Interface Unit,簡稱HMI),顯示器分辨率為1 024×768,處理器為PowerPc架構,主頻為400 MHz,平臺操作系統采用開源的Linux操作系統,并且支持多種通信方式,全觸摸無按鍵電阻屏,色彩鮮明,人機交互友好,應用程序數據操作精確,采用U盤下載方式,簡單快捷。
HMI的軟件開發是在Linux操作系統下,使用Qt Creator開發工具來進行的。Qt是基于C++開發語言、跨平臺的圖形用戶界面應用程序框架,它包括一套跨平臺的類庫、一套整合的開發工具和一個跨平臺的集成開發環境[2],采用面向對象編程,封裝良好,滿足顯示屏軟件開發過程中的需求。
地鐵列車采用6輛編組,網絡控制系統主干網采用滿足IEC 61375-1標準的MVB網絡[3],主要硬件設備有列車中央控制單元CCU、數據記錄模塊ERM、中繼器REP、遠程輸入輸出單元RIOM、人機接口設備HMI和必要的總線終端連接器等。網絡拓撲圖如圖1所示。
根據用戶需求,地鐵顯示屏界面主要包括司機界面和維護界面兩大部分,設計界面顯示框架如圖2所示。
顯示屏界面是由自定義類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所示。其中公共信息顯示區包括對列車站點、電壓及時間等重要信息的顯示,主顯示區根據用戶對按鈕的選擇顯示對應的信息,故障提示區提示列車當前的最新故障,按鈕區實現用戶的操作。
列車顯示屏實現對列車運行過程中實時數據的監控,要對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種等級:
(1) 嚴重故障 :列車無法動車、安全回路故障、煙溫探測報警、關鍵系統故障等;
(2) 中等故障 :司機操作失誤、乘客信息系統故障等不影響列車牽引的故障;
(3) 輕微故障 :空調系統、備份功能切換等不影響列車正常載客運營的故障;
(4) 提示信息:非故障,只作一次性的提示作用。
故障診斷程序實時檢測故障數據信號,當檢測到列車發生故障時,根據端口號、字節號以及位的信息來查詢故障字典中相應的故障數據,并且將查詢中的信息記錄到當前故障列表中,同時在HMI上進行顯示。當故障消失后,故障信息從當前故障列表中刪除,插入到歷史故障列表中,當前故障列表和歷史故障列表到達一定的數量限制之后,將最早的100條記錄進行刪除,故障診斷程序流程圖如圖5所示。
經過上述幾部分的代碼開發,顯示屏應用程序已基本開發完畢,經本地測試之后,交叉編譯生成鏡像文件,通過U盤下載到HMI設備中,經過試驗臺的功能測試,再上車聯調。自主開發顯示屏程序給測試人員帶來了很大的便利,調試過程中的問題能夠得到及時的反饋和解決,大大提高了工作效率。

圖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.