任富爭,李如石,高興華,張紅星
(中車唐山機車車輛有限公司 產品研發中心,河北 唐山 063035)
列車網絡控制系統采用分布式控制系統,分布于整個列車的各個智能單元連接成一個列車網絡,各個不同的分布式單元將使用TCN 或ECN 總線連接起來,且符合IEC 61375 標準。列車網絡控制系統的故障診斷功能是實時診斷列車運行時發生的故障并以恰當的方式顯示出來,為司乘或檢修人員提供故障信息及處理意見[1]。完成故障診斷功能的主要設備有列車網絡主控設備(CCU)和司機顯示屏(HMI)。主控設備主要負責故障信息的分析診斷,司機顯示屏主要功能就是將診斷結果顯示給司機和維護人員,同時提供相應的操作指導說明。傳統顯示屏列車故障診斷功能的實現是通過幾個文本文件,分別配置故障代碼、等級、發生故障的車號信息、故障發生原因以及故障處理措施,這幾個文本文件之間要行號名稱相互匹配才能引用,對列車故障診斷代碼的配置往往需要耗費很長時間才能配置正確,即使如此,在后續對故障的修改更新后還需要重新配置。因此,文中重點闡述了基于顯示屏使用數據庫技術對列車故障診斷信息實時顯示功能的實現。
主要通過列車顯示屏提供圖形和文字信息,實時顯示列車運行狀態和故障信息,故障部分包括故障信息的發生和消失以及發生故障時列車環境參數信息,從列車司乘人員行車便捷操作和易于維修人員排查故障的角度,顯示屏對列車故障顯示和處理的需求簡述如下:
(1)故障等級通常分輕微故障、中等故障、嚴重故障。
(2)故障是否消失分為當前故障和歷史故障顯示。
(3)每條故障以純文本顯示,且有故障代碼、故障等級、故障發生的時間等信息,并能查看相應的故障處理措施建議等信息。
(4)在查看時可以根據故障等級對故障進行篩選顯示。
(5)對列車行駛安全有影響的嚴重故障和事件信息,實時彈出故障信息內容供列車司乘人員查看確認。
(6)輕微故障及其相關信息僅對維修人員可見。
(7)顯示屏主界面上可以提示司乘人員列車存在的故障及故障等級。
在實際的項目中,故障診斷顯示的數據信息可以通過數據庫列表來存放,結合故障診斷顯示需求內容和故障診斷程序可分別設計出故障字典列表、當前故障列表和歷史故障列表。在數據庫的選擇上使用SQLite 數據庫,選用SQLite 主要是基于其自身優勢,首先它是完全免費的,數據庫體積小易維護、存儲量比較高、健壯性好和運行速度快,且可以在所有主流的操作系統上運行等優點[2]。
編制一個故障字典列表(FaultDic)表格,根據列車故障的參數及屬性,在SQLite 故障字典表格中對每條故障的信息設計包含以下字段,見表1。

表1 故障字典列表
故障字典用來描述每條故障信息屬性,使用數據庫表格編制故障字典的明顯優勢體現在對數據的變更方面。隨項目的進程,后續因各方原因需要多次對故障信息的內容進行增減或更改,這是不可避免,如調試試驗后需要對某些故障信息的內容進行增加、刪除,或修改故障等級、處理意見等。
數據庫列表的設計可減少應用軟件開發者的工作量,只需要將整理好的列車故障診斷代碼表另存為CSV 格式文件,直接導入到數據庫列表即可,節省了傳統文本方法中的反復核對文本文件行號等信息過程,且能保證其正確性;后期的維護極其方便,只需要在更新列車故障診斷代碼表后將CSV 格式文件導入,不需更改應用軟件程序的任何代碼,維護更新時間快且準確;因數據字典的端口號、字節偏移和位偏移存在,使故障數據解析不會有錯位現象而導致空白記錄行的問題。
二維故障字典數組是故障診斷程序初始化時將數據庫字典列表的數據完整地拷來1 份用于實時訪問,根據顯示屏上對故障顯示和程序邏輯處理的需要,對二維故障字典數組設計成員變量,見表2。

表2 二維故障字典數組
在列車故障診斷中需要實時輪詢列車網絡總線上的故障信息數據,為減少應用程序對數據庫文件訪問的頻率,避免造成數據庫文件不必要的損壞,二維故障字典數組(FaultDic)來替代數據庫列表提供網絡總線上端口輪詢參數和故障相關信息,既可以加快程序輪詢運行時間,又能降低因不間斷訪問數據庫文件引起的CPU 負荷,也能保證程序可靠性。二維故障字典數組的內容在設備每次上電的程序初始化時都會跟最新的故障字典數據保持一致,相比于故障字典多了一故障標識的成員變量,用于判斷故障是當前故障還是歷史故障。
由于界面要分別顯示當前故障和歷史故障信息,為數據處理方便需要設計2 個SQLite 數據庫列表:當前故障列表(Cur_Fault)和歷史故障列表(His_Fault)。當前故障列表設計的各字段見表3,歷史故障列表設計的各字段見表4。

