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