畢海婷, 任大偉
(1.煙臺職業(yè)學院電氣工程系,山東煙臺 264670;2.煙臺冰輪股份有限公司,山東煙臺 264000)
列車人機界面(Human Machine Interface)是列車工作人員與車載設(shè)備信息交互的平臺,是列車運行控制系統(tǒng)中的一個重要組成部分。隨著鐵路的迅猛發(fā)展和微機控制技術(shù)的飛速進步,傳統(tǒng)的模擬儀表和指示燈為主的人機接口已經(jīng)不能滿足現(xiàn)代高速列車的需求。由此,基于微機控制的高速列車司機臺顯示屏[1-2]應(yīng)運而生。顯示屏提供了良好的人機界面,實現(xiàn)數(shù)據(jù)采集、處理和顯示工作,對列車設(shè)備進行監(jiān)視和控制,實時地得到有關(guān)列車和線路的相關(guān)狀態(tài)和數(shù)據(jù)。并且,通過人機界面可以對車載設(shè)備發(fā)出的命令和警告及時進行響應(yīng),幫助列車工作人員更好地了解并完成任務(wù),在最大程度上保證列車的安全正常運行。
基于此,文中以PIXY顯示屏為硬件核心,在Linux系統(tǒng)平臺下,基于Qt4軟件開發(fā)環(huán)境設(shè)計了一個內(nèi)燃動車組的人機交互界面。
人機界面主要平臺是PIXY顯示屏,以功能強大的x86架構(gòu)為數(shù)據(jù)處理核心,并且在硬件電路上具有較強的抗電磁干擾和抗振能力。具有顯示容量大、信息集成顯示、信息可存儲等特點,使機車司機室的顯示裝置簡潔化和標準化。此外,該顯示屏內(nèi)嵌了一個類似于Linux的系統(tǒng),Qt4開發(fā)的應(yīng)用程序可以在這個系統(tǒng)環(huán)境下安裝、調(diào)試和編譯。
針對列車運行控制系統(tǒng)人機界面,主要完成人機交互結(jié)果的顯示,設(shè)計原則是將列車運行過程中產(chǎn)生的重要數(shù)據(jù)和信息直觀、簡潔、友好地顯示在人機界面上,并且要對數(shù)據(jù)進行分析,對車載設(shè)備中出現(xiàn)的故障及時準確地反饋給司機和列車上的工作人員。為了方便完成列車工作人員與車載設(shè)備交互工作,人機界面提供了硬件鍵盤輸入和觸屏輸入兩種方式來完成各個子界面相關(guān)的動作。根據(jù)顯示的信息量,人機界面主要劃分為以下子界面:主界面、柴油機、門界面、開關(guān)界面、門控選擇、速度限制、歷史故障、目前故障、維護登陸、維護、輪徑設(shè)置、時間設(shè)置、密碼設(shè)置、TCU界面、網(wǎng)絡(luò)狀態(tài)、RIOM界面、RIOM-DI、RIOMDO、RIOM-AX、軟件版本、MVB數(shù)據(jù)。人機界面的流程樹如圖1所示。
圖1 界面流程樹
每個界面按功能分為3個區(qū)域,分別為基本信息顯示區(qū)、綜合信息顯示區(qū)和界面切換按鈕區(qū)?;拘畔@示區(qū):該區(qū)為固定顯示區(qū),顯示內(nèi)容包括列車編號、速度、界面名稱、時間、日期。綜合信息顯示區(qū):信息總覽,包括了車載設(shè)備的運行狀態(tài)、數(shù)據(jù)信息以及狀態(tài)信息,如中間電壓、中間電流等。界面切換按鈕區(qū):該區(qū)為界面切換的按鈕區(qū),點擊按鈕時背景色變?yōu)樗{色表示按鍵按下,執(zhí)行相應(yīng)的功能。
人機界面采用C++語言面向?qū)ο蟪绦蛟O(shè)計方法,將每一個界面封裝成一個類。在界面中將不同功能的程序封裝成不同的子模塊,各個模塊互不干擾。
人機界面顯示模塊主要包括了兩個部分:控件部分和界面部分。
2.1.1 控件部分
控件部分主要由按鈕(CButton)、標簽(CLable)、圖片(CImage)、直線(CLine)、柱形條(CBar)、編輯框(CEdit)6個部分組成。各個控件類將數(shù)據(jù)和函數(shù)封裝在一起形成類,從抽象類CControlInterface中以共有繼承的方式來實現(xiàn)。
控件數(shù)據(jù)部分(protected):包括字符串(m_str)、顯示的區(qū)域(m_rect)、顯示的字體(m_font)、字體顏色(m_txtcolor)、背景色(m_bkcolor)、控制ID號(ctrl_ID)以及繪圖指針變量(m_painter)。根據(jù)這些參數(shù),利用Qt二維繪圖工具Qpainter來繪制控件的外觀部分。例如,通過下面兩行代碼可以繪制一個m_rect區(qū)域,在這個區(qū)域上顯示字符串m_str,區(qū)域顯示的背景顏色為m_bkcolor。
控件函數(shù)部分(public):抽象類CControlInterface為整個控件類族提供了統(tǒng)一的接口,以虛函數(shù)的方式實現(xiàn)多態(tài)性,可以靈活地進行動態(tài)綁定。在程序中通過外部接口重置每一個控件對象的數(shù)據(jù)部分,從而更改顯示字符串、字體、字體顏色、背景色以及顯示區(qū)域。
2.1.2 界面部分
界面部分包括了各個子界面,將數(shù)據(jù)和函數(shù)封裝在一起形成類,從抽象類class CPage中以共有繼承的方式來實現(xiàn)。
界面的數(shù)據(jù)部分主要由界面上顯示的控件對象組成。車載設(shè)備產(chǎn)生數(shù)據(jù)信息和狀態(tài)實時動態(tài)顯示在對應(yīng)的控件上。
界面的函數(shù)部分主要包括了界面顯示、數(shù)據(jù)更新、交互功能等。按鍵對象與對應(yīng)的功能函數(shù)綁定,在主對話框dialog中列車工作人員可通過按鍵或觸屏兩種輸入方式對不同界面的按鍵對象進行動態(tài)操作,從而實現(xiàn)界面切換和車載設(shè)備參數(shù)設(shè)置的功能。
為了縮短開發(fā)時間和輕松訪問MVB數(shù)據(jù),PIXY公司提供了一種完善的MVB庫文件,對用戶來講底層代碼是隱藏的,只需要通過MVB API來訪問。MVB API提供了一個標準的C接口,以頭文件的形式封裝,通過這個接口可以訪問到MVB庫文件里包含的所有的總線具體配置細節(jié)。對MVB總線有3種操作狀態(tài),即停止狀態(tài)、配置狀態(tài)和操作狀態(tài),3種狀態(tài)可以相互轉(zhuǎn)化。MVB總線在實際應(yīng)用中主要工作在配置狀態(tài)和操作狀態(tài),這兩種狀態(tài)的相互切換可以增加、減少或修改程序中邏輯端口。
停止狀態(tài)主要用來完成MVB總線的初始化工作,打開MVB設(shè)備。初始化ISA總線I/O寄存器和將物理內(nèi)存從MVB通道映射到用戶空間。由其它狀態(tài)返回到停止狀態(tài)時MVB設(shè)備關(guān)閉,控制器停止,所有被分配的內(nèi)存消失。
配置狀態(tài)主要初始化MVB輸入輸出端口。給MVB通道分配一個邏輯地址,并指定端口是輸出端口還是輸入端口。
操作狀態(tài)主要從端口中讀寫數(shù)據(jù),每個端口一次讀寫16個字節(jié)。在程序中必須先完成MVB總線初始化工作和對MVB總線的配置,才可以訪問到MVB總線上的數(shù)據(jù)。
通信程序執(zhí)行流程如圖2所示。
圖2 MVB數(shù)據(jù)通信流程
列車有多個分散控制的復(fù)雜單元,包括了TCN,TCU,ACU,VCU,RIOM,F(xiàn)FR,DOOR,EU,HCU,可能發(fā)生很多的錯誤,診斷系統(tǒng)可以進行確認、評估并提供維修指南在HMI界面上顯示。診斷系統(tǒng)的任務(wù)是對列車人員在列車運行、維護和維修期間修正錯誤提供有效的支持,從而實現(xiàn)可靠的客運服務(wù)。故障診斷程序主要由3個部分組成:知識庫、推理機和人機接口。
知識庫主要表現(xiàn)為專家知識的集合,存放了大量專家經(jīng)驗和理論知識構(gòu)成了故障診斷系統(tǒng)的核心部分。知識庫表示方法在結(jié)構(gòu)上主要包括事實性知識和規(guī)則性知識形成的事實庫和規(guī)則庫。事實部分由故障名稱、故障代碼、故障等級、維修指南組成。規(guī)則部分由MVB字節(jié)偏移地址、字節(jié)中的位置、故障發(fā)生標志、故障確認標志組成。
推理機是專家系統(tǒng)的組織控制機構(gòu)。程序中推理的控制策略采用正向推理方法。診斷流程如圖3所示。
圖3 故障診斷流程
故障知識庫提供了一組初始數(shù)據(jù),形成一個當前匹配的知識集,從中選擇第一條知識作為啟用知識進行推理,根據(jù)MVB通信采集的數(shù)據(jù)信息,綜合運用各種規(guī)則進行故障的推理,將推出的事實存入故障列表中,作為后面繼續(xù)推理時可用的已知事實,重復(fù)這一推理過程直到知識庫的最后。
人機接口是人與專家系統(tǒng)打交道的橋梁和窗口。目前故障界面總覽實時故障信息,包括了故障代碼、故障日期、開始時間、故障等級、故障位置、故障設(shè)備。在故障沒解決的情況下,最新的沒確認的故障的功能代碼和車號閃爍顯示在每個屏幕的右手邊狀態(tài)欄中的黃色區(qū)域。已經(jīng)確認的故障信息,可查看故障信息的解決方法來消除故障,從而使列車有一定的功能限制也可以繼續(xù)安全運行。已解決的故障在當前故障界面列表中刪除,將其顯示在歷史故障界面中,并將故障信息存儲在文檔中。系統(tǒng)下次啟動時從文檔中讀取歷史故障信息數(shù)據(jù),并顯示在歷史故障界面中。為了方便觀測故障信息,可以從故障等級、開始日期、故障位置、故障設(shè)備對故障進行監(jiān)視,各個監(jiān)視器可以共同作用。
利用C++面向?qū)ο缶幊陶Z言,并利用Troll Tech公司出品的Qt4軟件,一個跨平臺C++應(yīng)用程序開發(fā)框架來進行軟件開發(fā)。
控件對象作為每個界面對象的數(shù)據(jù)部分顯示在界面上,并將創(chuàng)建的界面對象存入vector容器中。首先,自定義一個結(jié)構(gòu)體struct ROMDATA數(shù)據(jù)類型來表示描述控件的數(shù)據(jù)部分,根據(jù)這些參數(shù)繪制控件。然后,定義一個ROMDATA類型結(jié)構(gòu)體數(shù)組存放所有的控件,數(shù)組中每一個元素都代表著一個控件對象,這樣一個界面的所有控件就由一個數(shù)組來存儲,可實現(xiàn)對所有頁面控件對象的統(tǒng)一管理。最后,根據(jù)控件種類nControl Type不同來繪制各個控件,并將其顯示在界面上。對MVB數(shù)據(jù)流進行處理后,根據(jù)控件唯一的ctrl_ID標識,在程序中將數(shù)據(jù)顯示在指定的控件上。
利用Qt信號和槽的機制,實現(xiàn)對象和函數(shù)的綁定。定時器定時200 ms,定時時間到發(fā)出timeout()信號,執(zhí)行數(shù)據(jù)更新函數(shù)On UpdateData(),定時器又重新計數(shù),從而來實現(xiàn)每200 ms數(shù)據(jù)更新一次。在數(shù)據(jù)更新函數(shù)中完成以下任務(wù):通過MVB數(shù)據(jù)通信模塊程序,實時采集列車運行過程中車載設(shè)備的數(shù)據(jù)信息;界面顯示模塊程序?qū)?shù)據(jù)信息進行處理;故障診斷模塊程序?qū)?shù)據(jù)信息進行分析。最終將所有信息都顯示在人機界面上,從而使列車工作人員能夠方便地觀測到車載設(shè)備運行狀態(tài)。
為了方便完成人機的交互工作,系統(tǒng)提供了兩種人機交互方式。利用Qt的事件處理機制,keyPressEvent事件實現(xiàn)鍵盤輸入;mouse-PressEvent事件來實現(xiàn)觸屏輸入。鍵盤按下或者觸屏按下,執(zhí)行對應(yīng)按鍵功能,從而可以實現(xiàn)界面的動態(tài)切換和車載設(shè)備參數(shù)設(shè)定。
人機界面運行主界面如圖4所示。
圖4 主界面
MVB數(shù)據(jù)界面將通信數(shù)據(jù)顯示在界面上,如圖5所示。
圖5 MVB數(shù)據(jù)界面
列車運行故障中產(chǎn)生的所有故障實時動態(tài)顯示在界面上,如圖6所示。
圖6 故障界面
首先介紹了人機界面的整體設(shè)計包括各個子界面的劃分以及界面功能區(qū)域設(shè)計。然后介紹了人機界面的軟件構(gòu)架,界面顯示模塊,從控件到界面的設(shè)計;MVB數(shù)據(jù)通信模塊,實現(xiàn)車載設(shè)備數(shù)據(jù)的采集;故障診斷模塊,保障列車運行安全。各個功能模塊為單獨的程序,使得系統(tǒng)擁有較強的邏輯性以及可擴展性。最后,在此基礎(chǔ)上實現(xiàn)界面的顯示、數(shù)據(jù)更新和交互功能,并展示了人機界面的效果。由此可以看出,文中闡述的人機界面設(shè)計方案具有較強的實用性。
[1] 客金坤,梅櫻,郭紅衛(wèi),等.基于圖形化編程語言的列車人機界面設(shè)計[J].都市快軌交通,2007,24(1):66-68.
[2] 任亞飛,唐濤.基于嵌入式Linux的列控系統(tǒng)車載人機界面的設(shè)計與實現(xiàn)[J].鐵路計算機應(yīng)用,2005,14(12):23-26.
[3] 張立斌.基于Qt的電力機車顯示屏系統(tǒng)的軟件設(shè)計[D]:[碩士學位論文].大連:大連海事大學,2008.
[4] Jasmin Blanchette,Mark Summerfield.C++GUI Qt4編程[M].2版.北京:電子工業(yè)出版社,2011.
[5] 蔡志明,盧傳富,李立夏.精通Qt4編程[M].2版.北京:電子工業(yè)出版社,2012.
[6] 鄭莉,董淵,何江舟.C++語言程序設(shè)計[M].4版.北京:清華大學出版社,2012.
[7] 陸陸,徐正國,王文海,等.列車運行控制系統(tǒng)故障診斷方法研究[J].鐵道通信信號,2010,46(5):44-46.
[8] 李婷,劉峰,張春.鐵路動車組故障診斷知識庫管理系統(tǒng)的設(shè)計[J].電腦知識與技術(shù),2008,16(12):1243-1245.
[9] 劉白林,范躍華.故障診斷專家系統(tǒng)中的推理機設(shè)計[J].西北工業(yè)學院學報,2004,24(3):240-243.