基于CVI的以太網和CAN總線傳輸
引言
以太網(Ethernet)協(xié)議是當今現(xiàn)有局域網采用的最通用的通信協(xié)議標準,使用的是CSMA/CD(載波監(jiān)聽多路訪問/沖突檢測)的訪問控制方法。CAN總線(ControlAreaNetwork,控制器局域)是德國BOSCH公司從80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據交換而開發(fā)的一種串行數(shù)據通信協(xié)議,使用的是CSMA/CA(載波監(jiān)聽多路訪問/沖突避免)的訪問控制方法。二者的主要區(qū)別在于對通信沖突的處理方式不同,從而決定了網絡性能的不同。為實現(xiàn)方便快捷地對百兆/千兆以太網及CAN總線數(shù)據傳輸質量進行測試,并對相關的協(xié)議棧進行解包分析,本文給出了一種能夠直觀、快速地檢測傳輸質量的測試系統(tǒng)設計方法。
1 系統(tǒng)整體設計構成
該系統(tǒng)是一種以太網、CAN總線數(shù)據傳輸質量及協(xié)議的測試分析系統(tǒng),它能夠實時監(jiān)控測試正在運行中的網絡參數(shù)和運行狀態(tài),可監(jiān)控網絡利用率、傳輸速率、幀速、幀大小等,并進行數(shù)據分析、協(xié)議分析和誤碼分析等。由于要求系統(tǒng)具有速度快,可靠性高,實用性強等特點,因此其硬件設備主要為兩套PXI系統(tǒng)和兩套連接PXI系統(tǒng)及控制計算機的PXI控制器。軟件系統(tǒng)則是一套系統(tǒng)測試軟件(Windows操作系統(tǒng)平臺),可以包含所有設計的測試項目。
2 測試原理
本測試系統(tǒng)主要分為以太網測試和CAN總線測試兩部分。但測試原理類似,均有端對端測試和環(huán)回測試兩種測試模式。
端對端測試必須使用兩套測試系統(tǒng)來組成如圖1所示的測試鏈路。測試數(shù)據從測試儀I發(fā)出,經被測鏈路傳輸?shù)綔y試儀Ⅱ上。在測試儀Ⅱ上,用戶手動輸入與測試儀I發(fā)出的測試數(shù)據和相同的參數(shù)設置,測試儀II接收到數(shù)據后,即可進行處理分析。
環(huán)回測試通常使用一臺測試儀來與被測鏈路另一端進行環(huán)回連接。圖2所示是其環(huán)回測試系統(tǒng)原理圖。測試數(shù)據由測試儀產生后,即發(fā)送至被測鏈路。在被測鏈路另一端,則通過環(huán)回連接再次經過被測鏈路返回至測試儀,測試儀接收到后,即可進行自動分析與處理。
3 系統(tǒng)軟件設計
軟件設計是該測試系統(tǒng)設計的核心。軟件功能最能體現(xiàn)系統(tǒng)的特性,其結構和用戶界面設計的好壞直接影響著整個系統(tǒng)的性能指標。本系統(tǒng)采用Lab-Windows/CVI9.0為軟件開發(fā)平臺,CVI是NI公司針對測控領域推出的交互式C語言開發(fā)環(huán)境,具有很強的數(shù)據處理和分析功能,且與NI硬件驅動的整合能力較高。
測試系統(tǒng)分為以太網測試子系統(tǒng)和CAN總線測試子系統(tǒng)兩部分,兩個子系統(tǒng)使用不同的硬件設備和獨立的軟件程序。
3.1 以太網測試軟件設計
以太網報文的組建和解包分析是整個以太網測試子系統(tǒng)軟件設計的重點和關鍵。由于常規(guī)的以太網通訊中,用戶接收到的或要發(fā)送的只是應用數(shù)據,而不是完整的以太網報文(一個完整的以太網報文由幀頭、協(xié)議頭部和應用數(shù)據構成),而且整個通訊過程不受用戶支配,通訊中間若出現(xiàn)錯誤報文會被通訊軟件丟掉。針對這一情況,本系統(tǒng)使用WinPcap技術進行通訊。對于四層網絡結構來說,WinPcap技術可以穿過應用層、傳輸層和網絡層,直接在數(shù)據鏈路層捕獲或發(fā)送原始報文數(shù)據,因而可以控制整個通訊過程,校驗每一幀報文,以確保對以太網鏈路測試的正確、有效。
以太網子系統(tǒng)由以下模塊構成:報文結構定義及形成模塊、測試配置模塊、報文發(fā)送模塊、誤碼插入模塊(人為插入誤碼)、報文捕獲模塊、報文分析和統(tǒng)計模塊、誤碼分析模塊、數(shù)據顯示模塊、數(shù)據存儲與還原模塊和測試報告形成及打印模塊。根據測試模式和測試端的不同,測試系統(tǒng)工作時可以調用不同模塊來實現(xiàn)測試功能。其以太網測試程序結構圖如圖3所示。
在以太網測試的各個模塊中,報文結構定義及形成模塊、報文分析與統(tǒng)計模塊和誤碼分析模塊是核心模塊。報文結構定義與形成的工作就是把應用數(shù)據一層層封裝,添加協(xié)議頭部和幀頭,最終形成一個完整的以太網幀;報文分析的工作流程則相反,它把一個完整的報文層層剝離,剝離幀頭和協(xié)議頭部得到應用數(shù)據;誤碼分析的工作流程是校驗每一層的協(xié)議頭是否正確,并對應用數(shù)據用對比法進行校驗,以判斷這幀數(shù)據是否錯誤,有沒有發(fā)生誤碼。

判斷以太網幀有無發(fā)生誤碼,以及對各協(xié)議頭部和數(shù)據進行校驗所用的校驗和程序如下:
3.2 CAN總線測試軟件設計
CAN總線做為一種現(xiàn)場總線,在同一時刻只能有一個設備發(fā)送數(shù)據,該總線使用一系列顯性電平和陰性電平作為數(shù)據的載體。鑒于這一情況,可以使用CAN總線卡的兩個端口做為發(fā)送端和接收端(在環(huán)回模式時用同一個端口做為發(fā)送端和接收端)在被測鏈路上傳輸約定的測試數(shù)據和幀數(shù),并使用NI5122示波器卡采集、測量CAN總線上的信號,最后把兩種數(shù)據綜合起來分析CAN總線的傳輸質量。CAN總線子系統(tǒng)由以下模塊構成:CAN幀定義與形成、CAN設備獲取、測試配置、CAN幀發(fā)送、CAN幀接收、數(shù)據分析、誤碼統(tǒng)計、數(shù)據顯示、數(shù)據存儲與還原、物理信號采集和測試報告形成與打印等。
CAN總線測試的測試數(shù)據釆用8級偽隨機碼,它具有類似白噪聲的相關特性,故在通訊系統(tǒng)中被廣發(fā)采用。使用線性同余算法計算8級偽隨機碼序列的公式如下:
該公式主要用遞歸方法得到模除后的偽隨機數(shù),從X(0)到X(n),每一項都只依賴于前面一項,一般地,X序列將產生m個不同的數(shù),然后重復。其程序代碼如下:
其中,RANDA.RANDC和RANDM使用的宏定義值分別為113,11和256。
4 結語
本系統(tǒng)是選用PXI系統(tǒng)及PXI總線的模塊化儀器,配合自行開發(fā)的軟件,可以實現(xiàn)對以太網和CAN總線數(shù)據傳輸質量的測試分析。通過實驗證明,該系統(tǒng)配置優(yōu)良,性能滿足技術需求,同時具有可靠性高,實用性強,操作簡單,維護方便等特點。





