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