周 琪(東華大學(xué)旭日學(xué)院,上海 201620)
基于Vector工具鏈的CAN總線自動(dòng)化測(cè)試
周 琪
(東華大學(xué)旭日學(xué)院,上海 201620)
CLC NO.: U467.3 Document Code: A Article ID: 1671-7988(2015)10-110-04
隨著機(jī)載電子系統(tǒng)功能和復(fù)雜性的提高,大量的數(shù)據(jù)信息需要傳輸,并得到及時(shí)的處理,以往所采用的點(diǎn)對(duì)點(diǎn)式的通信方式已不能滿足系統(tǒng)實(shí)時(shí)性的要求,同時(shí)也導(dǎo)致了布線的復(fù)雜性,增加了飛機(jī)的重量??偩€技術(shù)的出現(xiàn)更好地解決了節(jié)點(diǎn)越多,傳輸效率越低的問(wèn)題。它不僅便于合理配置系統(tǒng)資源,優(yōu)化系統(tǒng)設(shè)計(jì),提供系統(tǒng)備份冗余通道,而且也使得飛機(jī)上的布線簡(jiǎn)單,減輕了飛機(jī)的重量。
CAN總線是20世紀(jì)80年代初德國(guó)Bosch公司為解決現(xiàn)代汽車中眾多控制與測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種串行通信協(xié)議。從20世紀(jì)90年代到現(xiàn)在,CAN總線技術(shù)高性能和可靠性得到認(rèn)可后,應(yīng)用范圍也逐漸擴(kuò)展到控制、機(jī)械、紡織等行業(yè)。隨著CAN總線相關(guān)技術(shù)的日趨成熟,以及車載平臺(tái)與機(jī)載平臺(tái)在某些方面的相似性,其在航空領(lǐng)域的應(yīng)用逐漸得到重視,近年來(lái)國(guó)外的主要飛機(jī)制造商已經(jīng)開(kāi)始把CAN總線應(yīng)用到飛機(jī)上,使飛機(jī)產(chǎn)品在性能改進(jìn)的同時(shí)具有更高的經(jīng)濟(jì)性。
本文詳細(xì)采用Vector工具鏈中的設(shè)備基于CAPL語(yǔ)言開(kāi)發(fā)了一套CAN總線自動(dòng)化測(cè)試系統(tǒng),幫助開(kāi)發(fā)人員和測(cè)試人員盡可能準(zhǔn)確地定位故障,提出優(yōu)化改進(jìn)的方法和措施,從而提高開(kāi)發(fā)效率。
CAN總線是一種開(kāi)放式多主機(jī)線性結(jié)構(gòu)的總線,采用非破壞性的載波偵聽(tīng)多路訪問(wèn)/沖突檢測(cè)(CSMA/CD)的總線仲裁方式,避免多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送消息而造成總線沖突,保證優(yōu)先級(jí)高的報(bào)文能夠優(yōu)先發(fā)送。Vector工具鏈提供了完善的錯(cuò)誤模擬、檢測(cè)與錯(cuò)誤處理機(jī)制,包括錯(cuò)誤報(bào)文自動(dòng)重發(fā)、錯(cuò)誤狀態(tài)判斷、臨時(shí)錯(cuò)誤自動(dòng)恢復(fù)、永久錯(cuò)誤自動(dòng)關(guān)閉等措施,具有可靠性高、實(shí)時(shí)性好、成本合理等優(yōu)點(diǎn),逐漸被廣泛應(yīng)用于汽車、航空等領(lǐng)域中。CAN總線測(cè)試內(nèi)容可以按照通訊層次劃分為物理層測(cè)試、數(shù)據(jù)鏈路層測(cè)試和應(yīng)用層測(cè)試等內(nèi)容。本文主要就數(shù)據(jù)鏈路層和應(yīng)用層進(jìn)行了CAN總線自動(dòng)化測(cè)試系統(tǒng)構(gòu)建。
1.1 數(shù)據(jù)鏈路層測(cè)試
數(shù)據(jù)鏈路層測(cè)試內(nèi)容則包括了采樣點(diǎn)測(cè)試、錯(cuò)誤檢測(cè)與標(biāo)定測(cè)試等內(nèi)容,該測(cè)試主要是為了驗(yàn)證各個(gè)節(jié)點(diǎn)的通訊參數(shù)的一致性來(lái)保證所組成的網(wǎng)絡(luò)能夠正常有效的工作。通過(guò)對(duì)CAN總線數(shù)據(jù)報(bào)文進(jìn)行干擾來(lái)測(cè)試CAN系統(tǒng)在信號(hào)干擾和失效的情況下能否穩(wěn)定工作。
1.2 應(yīng)用層測(cè)試
應(yīng)用層測(cè)試則包括了應(yīng)用層協(xié)議的測(cè)試、網(wǎng)絡(luò)管理功能的測(cè)試以及故障診斷測(cè)試等方面。其包括的內(nèi)容:接收數(shù)據(jù)一致性測(cè)試、通訊周期精度測(cè)試、節(jié)點(diǎn)休眠喚醒功能測(cè)試、網(wǎng)絡(luò)管理功能測(cè)試、網(wǎng)關(guān)測(cè)試、錯(cuò)誤幀頻率測(cè)試、電壓影響測(cè)試、總線物理故障測(cè)試、節(jié)點(diǎn)故障自恢復(fù)能力測(cè)試、通訊失敗的故障診斷功能測(cè)試等內(nèi)容。根據(jù)CAN總線使用背景的不同,應(yīng)用層測(cè)試的內(nèi)容也存在較大差異,需要根據(jù)項(xiàng)目的設(shè)計(jì)需求以及設(shè)計(jì)文檔仔細(xì)制定應(yīng)用層測(cè)試的內(nèi)容。測(cè)試用例示例如下表所示。
表1
測(cè)試平臺(tái)的硬件構(gòu)成以德國(guó)Vector公司的總線測(cè)試工具為核心,主要包括CAN總線仿真軟件CANoe、CAN總線示波器CANscope、CAN總線干擾儀CANStress、穩(wěn)壓電源等工具設(shè)備。CAN總線測(cè)試平臺(tái)硬件框架圖如圖1所示。
測(cè)試程序的開(kāi)發(fā)以自動(dòng)化測(cè)試為目標(biāo),主要包括測(cè)試程序腳本和人機(jī)交互接口(HMI)兩部分。程序開(kāi)發(fā)工具主要基于CAN網(wǎng)絡(luò)測(cè)試軟件CANoe。該軟件集成了測(cè)試編程語(yǔ)言CAPL(CAN access programminglanguage)和人機(jī)交互界面設(shè)計(jì)Panel Editor等多項(xiàng)工具的集成化CAN總線測(cè)試工具。CAPL是一種和c語(yǔ)言類似的編程語(yǔ)言,用它可以對(duì)每一個(gè)虛擬的控制系統(tǒng)進(jìn)行編程。CAPL語(yǔ)言程序是基于事件觸發(fā)的程序,可由總線事件、鍵盤(pán)事件或時(shí)間事件實(shí)現(xiàn)觸發(fā)功能。同時(shí),在CANoe中集成了大量可以由CAPL語(yǔ)言直接調(diào)用的用于控制CAN網(wǎng)絡(luò)的系統(tǒng)函數(shù),為整個(gè)測(cè)試功能的實(shí)現(xiàn)提供了極大的便捷性。本測(cè)試系統(tǒng)的測(cè)試程序腳本,主要通過(guò)CAPL語(yǔ)言編程實(shí)現(xiàn)。
3.1 測(cè)試面板設(shè)計(jì)
人機(jī)交互界面設(shè)計(jì)工具Panel Editor集成了諸如開(kāi)關(guān)、車窗、儀表盤(pán)、點(diǎn)火開(kāi)關(guān)、門鎖和按鈕等大量的圖形控件,它以環(huán)境變量為媒介,將圖形控件與對(duì)應(yīng)的信號(hào)及變量相鏈接,實(shí)現(xiàn)了形象化的圖形界面。圖2描述的是測(cè)試程序控制界面。測(cè)試程序的運(yùn)行集成于CANoe軟件,它運(yùn)行于PC機(jī),通過(guò)CAN總線通信模塊CANcaseXL與CAN總線實(shí)現(xiàn)物理通信。
3.2 建立數(shù)據(jù)庫(kù)
CANdb是集成在CANoe中的數(shù)據(jù)庫(kù)編輯軟件,由它創(chuàng)建的CAN網(wǎng)絡(luò)庫(kù)文件又稱為DBC文件。在創(chuàng)建DBC文件時(shí),需要將網(wǎng)絡(luò)應(yīng)用層所定義的參數(shù)按照從高到低的層次依次輸入數(shù)據(jù)庫(kù)中,即從創(chuàng)建網(wǎng)絡(luò)節(jié)點(diǎn)開(kāi)始,根據(jù)網(wǎng)絡(luò)應(yīng)用層定義的節(jié)點(diǎn)信息創(chuàng)建各節(jié)點(diǎn),再在各個(gè)節(jié)點(diǎn)下創(chuàng)建屬于該節(jié)點(diǎn)的報(bào)文,同時(shí)明確該節(jié)點(diǎn)需要接收的報(bào)文和信號(hào);最后在每條報(bào)文下創(chuàng)建屬于該報(bào)文的信號(hào)內(nèi)容。編碼格式和換算公式——根據(jù)換算公式,可將實(shí)際的物理值信號(hào)換算成適于計(jì)算機(jī)辨認(rèn)和發(fā)送的十六進(jìn)制值信號(hào)值,便于網(wǎng)絡(luò)間的傳輸。
另外,還需定義與各節(jié)點(diǎn)相關(guān)的環(huán)境變量,將其作為該節(jié)點(diǎn)的信號(hào)輸入設(shè)備或信號(hào)輸出設(shè)備。信號(hào)輸入設(shè)備例如傳感器、開(kāi)關(guān)、按鈕等,信號(hào)輸出設(shè)備例如執(zhí)行器、燈光、顯示屏等。
數(shù)據(jù)庫(kù)建完后將其導(dǎo)入到CANoe軟件中,實(shí)現(xiàn)CANoe網(wǎng)絡(luò)架構(gòu)的搭建。
3.3 編寫(xiě)CAPL語(yǔ)言程序
按照測(cè)試用例,結(jié)合操作界面,我們利用CAPL語(yǔ)言編制了數(shù)據(jù)鏈路層、應(yīng)用層協(xié)議以及總線物理故障的自動(dòng)化測(cè)試程序。
3.3.1 數(shù)據(jù)鏈路層測(cè)試
數(shù)據(jù)鏈路層以采樣點(diǎn)測(cè)試為例,采樣點(diǎn)是讀總線電平并解釋各位值的一個(gè)時(shí)間點(diǎn),是發(fā)送接收消息的時(shí)間基準(zhǔn)。在實(shí)際的系統(tǒng)設(shè)計(jì)中,無(wú)論發(fā)送節(jié)點(diǎn)還是接收節(jié)點(diǎn)均從位時(shí)間的同步段開(kāi)始的。由于發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)之間存在網(wǎng)絡(luò)傳輸延遲以及物理接口延遲,發(fā)送節(jié)點(diǎn)發(fā)送后,接收節(jié)點(diǎn)延遲一段時(shí)間才能接收到,因此,發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)對(duì)應(yīng)同一位的同步段起始時(shí)刻就有一定的時(shí)延,同時(shí)振蕩器時(shí)鐘頻率、總線波特率以及總線的最大傳輸距離等因素也會(huì)使得采樣點(diǎn)產(chǎn)生一定的漂移。因此對(duì)采樣點(diǎn)準(zhǔn)確性的測(cè)試對(duì) CAN 通信總線尤為重要,采樣點(diǎn)的測(cè)試?yán)倘缦拢?/p>
testcase CheckSamplePoint()
{
int StartFlag=-1;
//設(shè)定報(bào)文ID
CANstressSetTriggerId (600);
//設(shè)定干擾模式和次數(shù)
CANstressSetLimitedDisturbanceNumber(1,3,1);
CANstressSetDisturbanceSequence("uuuuuuuuuuu111uu", 1);
ErrorCountFlag=0;
//開(kāi)啟例程
StartFlag=CANstressStart();
if(StartFlag==0)
{
StartFlag=-1;
SetTimer(CANoeSendMsg,100);
CANstressWaitForFinished(5000);
CancelTimer(CANoeSendMsg);
CANstressStop();
}
else {TestStepFail("CANstress does't start");
return;}
if(ErrorCountFlag>=2)
{
ErrorCountFlag=0;
TestStepPass();
testreportaddwindowcapture("Trace","","Sample Point");
}
else
{
CANstressSetLimitedDisturbanceNumber(1,3,1);
CANstressSetDisturbanceSequence("uuuuuuuuuuu000uu", 1);
StartFlag=CANstressStart();
if(StartFlag==0)
{
StartFlag=-1;
SetTimer(CANoeSendMsg,100);
CANstressWaitForFinished(5000);
CancelTimer(CANoeSendMsg);
CANstressStop();
}
else {TestStepFail("CANstress does't start");
return;}
if(ErrorCountFlag>=2)
{
ErrorCountFlag=0;
TestStepPass();
testreportaddwindowcapture("Trace","","Sample Point");
}
else TestStepFail("SUT does't send error frame");
}
TestWaitForTimeOut(1000);
}
3.3.2 應(yīng)用層協(xié)議測(cè)試
在現(xiàn)代航空電子系統(tǒng)中電子控制單元不斷增加的情況下,采用 CAN 總線方式的多路傳輸可以有效降低布線的復(fù)雜性和提高系統(tǒng)的可靠性。但由于軟件抖動(dòng)、發(fā)送延遲等影響,要求對(duì)信號(hào)的傳輸周期精確度滿足一定的周期容差。
采用CAPL中ChkStart_NodeMsgsRelCycleTimeViolation、ChkStart_InconsistentTxDLC、ChkStart_Undefined MessageReceived、ChkStart_MsgSignalValueRangeViolation等語(yǔ)句分別進(jìn)行報(bào)文周期、長(zhǎng)度、有效性及信號(hào)有效性的測(cè)試。由于篇幅有限,不做一一介紹。
3.3.3 總線物理故障測(cè)試
由于飛機(jī)工作環(huán)境比較惡劣,溫度、空氣濕度以及振動(dòng)對(duì)飛機(jī)電子設(shè)備的工作可靠性有著極大的影響,對(duì)電子設(shè)備的應(yīng)用產(chǎn)生了較大的電磁干擾,況且飛機(jī)在飛行過(guò)程中也存在很多的不穩(wěn)定因素。通過(guò)CANstress測(cè)試面板對(duì)物理層進(jìn)行故障管理測(cè)試來(lái)檢查DUT故障發(fā)生過(guò)程中CAN總線通信狀態(tài),并檢查該故障修復(fù)后DUT能否恢復(fù)CAN總線通信行為來(lái)保證CAN通信總線對(duì)干擾源的容錯(cuò)能力及抗干擾能力,確保DUT通信安全可靠。主要對(duì)以下幾個(gè)方面進(jìn)行總線物理故障測(cè)試,如表2所示。
表2
通過(guò)圖3的CANstress測(cè)試面板對(duì)物理層進(jìn)行故障配置并保存,在CAPL中使用CANstressOpen語(yǔ)句打開(kāi)配置好的CANstress文件,通過(guò)CANstressSetContinuousDisturbance UntilStop設(shè)置干擾模式,檢查DUT故障發(fā)生過(guò)程中CAN總線通信狀態(tài),并檢查該故障修復(fù)后DUT能否恢復(fù)CAN總線通信行為來(lái)保證CAN通信總線對(duì)干擾源的容錯(cuò)能力及抗干擾能力,確保飛機(jī)安全可靠的行駛。
本文通過(guò)Vector工具鏈完成了CAN總線自動(dòng)化測(cè)試系統(tǒng)的程序開(kāi)發(fā),在飛機(jī)CAN網(wǎng)絡(luò)的初始設(shè)計(jì)階段,可以使用該系統(tǒng)進(jìn)行測(cè)試。給CAN總線網(wǎng)絡(luò)設(shè)計(jì)帶來(lái)極大的方便,能夠快速定位故障源來(lái)保證其安全性和可靠性,既能減少成本,又能避免設(shè)計(jì)的盲目性。
[1] 張軍.基于CANoe軟件的電動(dòng)汽車CAN總線測(cè)試系統(tǒng)的研究[J].傳動(dòng)系統(tǒng),2012(09).
[2] 于新瑞.汽車CAN總線測(cè)試平臺(tái)的構(gòu)建與應(yīng)用 [J].機(jī)電一體化,2013(08).
[3] 彭承榮,覃華強(qiáng),彭?xiàng)?基于Vector工具鏈的汽車CAN總線測(cè)試 [J].現(xiàn)代制造技術(shù)與裝備,2014(04).
[4] 牛玉榮,田勇,梁赟.CAN總線測(cè)試規(guī)范及測(cè)試技術(shù)研究[J].第十屆河南省汽車工程技術(shù)研討會(huì).
[5] 王博.車載舒適系統(tǒng)CAN總線網(wǎng)絡(luò)仿真[C].吉林大學(xué)論文集, 2013.
使用維修
摘 要:CAN總線作為實(shí)現(xiàn)ECU節(jié)點(diǎn)間數(shù)據(jù)交互的主體,由于其總線長(zhǎng)度、總線負(fù)載、終端電阻各不相同,可能導(dǎo)致無(wú)法針對(duì)實(shí)際工況進(jìn)行優(yōu)化。為了提高數(shù)據(jù)通信的可靠性,通過(guò)Vector工具鏈開(kāi)發(fā)了一套自動(dòng)化程度高、可靠性高、通用性強(qiáng)、開(kāi)放性好的自動(dòng)化測(cè)試系統(tǒng),幫助開(kāi)發(fā)人員和測(cè)試人員盡可能準(zhǔn)確地定位故障,提出優(yōu)化改進(jìn)的方法和措施,從而提高開(kāi)發(fā)效率。
關(guān)鍵詞:CAN總線;自動(dòng)化測(cè)試;CAPL;Vector
10.16638/j.cnki.1671-7988.2015.10.040
CAN bus automatic test based on Vector tools
Zhou Qi
(Donghua university institute of the rising sun, Shanghai 201620 )
Abstract:As the main body of the data interaction between ECU nodes, CAN bus can be used to optimize the actual conditions due to the different bus length, bus load and terminal resistance. In order to improve the reliability of data communication, Vector tools has developed an automatic test system with high degree of automation, high reliability, high reliability, and good opening. It helps developers and testers as far as possible to accurately locate faults, put forward the optimization method and measures for improvement, so as to improve the development efficiency.
Keywords:CAN bus; automatic test; CAPL; Vector
作者簡(jiǎn)介:周琪,工程碩士,就讀于東華大學(xué)旭日學(xué)院工業(yè)工程專業(yè),現(xiàn)主要從事精益制造管理方面的研究。
中圖分類號(hào):U467.3
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1671-7988(2015)10-110-04