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