任富爭,李如石,高興華,張紅星
(中車唐山機車車輛有限公司 產(chǎn)品研發(fā)中心,河北 唐山 063035)
列車網(wǎng)絡(luò)控制系統(tǒng)采用分布式控制系統(tǒng),分布于整個列車的各個智能單元連接成一個列車網(wǎng)絡(luò),各個不同的分布式單元將使用TCN 或ECN 總線連接起來,且符合IEC 61375 標(biāo)準(zhǔn)。列車網(wǎng)絡(luò)控制系統(tǒng)的故障診斷功能是實時診斷列車運行時發(fā)生的故障并以恰當(dāng)?shù)姆绞斤@示出來,為司乘或檢修人員提供故障信息及處理意見[1]。完成故障診斷功能的主要設(shè)備有列車網(wǎng)絡(luò)主控設(shè)備(CCU)和司機顯示屏(HMI)。主控設(shè)備主要負(fù)責(zé)故障信息的分析診斷,司機顯示屏主要功能就是將診斷結(jié)果顯示給司機和維護人員,同時提供相應(yīng)的操作指導(dǎo)說明。傳統(tǒng)顯示屏列車故障診斷功能的實現(xiàn)是通過幾個文本文件,分別配置故障代碼、等級、發(fā)生故障的車號信息、故障發(fā)生原因以及故障處理措施,這幾個文本文件之間要行號名稱相互匹配才能引用,對列車故障診斷代碼的配置往往需要耗費很長時間才能配置正確,即使如此,在后續(xù)對故障的修改更新后還需要重新配置。因此,文中重點闡述了基于顯示屏使用數(shù)據(jù)庫技術(shù)對列車故障診斷信息實時顯示功能的實現(xiàn)。
主要通過列車顯示屏提供圖形和文字信息,實時顯示列車運行狀態(tài)和故障信息,故障部分包括故障信息的發(fā)生和消失以及發(fā)生故障時列車環(huán)境參數(shù)信息,從列車司乘人員行車便捷操作和易于維修人員排查故障的角度,顯示屏對列車故障顯示和處理的需求簡述如下:
(1)故障等級通常分輕微故障、中等故障、嚴(yán)重故障。
(2)故障是否消失分為當(dāng)前故障和歷史故障顯示。
(3)每條故障以純文本顯示,且有故障代碼、故障等級、故障發(fā)生的時間等信息,并能查看相應(yīng)的故障處理措施建議等信息。
(4)在查看時可以根據(jù)故障等級對故障進行篩選顯示。
(5)對列車行駛安全有影響的嚴(yán)重故障和事件信息,實時彈出故障信息內(nèi)容供列車司乘人員查看確認(rèn)。
(6)輕微故障及其相關(guān)信息僅對維修人員可見。
(7)顯示屏主界面上可以提示司乘人員列車存在的故障及故障等級。
在實際的項目中,故障診斷顯示的數(shù)據(jù)信息可以通過數(shù)據(jù)庫列表來存放,結(jié)合故障診斷顯示需求內(nèi)容和故障診斷程序可分別設(shè)計出故障字典列表、當(dāng)前故障列表和歷史故障列表。在數(shù)據(jù)庫的選擇上使用SQLite 數(shù)據(jù)庫,選用SQLite 主要是基于其自身優(yōu)勢,首先它是完全免費的,數(shù)據(jù)庫體積小易維護、存儲量比較高、健壯性好和運行速度快,且可以在所有主流的操作系統(tǒng)上運行等優(yōu)點[2]。
編制一個故障字典列表(FaultDic)表格,根據(jù)列車故障的參數(shù)及屬性,在SQLite 故障字典表格中對每條故障的信息設(shè)計包含以下字段,見表1。
表1 故障字典列表
故障字典用來描述每條故障信息屬性,使用數(shù)據(jù)庫表格編制故障字典的明顯優(yōu)勢體現(xiàn)在對數(shù)據(jù)的變更方面。隨項目的進程,后續(xù)因各方原因需要多次對故障信息的內(nèi)容進行增減或更改,這是不可避免,如調(diào)試試驗后需要對某些故障信息的內(nèi)容進行增加、刪除,或修改故障等級、處理意見等。
數(shù)據(jù)庫列表的設(shè)計可減少應(yīng)用軟件開發(fā)者的工作量,只需要將整理好的列車故障診斷代碼表另存為CSV 格式文件,直接導(dǎo)入到數(shù)據(jù)庫列表即可,節(jié)省了傳統(tǒng)文本方法中的反復(fù)核對文本文件行號等信息過程,且能保證其正確性;后期的維護極其方便,只需要在更新列車故障診斷代碼表后將CSV 格式文件導(dǎo)入,不需更改應(yīng)用軟件程序的任何代碼,維護更新時間快且準(zhǔn)確;因數(shù)據(jù)字典的端口號、字節(jié)偏移和位偏移存在,使故障數(shù)據(jù)解析不會有錯位現(xiàn)象而導(dǎo)致空白記錄行的問題。
二維故障字典數(shù)組是故障診斷程序初始化時將數(shù)據(jù)庫字典列表的數(shù)據(jù)完整地拷來1 份用于實時訪問,根據(jù)顯示屏上對故障顯示和程序邏輯處理的需要,對二維故障字典數(shù)組設(shè)計成員變量,見表2。
表2 二維故障字典數(shù)組
在列車故障診斷中需要實時輪詢列車網(wǎng)絡(luò)總線上的故障信息數(shù)據(jù),為減少應(yīng)用程序?qū)?shù)據(jù)庫文件訪問的頻率,避免造成數(shù)據(jù)庫文件不必要的損壞,二維故障字典數(shù)組(FaultDic)來替代數(shù)據(jù)庫列表提供網(wǎng)絡(luò)總線上端口輪詢參數(shù)和故障相關(guān)信息,既可以加快程序輪詢運行時間,又能降低因不間斷訪問數(shù)據(jù)庫文件引起的CPU 負(fù)荷,也能保證程序可靠性。二維故障字典數(shù)組的內(nèi)容在設(shè)備每次上電的程序初始化時都會跟最新的故障字典數(shù)據(jù)保持一致,相比于故障字典多了一故障標(biāo)識的成員變量,用于判斷故障是當(dāng)前故障還是歷史故障。
由于界面要分別顯示當(dāng)前故障和歷史故障信息,為數(shù)據(jù)處理方便需要設(shè)計2 個SQLite 數(shù)據(jù)庫列表:當(dāng)前故障列表(Cur_Fault)和歷史故障列表(His_Fault)。當(dāng)前故障列表設(shè)計的各字段見表3,歷史故障列表設(shè)計的各字段見表4。
表3 當(dāng)前故障列表
表4 歷史故障列表
當(dāng)前故障列表存放當(dāng)前故障相關(guān)的關(guān)鍵信息,歷史故障列表存放歷史故障相關(guān)的關(guān)鍵信息,列表中的索引號,是用于在數(shù)據(jù)庫字典數(shù)組中檢索故障詳情的行號,對數(shù)據(jù)列表的查詢均可以使用成熟快捷的SQL 語句實現(xiàn)。
列車各顯示屏在上電之后,首先執(zhí)行初始化程序,如圖1 所示。首先判斷故障列表的故障數(shù)量,如果故障數(shù)量為0(上次斷電時數(shù)據(jù)庫列表損壞),則需用備份文件替換,替換后數(shù)據(jù)庫當(dāng)前故障列表數(shù)據(jù)會在設(shè)備上電后重新判斷當(dāng)前故障,統(tǒng)計數(shù)據(jù)庫歷史故障列表數(shù)據(jù)并按故障發(fā)生時間排序,然后把故障字典數(shù)據(jù)庫數(shù)據(jù)逐條放入二維故障數(shù)據(jù)字典數(shù)組中。
圖1 診斷初始化
在列車上電2 min(列車各個子系統(tǒng)上電需要進行自診斷過程)之后,開始執(zhí)行故障診斷程序,診斷程序以一定周期(200 ms)循環(huán)執(zhí)行故障判斷程序,循環(huán)時根據(jù)VCU 生命信號標(biāo)識正常,并記錄本次循環(huán)的時間。每次執(zhí)行的故障判斷程序均按照故障字典數(shù)組的端口配置信息在列車總線上輪詢所有的故障數(shù)據(jù)位,根據(jù)故障數(shù)組中每條故障成員的cur_flag 的值和故障端口輪詢的值,來判斷相應(yīng)該條故障是新發(fā)生還是新消失(判斷流程如圖2 所示),以便將故障信息更新到當(dāng)前故障列表或歷史故障列表中。
圖2 故障判斷邏輯
故障信息的顯示按照顯示方式分為:在故障界面顯示、彈出界面顯示故障和故障詳情(包括處理措施)的顯示。在故障界面顯示時根據(jù)界面輸入的故障等級和頁碼號,使用SQL 語句在當(dāng)前故障或歷史故障數(shù)據(jù)列表和故障字典中查找相關(guān)故障信息顯示即可;在故障診斷程序中實時地輪詢當(dāng)前故障列表,如查找到發(fā)生對列車行駛安全有影響的嚴(yán)重故障和事件信息,根據(jù)當(dāng)前故障列表中的索引號查找故障字典中相關(guān)故障信息,在彈出界面顯示;故障詳情信息一般是在故障界面中選擇所要查看的故障條目,點擊后,界面會自動彈出,程序會根據(jù)故障代碼在故障字典中查找相關(guān)故障信息用于顯示。
當(dāng)程序診斷到有故障發(fā)生或消失時,需要對數(shù)據(jù)庫列表文件進行讀寫操作,此時如遇列車斷電,數(shù)據(jù)庫列表文件就會被損壞,造成不可修復(fù)的錯誤。因此,對數(shù)據(jù)庫文件進行備份是必要的。在程序中單獨開一個線程,其功能是每隔5 min 對數(shù)據(jù)庫文件進行1 次備份,這樣確保數(shù)據(jù)庫列表文件損壞時有備份文件可用,使故障顯示內(nèi)容不致空白。
使用tNetrol 系列10 寸新一代智能顯示屏開發(fā)HMI 應(yīng)用軟件,其硬件環(huán)境包含MVB 和ETH 網(wǎng)絡(luò)接口設(shè)計,嵌人式Linux 操作系統(tǒng),通過Qt Creator開發(fā)軟件使用C/C++編寫故障診斷程序代碼并編譯為可執(zhí)行程序。此屏在某高速動車組項目中,整個網(wǎng)絡(luò)使用以太網(wǎng)TRDP 數(shù)據(jù)通訊,HMI 程序的故障診斷部分使用上述SQLite 數(shù)據(jù)庫技術(shù)在列車司機顯示屏故障診斷,開發(fā)出的故障相關(guān)界面如圖3、圖4 所示。
圖3 高速車故障彈出界面
圖4 高速車故障信息界面
同樣使用tNetrol 系列12 寸新一代智能顯示屏在某地鐵的城軌列車項目中,整個網(wǎng)絡(luò)使用多功能車輛總線MVB 數(shù)據(jù)通訊,HMI 程序的故障診斷部分亦使用上述SQLite 數(shù)據(jù)庫技術(shù)在列車司機顯示屏故障診斷,開發(fā)出的故障相關(guān)界面如圖5、圖6所示。
圖5 城軌車故障信息界面
圖6 城軌車故障彈出界面
經(jīng)現(xiàn)車做列車調(diào)試試驗和動態(tài)運行試驗驗證,程序運行良好,對故障信息的修改維護方便快捷,完全能滿足列車運行和維修需求。
文中首先描述了列車網(wǎng)絡(luò)控制系統(tǒng)與顯示屏的通信原理,以及列車司乘人員和庫內(nèi)檢修人員對列車顯示屏的故障顯示需求項點,在顯示屏設(shè)計和實現(xiàn)列車故障診斷系統(tǒng)顯示故障功能的過程中,對每個步驟做詳細(xì)介紹,結(jié)果表明該方法對列車故障診斷結(jié)果的顯示具有高效性、健壯性,并保證了顯示屏故障信息顯示的準(zhǔn)確性。在今后的實踐過程中,將側(cè)重于對列車顯示屏故障診斷應(yīng)用程序處理方法的繼續(xù)優(yōu)化和擴展數(shù)據(jù)庫技術(shù)的應(yīng)用,以幫助司機或維護人員能更準(zhǔn)更快地查找并解決故障。