王樂樂 陳聰
摘要:隨著近年汽車產(chǎn)業(yè)的快速發(fā)展,電子產(chǎn)品廣泛應用于汽車儀表,隨著汽車中電子單元的增加,網(wǎng)絡越來越復雜,ECU在通信時,可能由于其他節(jié)點未上線或出現(xiàn)故障而造成信息丟失,所以需要專門的網(wǎng)絡管理組件對車載網(wǎng)絡進行管理,以達到車載網(wǎng)絡信息傳輸準確性、安全性的目的。
關鍵詞:汽車儀表;網(wǎng)絡管理;一致性測試;系統(tǒng)設計
1 汽車儀表NM協(xié)議一致性測試項目分析
車載網(wǎng)絡中每個ECU節(jié)點有唯一地址編號。OS-EK/VDX直接網(wǎng)絡管理按照ECU地址遞增順序構(gòu)造邏輯環(huán),并采用邏輯環(huán)機制監(jiān)控網(wǎng)絡各ECU節(jié)點正常模式、睡眠模式及錯誤處理模式之間的狀態(tài)切換,實現(xiàn)對網(wǎng)絡節(jié)點的協(xié)同管理。AUTOSAR網(wǎng)絡管理采用分布式直接網(wǎng)絡管理策略,根據(jù)網(wǎng)絡管理協(xié)議數(shù)據(jù)單元(NMPDU)接收情況來監(jiān)控網(wǎng)絡狀態(tài)。OSEK/VDX和AUTOSAR的NMPDU均包含地址域、控制域和數(shù)據(jù)域三個部分。地址域指定通信雙方ECU節(jié)點地址;操作域說明具體報文類型,OSEK/VDX網(wǎng)絡管理報文有Alive、Ring和Limphome3種報文,AUTOSAR網(wǎng)絡管理主要有RepeatMessage和Nor-malOperation兩種報文;數(shù)據(jù)域指定報文附加信息(可選)。NM協(xié)議一致性測試主要分為物理層、網(wǎng)絡層和通信層測試3個部分。物理層測試通過操控某些物理模塊來模擬物理干擾(如CAN干擾或電壓干擾等),測試ECU節(jié)點的干擾恢復能力。網(wǎng)絡層測試主要監(jiān)控ECU節(jié)點網(wǎng)絡狀態(tài)切換,如喚醒、休眠或者邏輯環(huán)建立等。通信層測試主要測試汽車儀表網(wǎng)絡管理報文的周期、類型或其他參數(shù)等。各層常用測試用例及所涉及到的信號類型見表1。
2 NM協(xié)議一致性測試系統(tǒng)設計與實現(xiàn)
2.1 下位機測試儀的硬件設計
下位機測試儀選用STM32F105RCT6作為主控芯片,硬件框架見圖1。其主要功能模塊包括物理層程控電壓模塊、物理層干擾模擬(含電壓干擾和CAN干擾)、CAN通信模塊、顯示報警模塊、定時器實時控制模塊。
程控電壓模塊:選用LM2596-ADJ(簡稱ADJ)芯片輸出程控可調(diào)電壓。ADJ芯片內(nèi)含基準穩(wěn)壓器(1.23V),通過ADJ輸出引腳、地線和主控芯片DAC引腳分別相對于反饋引腳FB接一個電阻R1、R2和R3,電阻阻值根據(jù)需求進行計算和設計。控制數(shù)模轉(zhuǎn)換器的輸出電壓,實現(xiàn)ADJ變換器輸出電壓的調(diào)整。
2.2 基于TSCN腳本的測試用例編寫
以某款汽車儀表物理CAN干擾一致性測試用例為例,介紹基于TSCN的測試用例腳本編寫過程。
2.2.1 測試目的該款汽車儀表ECU節(jié)點(地址:X430)正常通信時,測試CAN干擾后的通信恢復能力。
2.2.2 測試步驟
(1)通過CAN高和CAN低短路產(chǎn)生CAN干擾;(2)延時1s;(3)CAN高和CAN低短路恢復正常,消除干擾;(4)檢測Busoff恢復時間內(nèi)是否接收Limphome報文,如果接受到,測試合格返回通過信號;如果沒接受到,測試不合格返回失敗信號。
2.2.3 預期結(jié)果
(1)總線短路后,若停止收發(fā)報文則說明總線進入Busoff狀態(tài),干擾模擬測試成功,否則失??;(2)干擾消除后,測試儀在Busoff恢復時間(200ms)內(nèi)接收到第一幀Limphome報文,則說明CAN干擾恢復測試符合測試協(xié)議標準,否則測試不合格。
2.3 TSCN腳本驅(qū)動的NM協(xié)議一致性自動測試
下位機測試儀采用解釋執(zhí)行方式順序執(zhí)行。腳本中指令語句的合理存儲是腳本有效執(zhí)行的關鍵。TSCN測試腳本從上至下由若干條指令語句組成,指令語句分為基礎指令和復合指令兩類。測試腳本對應的指令數(shù)據(jù)存儲結(jié)構(gòu)如下:
#includeMaxsizeComm200
//基礎指令數(shù)據(jù)結(jié)構(gòu)
typedefstructbaseCom
{charmainKey[10];charsubKey[10];charparamData[100];structbaseComm*nextComm;};
typedefstruct//命令行數(shù)據(jù)結(jié)構(gòu)
{charcomType[10];charcommCondiiton[50];structbaseCom*condition0pter;structbaseComm*success0pter;structbaseComm*fail0pter;}
commandLine;commandLinecom[MaxsizeComm];
經(jīng)分析不難發(fā)現(xiàn),在執(zhí)行過程中IF或者WHILE等復合指令語句實際上是依據(jù)一定邏輯條件控制多條基礎指令語句組合執(zhí)行。如果將基礎指令語句看作邏輯條件恒為真的特殊復合指令語句,這樣兩類指令語句就可以統(tǒng)一用命令行(commandLine)結(jié)構(gòu)描述。commandLine結(jié)構(gòu)包含5個數(shù)據(jù)子項,前兩項描述指令語句的類型和執(zhí)行條件,后三項分別是基礎指令baseComm鏈表的頭指針域,描述條件判斷、條件成立和不成立時要執(zhí)行的多個基礎測試指令集合。基礎指令語句對應的commandLine結(jié)構(gòu)中,commCondi-tion子項默認為\0,conditionOpter和failOpter指針默認NULL;WHILE復合語句對應的commandLine結(jié)構(gòu)中,failOpter指針默認為NULL。基礎測試指令采用baseComm結(jié)構(gòu)體描述,分別對應VOL、IO、TIMER、CAN和RESULT等基礎指令的主關鍵字、次關鍵字和參數(shù)信息。TSCN腳本中所有指令語句從上至下依次存儲到comm結(jié)構(gòu)順序表中。基于以上指令存儲結(jié)構(gòu),用例腳本解釋執(zhí)行算法如下:
先取出當前指令語句的指令類型,如果是基礎指令,直接執(zhí)行成功指令集,如果不是,判斷是否為IF語句;如果為IF語句,直接執(zhí)行條件指令集,然后根據(jù)結(jié)果對比條件文本串,滿足條件時則執(zhí)行成功指令集,不滿足則執(zhí)行失敗指令集;如果不是IF語句,則為WHILE語句,條件指令集執(zhí)行后,結(jié)果滿足條件時,會執(zhí)行成功指令集,進而跳轉(zhuǎn)到條件指令集繼續(xù)執(zhí)行,如果條件指令集執(zhí)行后結(jié)果不滿足條件,執(zhí)行失敗指令集,而后判斷下一條指令。
3結(jié)語
實驗結(jié)果表明:該系統(tǒng)能有效實現(xiàn)汽車儀表網(wǎng)絡管理協(xié)議在物理層、網(wǎng)絡層和通信層上的一致性自動測試,而且平均測試耗時明顯減少,測試效率提高。
參考文獻:
[1] 吳偉,馬繼周,張志敏.基于AUTOSAR標準的網(wǎng)絡管理協(xié)議的設計[J].汽車實用技術,2012(9):10-13.
(作者單位:長城汽車股份有限公司-哈弗技術中心)
第一作者簡介:王樂樂,男,漢,河北保定,本科,助理工程師,汽車電子電器開發(fā)。