陳 亮,李 潔
(1.陜西重型汽車有限公司,陜西西安 710200;2.西安鐵道技師學院,陜西西安 710038)
VB(Visual Basic)是Microsoft 公司開發的一種通用的基于對象的可視化程序設計語言,擁有GUI(Graphical User Interface,圖形用戶界面)和RAD(Rapid Application Development,快速應用程序開發)系統。采用可視化編程,減少了代碼編寫難度,能快速地開發出應用程序。
汽車檢測線主要對下線車輛的制動(含輪重)、前照燈、側滑、車速和尾氣排放等機動車安全技術項目進行檢測,包含9 條線體,52 臺設備,分布式布局在兩個車間中。設備采用工控機控制,通過Ethernet 網絡與服務器和報檢計算機進行通信,汽車檢測線網絡拓撲如圖1 所示,最遠距離800 m,使用光纖收發器6 套,交換機8 臺。

圖1 汽車檢測線網絡拓撲
檢測線出現網絡后,經常需要人工逐臺對服務器、計算機、工控機和網絡設備的聯網狀態進行檢查,耗時需要20 min以上。而且設備維修人員的經驗對故障的排查影響很大,導致故障處理時間長。使用VB 編寫網絡故障檢測算法,開發故障檢測程序,定位故障設備和故障點,可以有效解決以上問題。
現場進行網絡故障排查時,首先要確定服務器、計算機和工控機的在網情況,找出掉線的設備。然后,根據掉線設備的數量和分布,判斷故障點,再逐一進行排查解決。因此,程序需要具備網絡狀態監控和故障點邏輯判斷兩大功能。
通過編程依次循環對服務器、計算機和工控機進行網絡通斷測試,根據測試的結果,判斷設備網絡連接是否正常,不同的結果用不同的圖標來顯示,實現網絡監控功能。將維修經驗變成軟件算法,根據網絡通斷檢測結果,軟件自動進行邏輯判斷,確定可能的故障點,使用表格進行結果輸出。
檢測線共有1 臺服務器、2 臺報檢計算機和19 臺工控機,分別位于登錄室、檢測線和磨合間3 個不同的地方。為使維修人員快速找出掉線設備及所在區域,界面中對22 臺設備進行分區域布局。登錄室區域包含服務器、計算機等3 臺設備,檢測線區域包含1#~5#檢測線的15 臺工控機,磨合間區域包含5#~8#磨合間的4 臺工控機。
本著用戶界面簡潔清晰的原則,使用Image 控件顯示不同的圖標來直觀表示設備聯網正常和聯網異常兩種網絡狀態。同時,設計監控開始按鈕,使用CheckBox 控件,通過勾選動作既能實現監控開始、停止的功能,又能顯示程序的運行狀態。點擊“退出”按鈕,即可退出軟件。網絡狀態監控界面如圖2 所示。

圖2 網絡狀態監控界面布局
根據積累的故障排查經驗,故障點判斷邏輯在登錄室、檢測線和磨合間3 種場景下是不同的。在不同的場景下,需要調用對應的邏輯方法,判斷出網絡故障,并顯示可能的故障點。因此,故障點判斷界面分為軟件所在位置(場景選擇)、檢測結果和可能的故障點3 個功能區。
使用OptionButton 控件,設計登錄室、檢測線和磨合間3 種不同的使用場景,通過勾選自動調用對應的算法。使用ListBox控件,顯示網絡故障檢測結果。使用ListBox 控件,顯示邏輯判斷的結果,故障點可能出現的位置和網絡設備。
點擊“檢測開始”按鈕,開始網絡故障判斷。“清空檢測結果”,實現列表框清屏功能。“返回”按鈕,可以快速返回網絡狀態監控界面。點擊“退出”按鈕,即可退出軟件。故障點判斷界面如圖3 所示。

圖3 故障點判斷界面布局
程序算法主要包括按鈕點擊事件、設備網絡狀態判斷和網絡故障點判斷。
勾選“監控開始”按鈕,循環調用函數對設備的網絡狀態進行判斷,并顯示對應的狀態圖標。
主要代碼如下:
現場設備有在線和掉線兩種網絡狀態,可以使用ICMP(Internet Control Message Protocol,Internet 控制報文協議)來判斷。ICMP 協議是一種面向無連接的協議,在主機與客戶端之間傳遞控制信息,用于檢測網絡的連接狀況。
主機向客戶端發送ECHO 請求,從ICMP_ECHO_REPLY 答復所返回的報文信息中,獲取往返時間Round trip Time。如果ECHO 請求失敗,則會將往返時間Round trip Time 回報為0。根據Round trip Time 是否為0,則可判斷測試客戶端的網絡是否正常,從而獲取測試設備是否在線。
主要代碼如下:


在網絡狀態監控界面循環調用上述函數,當ECHO.status不為0 時,Image 控件顯示設備聯網正常圖標,當ECHO.status為0 時,則顯示聯網異常圖標,實現在線監控22 臺設備的網絡狀態。
在任一場景下,對3 個區域的節點(或重要)設備發送ECHO請求,均能根據返回的ECHO.status(即Round trip Time),判斷出測試主機到服務器、檢測線和磨合間3 個測試區域的網絡是否正常。將ECHO.status 為不為0 時記為Y,為0 時記為N,網絡正常記為Y,網絡異常記為N,依據邏輯編寫網絡檢測結果判定表,網絡檢測結果判定見表1。

表1 網絡檢測結果判定
根據總結的維修經驗,使用IF…ELSE 語句,進行邏輯算法編程,將網絡檢測結果和對應的故障點在ListBox 控件中顯示。
主要代碼如下:


程序開發過程中,在辦公室局域網進行了功能模塊的測試。測試結果正常后,將程序部署到汽車檢測線的計算機和工控機上。在故障模擬測試階段,網絡狀態監控和故障點邏輯判斷兩大功能均能正常運行。
檢測線出現網絡故障時,可以準確、快速地顯示服務器、報檢計算機和工控機等設備的聯網狀態,網絡狀態監控如圖4 所示,并判斷出可能的故障位置和網絡設備,故障點邏輯判斷如圖5 所示。經過一年多的使用和數據統計,汽車檢測線設備網絡故障的平均排查時間從25 min 降低到5 min,有效提升了故障的處理效率,減少設備的停機時間。

圖4 網絡狀態監控

圖5 故障點邏輯判斷
根據Ethernet 網絡狀態判斷方法,使用Visual Basic 語言對汽車檢測線網絡狀態監控和故障點的邏輯判斷進行設計和實現。一方面,通過軟件算法代替人工逐臺檢查,提高了設備維修效率;另一方面,將維修經驗總結提煉成軟件算法,有利于知識和經驗的傳承。