陳 亮,李 潔
(1.陜西重型汽車有限公司,陜西西安 710200;2.西安鐵道技師學(xué)院,陜西西安 710038)
VB(Visual Basic)是Microsoft 公司開發(fā)的一種通用的基于對象的可視化程序設(shè)計(jì)語言,擁有GUI(Graphical User Interface,圖形用戶界面)和RAD(Rapid Application Development,快速應(yīng)用程序開發(fā))系統(tǒng)。采用可視化編程,減少了代碼編寫難度,能快速地開發(fā)出應(yīng)用程序。
汽車檢測線主要對下線車輛的制動(含輪重)、前照燈、側(cè)滑、車速和尾氣排放等機(jī)動車安全技術(shù)項(xiàng)目進(jìn)行檢測,包含9 條線體,52 臺設(shè)備,分布式布局在兩個(gè)車間中。設(shè)備采用工控機(jī)控制,通過Ethernet 網(wǎng)絡(luò)與服務(wù)器和報(bào)檢計(jì)算機(jī)進(jìn)行通信,汽車檢測線網(wǎng)絡(luò)拓?fù)淙鐖D1 所示,最遠(yuǎn)距離800 m,使用光纖收發(fā)器6 套,交換機(jī)8 臺。
圖1 汽車檢測線網(wǎng)絡(luò)拓?fù)?/p>
檢測線出現(xiàn)網(wǎng)絡(luò)后,經(jīng)常需要人工逐臺對服務(wù)器、計(jì)算機(jī)、工控機(jī)和網(wǎng)絡(luò)設(shè)備的聯(lián)網(wǎng)狀態(tài)進(jìn)行檢查,耗時(shí)需要20 min以上。而且設(shè)備維修人員的經(jīng)驗(yàn)對故障的排查影響很大,導(dǎo)致故障處理時(shí)間長。使用VB 編寫網(wǎng)絡(luò)故障檢測算法,開發(fā)故障檢測程序,定位故障設(shè)備和故障點(diǎn),可以有效解決以上問題。
現(xiàn)場進(jìn)行網(wǎng)絡(luò)故障排查時(shí),首先要確定服務(wù)器、計(jì)算機(jī)和工控機(jī)的在網(wǎng)情況,找出掉線的設(shè)備。然后,根據(jù)掉線設(shè)備的數(shù)量和分布,判斷故障點(diǎn),再逐一進(jìn)行排查解決。因此,程序需要具備網(wǎng)絡(luò)狀態(tài)監(jiān)控和故障點(diǎn)邏輯判斷兩大功能。
通過編程依次循環(huán)對服務(wù)器、計(jì)算機(jī)和工控機(jī)進(jìn)行網(wǎng)絡(luò)通斷測試,根據(jù)測試的結(jié)果,判斷設(shè)備網(wǎng)絡(luò)連接是否正常,不同的結(jié)果用不同的圖標(biāo)來顯示,實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)控功能。將維修經(jīng)驗(yàn)變成軟件算法,根據(jù)網(wǎng)絡(luò)通斷檢測結(jié)果,軟件自動進(jìn)行邏輯判斷,確定可能的故障點(diǎn),使用表格進(jìn)行結(jié)果輸出。
檢測線共有1 臺服務(wù)器、2 臺報(bào)檢計(jì)算機(jī)和19 臺工控機(jī),分別位于登錄室、檢測線和磨合間3 個(gè)不同的地方。為使維修人員快速找出掉線設(shè)備及所在區(qū)域,界面中對22 臺設(shè)備進(jìn)行分區(qū)域布局。登錄室區(qū)域包含服務(wù)器、計(jì)算機(jī)等3 臺設(shè)備,檢測線區(qū)域包含1#~5#檢測線的15 臺工控機(jī),磨合間區(qū)域包含5#~8#磨合間的4 臺工控機(jī)。
本著用戶界面簡潔清晰的原則,使用Image 控件顯示不同的圖標(biāo)來直觀表示設(shè)備聯(lián)網(wǎng)正常和聯(lián)網(wǎng)異常兩種網(wǎng)絡(luò)狀態(tài)。同時(shí),設(shè)計(jì)監(jiān)控開始按鈕,使用CheckBox 控件,通過勾選動作既能實(shí)現(xiàn)監(jiān)控開始、停止的功能,又能顯示程序的運(yùn)行狀態(tài)。點(diǎn)擊“退出”按鈕,即可退出軟件。網(wǎng)絡(luò)狀態(tài)監(jiān)控界面如圖2 所示。
圖2 網(wǎng)絡(luò)狀態(tài)監(jiān)控界面布局
根據(jù)積累的故障排查經(jīng)驗(yàn),故障點(diǎn)判斷邏輯在登錄室、檢測線和磨合間3 種場景下是不同的。在不同的場景下,需要調(diào)用對應(yīng)的邏輯方法,判斷出網(wǎng)絡(luò)故障,并顯示可能的故障點(diǎn)。因此,故障點(diǎn)判斷界面分為軟件所在位置(場景選擇)、檢測結(jié)果和可能的故障點(diǎn)3 個(gè)功能區(qū)。
使用OptionButton 控件,設(shè)計(jì)登錄室、檢測線和磨合間3 種不同的使用場景,通過勾選自動調(diào)用對應(yīng)的算法。使用ListBox控件,顯示網(wǎng)絡(luò)故障檢測結(jié)果。使用ListBox 控件,顯示邏輯判斷的結(jié)果,故障點(diǎn)可能出現(xiàn)的位置和網(wǎng)絡(luò)設(shè)備。
點(diǎn)擊“檢測開始”按鈕,開始網(wǎng)絡(luò)故障判斷。“清空檢測結(jié)果”,實(shí)現(xiàn)列表框清屏功能。“返回”按鈕,可以快速返回網(wǎng)絡(luò)狀態(tài)監(jiān)控界面。點(diǎn)擊“退出”按鈕,即可退出軟件。故障點(diǎn)判斷界面如圖3 所示。
圖3 故障點(diǎn)判斷界面布局
程序算法主要包括按鈕點(diǎn)擊事件、設(shè)備網(wǎng)絡(luò)狀態(tài)判斷和網(wǎng)絡(luò)故障點(diǎn)判斷。
勾選“監(jiān)控開始”按鈕,循環(huán)調(diào)用函數(shù)對設(shè)備的網(wǎng)絡(luò)狀態(tài)進(jìn)行判斷,并顯示對應(yīng)的狀態(tài)圖標(biāo)。
主要代碼如下:
現(xiàn)場設(shè)備有在線和掉線兩種網(wǎng)絡(luò)狀態(tài),可以使用ICMP(Internet Control Message Protocol,Internet 控制報(bào)文協(xié)議)來判斷。ICMP 協(xié)議是一種面向無連接的協(xié)議,在主機(jī)與客戶端之間傳遞控制信息,用于檢測網(wǎng)絡(luò)的連接狀況。
主機(jī)向客戶端發(fā)送ECHO 請求,從ICMP_ECHO_REPLY 答復(fù)所返回的報(bào)文信息中,獲取往返時(shí)間Round trip Time。如果ECHO 請求失敗,則會將往返時(shí)間Round trip Time 回報(bào)為0。根據(jù)Round trip Time 是否為0,則可判斷測試客戶端的網(wǎng)絡(luò)是否正常,從而獲取測試設(shè)備是否在線。
主要代碼如下:
在網(wǎng)絡(luò)狀態(tài)監(jiān)控界面循環(huán)調(diào)用上述函數(shù),當(dāng)ECHO.status不為0 時(shí),Image 控件顯示設(shè)備聯(lián)網(wǎng)正常圖標(biāo),當(dāng)ECHO.status為0 時(shí),則顯示聯(lián)網(wǎng)異常圖標(biāo),實(shí)現(xiàn)在線監(jiān)控22 臺設(shè)備的網(wǎng)絡(luò)狀態(tài)。
在任一場景下,對3 個(gè)區(qū)域的節(jié)點(diǎn)(或重要)設(shè)備發(fā)送ECHO請求,均能根據(jù)返回的ECHO.status(即Round trip Time),判斷出測試主機(jī)到服務(wù)器、檢測線和磨合間3 個(gè)測試區(qū)域的網(wǎng)絡(luò)是否正常。將ECHO.status 為不為0 時(shí)記為Y,為0 時(shí)記為N,網(wǎng)絡(luò)正常記為Y,網(wǎng)絡(luò)異常記為N,依據(jù)邏輯編寫網(wǎng)絡(luò)檢測結(jié)果判定表,網(wǎng)絡(luò)檢測結(jié)果判定見表1。
表1 網(wǎng)絡(luò)檢測結(jié)果判定
根據(jù)總結(jié)的維修經(jīng)驗(yàn),使用IF…ELSE 語句,進(jìn)行邏輯算法編程,將網(wǎng)絡(luò)檢測結(jié)果和對應(yīng)的故障點(diǎn)在ListBox 控件中顯示。
主要代碼如下:
程序開發(fā)過程中,在辦公室局域網(wǎng)進(jìn)行了功能模塊的測試。測試結(jié)果正常后,將程序部署到汽車檢測線的計(jì)算機(jī)和工控機(jī)上。在故障模擬測試階段,網(wǎng)絡(luò)狀態(tài)監(jiān)控和故障點(diǎn)邏輯判斷兩大功能均能正常運(yùn)行。
檢測線出現(xiàn)網(wǎng)絡(luò)故障時(shí),可以準(zhǔn)確、快速地顯示服務(wù)器、報(bào)檢計(jì)算機(jī)和工控機(jī)等設(shè)備的聯(lián)網(wǎng)狀態(tài),網(wǎng)絡(luò)狀態(tài)監(jiān)控如圖4 所示,并判斷出可能的故障位置和網(wǎng)絡(luò)設(shè)備,故障點(diǎn)邏輯判斷如圖5 所示。經(jīng)過一年多的使用和數(shù)據(jù)統(tǒng)計(jì),汽車檢測線設(shè)備網(wǎng)絡(luò)故障的平均排查時(shí)間從25 min 降低到5 min,有效提升了故障的處理效率,減少設(shè)備的停機(jī)時(shí)間。
圖4 網(wǎng)絡(luò)狀態(tài)監(jiān)控
圖5 故障點(diǎn)邏輯判斷
根據(jù)Ethernet 網(wǎng)絡(luò)狀態(tài)判斷方法,使用Visual Basic 語言對汽車檢測線網(wǎng)絡(luò)狀態(tài)監(jiān)控和故障點(diǎn)的邏輯判斷進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。一方面,通過軟件算法代替人工逐臺檢查,提高了設(shè)備維修效率;另一方面,將維修經(jīng)驗(yàn)總結(jié)提煉成軟件算法,有利于知識和經(jīng)驗(yàn)的傳承。