龔 娟
(1.武漢大學(xué),武漢 430072; 2.湖南鐵道職業(yè)技術(shù)學(xué)院, 湖南 株洲 412000 )
車載顯示單元診斷維護(hù)系統(tǒng)優(yōu)化設(shè)計與實現(xiàn)
龔 娟1,2
(1.武漢大學(xué),武漢 430072; 2.湖南鐵道職業(yè)技術(shù)學(xué)院, 湖南 株洲 412000 )
針對目前車載顯示單元監(jiān)測、診斷及維護(hù)方式的局限性,通過分析研究,提出了一種新型的車載顯示單元診斷維護(hù)方案,并通過設(shè)計進(jìn)行了軟件實現(xiàn);新實現(xiàn)的系統(tǒng)軟件可以自動對底層程序及應(yīng)用程序進(jìn)行監(jiān)控及故障記錄,并實現(xiàn)故障信息的提取,為設(shè)計和維護(hù)人員進(jìn)行故障分析和故障處理提供便利;系統(tǒng)通過以太網(wǎng)進(jìn)行固件及軟件的升級和備份,且支持一鍵升級,能夠極大地提升工作效率;同時,系統(tǒng)開發(fā)過程中融入人機(jī)工程理念,充分考慮界面美觀和交互的便利性;盡量降低軟件的耦合度,提高軟件的可移植性。
顯示單元;監(jiān)測;診斷;維護(hù)
隨著軌道交通行業(yè)不斷發(fā)展,列車需求不斷攀升。車載顯示單元的裝車數(shù)量也在不停的增長,作為列車運(yùn)行控制與顯示的終端設(shè)備,擔(dān)負(fù)著車載系統(tǒng)人機(jī)接口功能,因而顯示系統(tǒng)的監(jiān)測、診斷及維護(hù)相當(dāng)重要。
車載顯示單元操作系統(tǒng)為嵌入式Linux系統(tǒng),傳統(tǒng)的診斷維護(hù)方式主要是采用串口和USB接口進(jìn)行維護(hù),不具備操作的可視化和工具化。同時,維護(hù)過程為考慮U盤的安全性,必須采用專用U盤,且一旦刷寫失敗將導(dǎo)致系統(tǒng)崩潰;另外,串口通信傳輸速率低,耗費(fèi)時間長,影響現(xiàn)場維護(hù)的效率。以往的故障診斷方式多針對于底層系統(tǒng),對于上層應(yīng)用故障主要采用日志文件進(jìn)行記錄,但是系統(tǒng)日志文件對非設(shè)計人員來說晦澀難懂,無法基于日志文件及時的開展故障分析。因而,傳統(tǒng)的人機(jī)接口單元診斷維護(hù)方式在如今的行業(yè)趨勢下顯得越來越局限。
針對以上情況,本文提出了一種車載顯示單元診斷維護(hù)系統(tǒng)的優(yōu)化方案,并通過開發(fā)設(shè)計,進(jìn)行了軟件實現(xiàn),系統(tǒng)采用C/S架構(gòu)構(gòu)建通信環(huán)境,設(shè)計交互功能實現(xiàn)嵌入式Linux系統(tǒng)與Windows PC之間的可視化通信,利用后臺監(jiān)視進(jìn)程對單元進(jìn)行自動監(jiān)視和故障診斷,利用以太網(wǎng)進(jìn)行固件及軟件的升級備份,提高效率,同時整個通信過程采用加密技術(shù)保障信息傳輸?shù)陌踩浴?/p>
系統(tǒng)設(shè)計從充分解決原有系統(tǒng)效率低、交互可視不友好等問題出發(fā),采用高帶寬的以太網(wǎng)通信接口,通信速率達(dá)到100 Mbps,建立友好的可視化交互操作界面,構(gòu)建快捷操作和批量處理功能,從根本上解決原有系統(tǒng)的弊端,提升系統(tǒng)易用性和可用性。
診斷維護(hù)系統(tǒng)關(guān)聯(lián)關(guān)系如圖1所示,PC上運(yùn)行前端軟件通過以太網(wǎng)與顯示單元連接,通過以太網(wǎng)與診斷維護(hù)進(jìn)程進(jìn)行交互,實現(xiàn)二者間的數(shù)據(jù)傳輸和控制。
圖1 診斷維護(hù)系統(tǒng)連接結(jié)構(gòu)
本系統(tǒng)采用C/S(客戶端/服務(wù)器端)的模型來實現(xiàn),利用基于TCP協(xié)議的流式套接字(socket)來提供可靠的、面向連接的通信方式,在該模型中,服務(wù)器端使用Linux提供的接口,而客戶端使用.NET提供的AsyncCallBack(異步回調(diào))的委托方式構(gòu)建跨平臺的異步通信,如圖2所示。
圖2 診斷維護(hù)系統(tǒng)通信架構(gòu)
服務(wù)器端部署于顯示單元文件系統(tǒng)中,主要包含應(yīng)用監(jiān)視診斷和固件維護(hù)兩大功能模塊,客戶端軟件配置于PC機(jī)上,具有良好的可視化交互界面。服務(wù)器端在顯示單元應(yīng)用進(jìn)程啟動時開啟服務(wù),監(jiān)視進(jìn)程,并等待客戶端的連接??蛻舳送ㄟ^以太網(wǎng)接入,并向服務(wù)器端請求連接,連接成功后,根據(jù)需求向服務(wù)器發(fā)送故障信息提取、固件更新、文件備份等設(shè)計的功能請求,服務(wù)器端根據(jù)請求類型執(zhí)行相應(yīng)的操作,并將結(jié)果反饋到客戶端。
顯示單元診斷維護(hù)系統(tǒng)的優(yōu)化主要包含5個方面:監(jiān)視診斷功能優(yōu)化、固件維護(hù)功能優(yōu)化、通信交互的可靠性優(yōu)化、文件傳輸?shù)陌踩用苄砸约败浖O(shè)計模式優(yōu)化。同時從功能和性能的角度對整個系統(tǒng)進(jìn)行全面的優(yōu)化設(shè)計,確保系統(tǒng)在相關(guān)領(lǐng)域應(yīng)用的可行性。
客戶端與服務(wù)器端連接采用TCP協(xié)議,通過三次握手確保連接的可靠性和穩(wěn)定性。如圖3所示,建立連接時,客戶端發(fā)送連接請求到服務(wù)器端,并進(jìn)入發(fā)送等待狀態(tài),等待服務(wù)器端確認(rèn);服務(wù)器端接收請求,并發(fā)送ACK給客戶端進(jìn)行確認(rèn),服務(wù)器端進(jìn)入接收等待狀態(tài);客戶端收到服務(wù)器端的ACK包,再向服務(wù)器端發(fā)送確認(rèn)包ACK,此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入連接成功狀態(tài)。此時,客戶端與服務(wù)器端才可以開始傳送數(shù)據(jù)。
圖3 通信流程圖
監(jiān)視診斷功能主要是針對顯示單元應(yīng)用層,處于應(yīng)用層的所有進(jìn)程都可以被監(jiān)視和記錄。判斷應(yīng)用程序能否正常運(yùn)行的指標(biāo)主要有:CPU負(fù)荷值、內(nèi)存占用值、生命信號和異常退出情況。當(dāng)應(yīng)用程序的CPU占用值和內(nèi)存占用值超出正常值時,會影響CPU處理能力,造成系統(tǒng)卡頓,無法操作。應(yīng)用程序需要通過以太網(wǎng)等通信接口接收來自其他各個控制系統(tǒng)傳輸?shù)臄?shù)據(jù),在顯示單元上實時的顯示,當(dāng)應(yīng)用程序異常退出,會導(dǎo)致顯示單元藍(lán)屏或白屏,對列車運(yùn)用造成影響。
針對相關(guān)可能影響顯示單元正常運(yùn)行的情況,系統(tǒng)采用后臺監(jiān)視的方式對應(yīng)用程序的各項指標(biāo)進(jìn)行實時監(jiān)測,并對監(jiān)測數(shù)據(jù)進(jìn)行實時分析,形成診斷結(jié)果并反饋,總體方案如圖4所示。
圖4 監(jiān)視診斷實現(xiàn)方案框圖
系統(tǒng)設(shè)計對監(jiān)視到的所有異常情況,均進(jìn)行以下三個步驟的處理:1)對異常信息進(jìn)行記錄,記錄文件的路徑可以根據(jù)需求進(jìn)行設(shè)置;2)對于突發(fā)異常采取正確合適的策略來應(yīng)對。對于普通應(yīng)用程序,當(dāng)異常退出時可直接對其進(jìn)行進(jìn)程重啟操作,但對于一些關(guān)鍵的應(yīng)用程序,應(yīng)對策略要更加全面,要根據(jù)不同的退出等級進(jìn)行應(yīng)對處理,對啟動策略進(jìn)行全面的分析,必要時采用圖形庫進(jìn)行提示;3)利用客戶端軟件可以向服務(wù)端請求異常信息,服務(wù)器端提取文件中的故障代碼通過解析后發(fā)送回客戶端,用戶獲取顯示單元故障情況。
顯示單元在應(yīng)用開發(fā)過程中,由于實際應(yīng)用需求的變更,為了更好的滿足需求,顯示單元系統(tǒng)也需要同步進(jìn)行必要的更新和配置,一般情況下,需要進(jìn)行維護(hù)的固件包括:底層軟件、應(yīng)用程序和系統(tǒng)配置文件。其中底層軟件包括U_boot、內(nèi)核和文件系統(tǒng)。針對固件的維護(hù)主要分為固件升級和文件備份兩個部分,以下分別固件升級和文件備份的方案實現(xiàn)進(jìn)行詳細(xì)說明。
固件升級:客戶端與服務(wù)器端連接成功后,用戶將固件升級指令發(fā)送給服務(wù)器端,服務(wù)器端根據(jù)指令主動從客戶端獲取固件升級包、固件名及固件大小。固件升級包通過FTP協(xié)議從客戶端上傳到服務(wù)器端,服務(wù)器端接收完固件升級包后,將其存放在指定目錄下,通過對比固件名和大小確保接收的完整性和一致性,若接受完整,則服務(wù)器端擦除系統(tǒng)底層軟件及應(yīng)用程序所在的FLASH分區(qū),將固件更新包刷寫到對應(yīng)的分區(qū)上,并計算該分區(qū)的CRC校驗值發(fā)送回客戶端,客戶端將接收到的CRC值與本地固件包的CRC值進(jìn)行比較,若一致,則說明固件更新成功,為簡化用戶的操作,系統(tǒng)設(shè)計有一鍵更新所有固件的功能,通過一鍵更新,簡化用戶操作步驟,提高系統(tǒng)效率。固件升級方案如圖5所示。
圖5 固件升級實現(xiàn)流程圖
文件備份:文件備份是固件更新的逆過程,往往在進(jìn)行故障分析時,設(shè)計人員需要獲取故障顯示單元的系統(tǒng)配置文件和底層軟件,通過FTP協(xié)議將文件從顯示單元服務(wù)端上傳到客戶端本地路徑。
固件維護(hù)軟件設(shè)計為一個后臺進(jìn)程,為了更好地響應(yīng)用戶交互的實時性,同時降低對系統(tǒng)性能的影響,固件維護(hù)功能采用多線程的編程方式來實現(xiàn),避免引起程序阻塞。程序流程如圖6所示,1)服務(wù)器端創(chuàng)建socket 并綁定IP地址和端口,打開監(jiān)聽,等待客戶端接入;2)客戶端發(fā)送連接請求,服務(wù)器端接受連接,并獲取到PC機(jī)的IP地址,兩端正式建立連接;3)服務(wù)器端設(shè)置接收超時時間,防止程序阻塞;4)客戶端發(fā)送指令,根據(jù)指令類型確認(rèn)要更新的固件類型,并匹配文件名稱及大?。?)若匹配結(jié)果一致,擦除固件所在的flash 區(qū)域,將新的更新包寫入flash,計算CRC校驗值;6)返回CRC值到客戶端進(jìn)行匹配,若匹配結(jié)果一致,則更新成功;7)此時服務(wù)器端程序繼續(xù)等待下一次更新請求,若超時,則等待下一次接入,避免處于阻塞狀態(tài)。
圖6 固件維護(hù)程序流程圖
為了避免由于人為操作引起的固件更新失敗和通信交互時信息泄露導(dǎo)致系統(tǒng)異常的問題,文件的安全完整性和交互信息的加密在診斷維護(hù)系統(tǒng)設(shè)計過程中需要重點(diǎn)關(guān)注并進(jìn)行有效的設(shè)計和實現(xiàn)。
2.4.1 文件的安全完整性
通過對比客戶端與服務(wù)端的文件名和文件大小,確認(rèn)接收到的文件是否正確,對比客戶端與服務(wù)端文件的CRC校驗值,可以判斷刷寫到FLASH的文件內(nèi)容是否一致,只有二者都一致,才能判定更新成功。
2.4.2 信息加密
在客戶端與服務(wù)端進(jìn)行消息傳遞時,采用安全隧道的方式對信息進(jìn)行加密處理。安全隧道可以有效的防止通信交互式的信息泄漏問題,系統(tǒng)采用一套完整的密鑰機(jī)制,可以很好地運(yùn)用在LINUX系統(tǒng)上,通過兩把不一樣的公鑰與私鑰來進(jìn)行加密解密,來達(dá)到安全傳輸?shù)男Ч?/p>
在軟件設(shè)計、開發(fā)階段,盡量分離與系統(tǒng)平臺有關(guān)的代碼,通過簡潔的接口與平臺交互,減少軟件與系統(tǒng)平臺的耦合性,實現(xiàn)在多個顯示單元平臺上的兼容,使該系統(tǒng)具有良好的可移植性。在編碼時,采用一個主線程和動態(tài)生成子線程的分工模式,動態(tài)滿足各種配置需求,做到好的功能擴(kuò)展性,在后期需求增加時,能方便的進(jìn)行擴(kuò)展,提升開發(fā)效率。
采用面向?qū)ο蟮脑O(shè)計思路,劃分功能單元,提高代碼的重用率。功能單元劃分遵循兩個原則:1)分離原則:策略同機(jī)制分離,每一層只做自己份內(nèi)的事情,不交叉進(jìn)行,提高代碼的可維護(hù)性;2)緊湊性與正交性:每個單元既是單一完整的功能代碼,又不存在副作用,不對其他功能模塊產(chǎn)生影響。
較之以往采用日志文件來記錄并判斷故障的方式,優(yōu)化后的診斷方式更加智能,可配置性強(qiáng),監(jiān)視的內(nèi)容可按需求裁剪,可以單獨(dú)開啟多個線程對不同應(yīng)用進(jìn)程同時進(jìn)行監(jiān)視,對故障記錄和提取。
以應(yīng)用程序為例, 監(jiān)視診斷功能的實現(xiàn)步驟為:
1)監(jiān)視軟件在后臺開啟一個進(jìn)程,等待應(yīng)用程序啟動,待應(yīng)用進(jìn)程開啟,監(jiān)視軟件在記錄文件中記錄此次啟動事件。
2)在監(jiān)視過程中,若監(jiān)測到應(yīng)用程序的CPU負(fù)荷值、內(nèi)存占用值超出預(yù)設(shè)值,則會在記錄文件中進(jìn)行記錄,并對應(yīng)用程序采取相應(yīng)策略。
3) 在監(jiān)視過程中,若監(jiān)測到應(yīng)用程序異常退出,應(yīng)用程序無法查找到所監(jiān)視的進(jìn)程時,會將信息記錄在文件中,并會根據(jù)不同的退出等級和機(jī)制執(zhí)行相對應(yīng)的重啟操作。
4) 在監(jiān)視過程中,若監(jiān)測到應(yīng)用程序生命信號丟失,處于超時狀態(tài),監(jiān)視軟件會記錄相關(guān)信息,并采取策略。
5) 在監(jiān)視過程中,當(dāng)用戶需要提取相關(guān)的故障記錄時,開啟客戶端軟件,與顯示單元服務(wù)器端連接,一鍵讀取所需日期的所有故障信息。
值得一提的是,所有的應(yīng)對策略都可以針對不同功能的應(yīng)用進(jìn)行定制和擴(kuò)展,而不僅僅局限于單一的一種解決方式。
與傳統(tǒng)的固件維護(hù)方式相比,無論是固件維護(hù)涉及的固件更新還是文件備份,優(yōu)化后的固件維護(hù)方式更加注重操作的簡潔性,不需要繁復(fù)的命令、腳本,也不需要借助其他的存儲工具,無論車載顯示單元處于何種狀態(tài)下,都可以對它進(jìn)行固件維護(hù)操作,而且系統(tǒng)支持一鍵更新所有固件。
以kernel更新為例,固件更新的實現(xiàn)步驟為:
1)客戶端與顯示單元服務(wù)器端連接,發(fā)送更新kernel的請求。
2)服務(wù)器端解析請求,并獲取客戶端IP、kernel文件名及大小。
3)打開FTP服務(wù),并建立連接,對比兩端kernel文件名和大小,若一致,則從FTP服務(wù)器下載kernel文件到顯示單元內(nèi)存區(qū)。
4)對kernel文件進(jìn)行CRC校驗。
5)校驗成功后,刷寫到FLASH,更新成功。
以配置文件為例,文件備份的實現(xiàn)步驟為:
1)客戶端與顯示單元服務(wù)器端連接,發(fā)送配置文件備份請求。
2)服務(wù)器端解析請求,并獲取客戶端IP、配置文件的文件名及大小。
3)打開FTP服務(wù),并建立連接。
4)在文件系統(tǒng)中搜索配置文件,并將該文件通過FTP服務(wù)器上傳到本地路徑下。
Windows PC端的客戶端交互界面軟件采用C# winform框架實現(xiàn),C#是一種面向?qū)ο蟮木幊陶Z言,C#語法簡化了C++的諸多復(fù)雜性,提供很強(qiáng)的網(wǎng)絡(luò)編程功能,基于c#的socket開發(fā)已經(jīng)非常成熟,C#應(yīng)用由.NET平臺提供安全機(jī)制確保安全性,語言表現(xiàn)力強(qiáng),適用于可視化開發(fā)??蛻舳塑浖缑嫒鐖D7所示,與服務(wù)器端進(jìn)行連接之前,首先要將PC機(jī)的IP與顯示單元的IP設(shè)置為同一網(wǎng)段,并確保通信端口沒有被占用,否則會導(dǎo)致連接失敗。
圖7 客戶端軟件界面
固件維護(hù)界面如圖8所示,除了可以對底層軟件進(jìn)行單點(diǎn)更新單點(diǎn)外,還支持一鍵批量下載,并且有更新進(jìn)度提醒。
圖8 固件維護(hù)界面
通過對既有系統(tǒng)的分析,從優(yōu)化設(shè)計與實現(xiàn)的角度對系統(tǒng)進(jìn)行了重新的設(shè)計和優(yōu)化,經(jīng)過方案分析、設(shè)計實現(xiàn)和實際測試和驗證,文章所設(shè)計的車載顯示單元診斷維護(hù)系統(tǒng)能夠?qū)崿F(xiàn)監(jiān)視應(yīng)用程序、診斷故障信息、更新固件和配置文件的功能。與過去傳統(tǒng)的診斷維護(hù)方式相比,新的系統(tǒng)從架構(gòu)層面和實現(xiàn)手段上引入了高速以太網(wǎng)通信,和基于以太網(wǎng)的套接字通信機(jī)制,提高通信速率的同時保證了系統(tǒng)信息的安全性,界面實現(xiàn)方面借用PC端友好的可視化開發(fā),提高了用戶操作的友好型,系統(tǒng)充分結(jié)合實際應(yīng)用需求,提出并實現(xiàn)了一鍵操作和批量操作功能,提高了用戶應(yīng)用的便利性和高效性,系統(tǒng)設(shè)計充分考慮了軟件的低耦合,功能的強(qiáng)可配置性,相比以往的系統(tǒng)在功能和性能上都有了極大的提升,是一套較為完善的顯示單元平臺診斷維護(hù)解決方案和系統(tǒng)。鑒于系統(tǒng)架構(gòu)和設(shè)計的通用性,相關(guān)方案和功能通過簡單的配置或修改能夠兼容不同型號的顯示單元,同時通過適當(dāng)?shù)淖兏軌蚩焖俚囊浦驳狡渌愃乒δ苄枨蟮南到y(tǒng)中。
[1] 王業(yè)流, 王 強(qiáng). 嵌入式軟件可移植性設(shè)計技術(shù)[J]. 機(jī)車電傳動, 2013(2):81-84.
[2] 鄒 捷. 基于異步委托方式的Socket通信研究[J]. 現(xiàn)代計算機(jī):專業(yè)版, 2012(27):50-52.
[3] 徐克寶, 武 慧, 文藝成. 基于Socket的Windows與Linux平臺異步通信[J]. 計算機(jī)系統(tǒng)應(yīng)用, 2015, 24(7):232-235.
Optimization Design and Implementation of Vehicle Mounted Display Diagnosis and Maintenance System
Gong Juan1,2
(1.Wuhan University, Wuhan 430072,China; 2.Hunan Rilway Professional Technology College, Zhuzhou 412000,China)
The current maintenance mode of the display unit has definite limitation. Aiming at solving this problem, a new diagnosis and maintenance scheme for display unit is presented in this paper.Software realization has also been carried out .The monitoring software can monitor the application program and record the fault automatically. The fault information is extracted at the same time, so that this program can provide convenience to follow-up designers to analyze and deal with the fault. Firmware maintenance tool supports firmware upgrade ,backup and a key upgrade through the connection between Ethernet and monitor. In conclusion ,this tool greatly enhances the efficiency. Software has a good interface, and can been used easily. At the same time, the design process of software minimizes the coupling degree and portability of software has been improved greatly.
display unit; monitor;diagnosis;maintain
2017-05-12;
2017-05-25。
2017湖南省教育廳科學(xué)研究項目(17C1041)。
龔 娟(1978-),女,湖南汩羅人,碩士研究生,副教授/高級工程師,主要從事列車網(wǎng)絡(luò)控制方向的研究。
1671-4598(2017)08-0283-03
10.16526/j.cnki.11-4762/tp.2017.08.073
TN873
A