表3 當前故障列表

表4 歷史故障列表
當前故障列表存放當前故障相關的關鍵信息,歷史故障列表存放歷史故障相關的關鍵信息,列表中的索引號,是用于在數據庫字典數組中檢索故障詳情的行號,對數據列表的查詢均可以使用成熟快捷的SQL 語句實現。
列車各顯示屏在上電之后,首先執行初始化程序,如圖1 所示。首先判斷故障列表的故障數量,如果故障數量為0(上次斷電時數據庫列表損壞),則需用備份文件替換,替換后數據庫當前故障列表數據會在設備上電后重新判斷當前故障,統計數據庫歷史故障列表數據并按故障發生時間排序,然后把故障字典數據庫數據逐條放入二維故障數據字典數組中。

圖1 診斷初始化
在列車上電2 min(列車各個子系統上電需要進行自診斷過程)之后,開始執行故障診斷程序,診斷程序以一定周期(200 ms)循環執行故障判斷程序,循環時根據VCU 生命信號標識正常,并記錄本次循環的時間。每次執行的故障判斷程序均按照故障字典數組的端口配置信息在列車總線上輪詢所有的故障數據位,根據故障數組中每條故障成員的cur_flag 的值和故障端口輪詢的值,來判斷相應該條故障是新發生還是新消失(判斷流程如圖2 所示),以便將故障信息更新到當前故障列表或歷史故障列表中。

圖2 故障判斷邏輯
故障信息的顯示按照顯示方式分為:在故障界面顯示、彈出界面顯示故障和故障詳情(包括處理措施)的顯示。在故障界面顯示時根據界面輸入的故障等級和頁碼號,使用SQL 語句在當前故障或歷史故障數據列表和故障字典中查找相關故障信息顯示即可;在故障診斷程序中實時地輪詢當前故障列表,如查找到發生對列車行駛安全有影響的嚴重故障和事件信息,根據當前故障列表中的索引號查找故障字典中相關故障信息,在彈出界面顯示;故障詳情信息一般是在故障界面中選擇所要查看的故障條目,點擊后,界面會自動彈出,程序會根據故障代碼在故障字典中查找相關故障信息用于顯示。
當程序診斷到有故障發生或消失時,需要對數據庫列表文件進行讀寫操作,此時如遇列車斷電,數據庫列表文件就會被損壞,造成不可修復的錯誤。因此,對數據庫文件進行備份是必要的。在程序中單獨開一個線程,其功能是每隔5 min 對數據庫文件進行1 次備份,這樣確保數據庫列表文件損壞時有備份文件可用,使故障顯示內容不致空白。
使用tNetrol 系列10 寸新一代智能顯示屏開發HMI 應用軟件,其硬件環境包含MVB 和ETH 網絡接口設計,嵌人式Linux 操作系統,通過Qt Creator開發軟件使用C/C++編寫故障診斷程序代碼并編譯為可執行程序。此屏在某高速動車組項目中,整個網絡使用以太網TRDP 數據通訊,HMI 程序的故障診斷部分使用上述SQLite 數據庫技術在列車司機顯示屏故障診斷,開發出的故障相關界面如圖3、圖4 所示。

圖3 高速車故障彈出界面

圖4 高速車故障信息界面
同樣使用tNetrol 系列12 寸新一代智能顯示屏在某地鐵的城軌列車項目中,整個網絡使用多功能車輛總線MVB 數據通訊,HMI 程序的故障診斷部分亦使用上述SQLite 數據庫技術在列車司機顯示屏故障診斷,開發出的故障相關界面如圖5、圖6所示。

圖5 城軌車故障信息界面

圖6 城軌車故障彈出界面
經現車做列車調試試驗和動態運行試驗驗證,程序運行良好,對故障信息的修改維護方便快捷,完全能滿足列車運行和維修需求。
文中首先描述了列車網絡控制系統與顯示屏的通信原理,以及列車司乘人員和庫內檢修人員對列車顯示屏的故障顯示需求項點,在顯示屏設計和實現列車故障診斷系統顯示故障功能的過程中,對每個步驟做詳細介紹,結果表明該方法對列車故障診斷結果的顯示具有高效性、健壯性,并保證了顯示屏故障信息顯示的準確性。在今后的實踐過程中,將側重于對列車顯示屏故障診斷應用程序處理方法的繼續優化和擴展數據庫技術的應用,以幫助司機或維護人員能更準更快地查找并解決故障。