何醫(yī)天
摘 要:為了改善傳統(tǒng)車輛ECU診斷系統(tǒng)開發(fā)方式的缺點,本文使用Vector CANdelaStudio與CANoe,建立ECU診斷功能數(shù)據(jù)庫,在CANoe環(huán)境中加載ODX 檔案,建立虛擬ECU的診斷功能和測試功能。ECU節(jié)點模型的診斷功能自動測試結(jié)果表明:系統(tǒng)可以生成HTML診斷、測試報告,且與ECU規(guī)格文件一致,可以幫助汽車制造商、系統(tǒng)供貨商及車輛維修商,縮短開發(fā)時程,節(jié)省生產(chǎn)成本,提高汽車維護、維修效率。
關(guān)鍵詞:汽車;故障診斷;自動測試;CAN;ECU
1 引言
ECU軟件在現(xiàn)代車輛的車身、動力、底盤與安全系統(tǒng)中的廣泛應(yīng)用,使汽車的故障診斷和測試更加復(fù)雜化。為了改善傳統(tǒng)車輛ECU診斷系統(tǒng)開發(fā)方式的缺點,本文使用Vector CANdelaStudio與CANoe,建立ECU 診斷功能數(shù)據(jù)庫,在CANoe環(huán)境中加載ODX 檔案,建立虛擬ECU的診斷功能,幫助汽車制造商、系統(tǒng)供貨商及車輛維修商,縮短開發(fā)時程,節(jié)省生產(chǎn)成本,提高汽車維護、維修效率。
2 自動測試系統(tǒng)設(shè)計
2.1 自動測試系統(tǒng)架構(gòu)設(shè)計
在完成車輛網(wǎng)絡(luò)診斷功能測試開發(fā)工具的應(yīng)用規(guī)劃后,先規(guī)劃出“ECU診斷伺服功能自動測試機”開發(fā)的輸入格式,并建立輸入工具、設(shè)定或編輯軟件功能,以及輸出報告檔案的整體架構(gòu),以利開發(fā)人員進行ECU 診斷服務(wù)測試軟件的研發(fā)。首先,根據(jù)OEM 或系統(tǒng)供貨商提供的ECU 診斷服務(wù)功能規(guī)格文件(ECU diagnostic requirements spec.,簡稱RS),通過CANdelaStudio 產(chǎn)生ODX 與ODX-C 檔案,并搭配ECU 診斷測試規(guī)格文件(ECU diagnostic services testing spec.,簡稱TS),在CANoe開發(fā)工具環(huán)境內(nèi),建構(gòu)虛擬ECU 與診斷測試器的診斷服務(wù)功能以及診斷服務(wù)自動測試功能。在CANoe整合開發(fā)環(huán)境中,通過仿真實際網(wǎng)絡(luò)通訊的方式,執(zhí)行ECU診斷伺服自動測試軟件;依序完成所有測試項目后,產(chǎn)生ECU診斷功能測試報告。本文采取的車輛網(wǎng)絡(luò)ECU 診斷功能測試架構(gòu)詳如圖1所示,ECU診斷伺服功能自動測試機開發(fā)的規(guī)格需求則整理如表1所示。
2.2 功能模塊設(shè)計
2.2.1 使用CANdelaStudio編輯診斷描述文件
CANdelaStudio(圖2)為Vector(車用網(wǎng)絡(luò)軟件開發(fā)公司)的產(chǎn)品,開發(fā)人員可以根據(jù)OEM 提供診斷需求規(guī)格(RS)文件,建立ECU 診斷功能,并產(chǎn)生ODX 2.0.1 格式的診斷描述檔案,提供Vector CANoe使用,以進行ECU診斷功能及診斷測試器的模擬測試。
2.2.2 建立ECU診斷功能文件
首先,在工作窗口中的主選單中,選擇File選單中的New 選項,根據(jù)OEM 提供ECU診斷功能需求規(guī)格,選擇CANdelaStudio內(nèi)建的UDSonCAN-Example 或KWPonCAN-Example 的診斷文件樣板(圖3),作為建立符合OEM 規(guī)格的ECU診斷功能描述文件的基本架構(gòu)。
(1)ECU診斷功能信息
ECU信息(ECU Information)章節(jié)中包括:
(1)ECU信息文字敘述編輯頁面;
(2)選擇ECU支持接口頁面與診斷通訊接口參數(shù)輸入頁面等三種。依照OEM 提供的ECU診斷功能需求文件,首先在ECU信息頁面中,輸入該ECU所使用的診斷通訊協(xié)議的文字敘述;并在ECU支持接口頁面中,選擇Diagnostic CAN,作為ECU的通訊接口;最后,在診斷通訊接口參數(shù)頁面,輸入診斷通訊參數(shù)數(shù)據(jù)。
(2)建立診斷服務(wù)類型
在共享診斷功能中,按照OEM提供文件,輸入共享支持診斷類型的文字敘述。診斷服務(wù)類型主要用來定義可執(zhí)行的各種診斷服務(wù)功能,CANdelaStudio內(nèi)建UDSonCAN 診斷文件樣板,含有ECU支持診斷服務(wù)類型。用戶可依照OEM或系統(tǒng)供貨商所提供ECU 診斷功能規(guī)格文件,勾選診斷服類型頁面的診斷服務(wù)類型,可將共享診斷版本支持的診斷服務(wù)加入診斷功能描述文件中。
(3)Sessions
診斷通訊聯(lián)機起始頁面(Session)中,可在描述區(qū)的空白處點擊鼠標(biāo)右鍵,選擇New Session…指令,使用Session Wizard 來對新的診斷通訊聯(lián)機進行相關(guān)設(shè)定。
(4)Session Wizard
設(shè)定對話框的設(shè)置步驟中,先輸入診斷通訊聯(lián)機的名稱,以及加入要求信息所傳輸?shù)臄?shù)據(jù)對象。接著在診斷服務(wù)清單里,依照OEM 的診斷規(guī)格,勾選ECU 在此診斷通訊所支持的診斷服務(wù)。
2.2.3 ODX格式檔案輸出模塊
當(dāng)輸入數(shù)據(jù)、開啟或儲存文件時,CANdelaStudio 會執(zhí)行數(shù)據(jù)一致性檢查,它檢查診斷服務(wù)數(shù)據(jù)對象與診斷文件樣板所指定的需求是否符合,例如診斷文件樣板中的診斷數(shù)據(jù),最小長度定義為8位,則數(shù)據(jù)訊框至少含有一個8位的數(shù)據(jù)對象。輸出ODX 檔案前,需在主選單上選擇Extra”選單中的Check document consistency”,檢驗診斷文件中與診斷文件樣板的數(shù)據(jù)格式、位置的一致性。
使用者可以在主選單Extra”的Option”項目下,ODX 檔案輸出分頁標(biāo)簽中,設(shè)定ODX 檔案內(nèi)容的輸出項目或附加檔案;在下一個研發(fā)階段使用CANoe時,加載*.odx 與*.odx-c 兩種檔案,以分析與顯示ODX 檔案。因此,我們必須在ODX 檔案輸出設(shè)定頁面中,勾選Export COMPARAM-SPEC”選項,輸出可檢視測試器節(jié)點產(chǎn)生的測試報告,對測試程序修正,并重新進行測試。完成執(zhí)行診斷數(shù)據(jù)一致性檢查,以及設(shè)定ODX診斷通訊參數(shù)檔案輸出后,點選主選單File”的Export 選項,選擇Open Diagnostic Exchange? (ODX)”后,出現(xiàn)儲存檔案對話框選擇檔案儲存路徑與輸入文件名,再選擇檔案版本為ODX 2.0.1,產(chǎn)生ODX檔案。
3 系統(tǒng)測試與結(jié)果分析
3.1 使用CANoe建立測試環(huán)境
CANoe為車輛診斷測試開發(fā)工具,它可以加載CANdelaStudio所輸出ECU的ODX 檔案;并通過CANoe診斷測試功能,顯示ODX 檔案中所有的診斷服務(wù),并分析信息內(nèi)容的正確性。在CANoe 環(huán)境中,亦可以建構(gòu)虛擬CAN-bus網(wǎng)絡(luò)ECU 節(jié)點的診斷測試開發(fā)環(huán)境;通過讀取ECU的ODX與ODX-C檔案,編輯虛擬ECU節(jié)點的診斷通訊功能,并使用CANoe提供的Diagnostic Console 與Fault Memory window 等診斷功能測試工具,來分析與顯示ODX 檔案中的診斷服務(wù)信息內(nèi)容。
CANoe整合測試環(huán)境中,用戶可通過車輛網(wǎng)絡(luò)測試器節(jié)點,開發(fā)診斷伺服自動測試環(huán)境。在測試器節(jié)點中,通過CAPL browser 針對各種診斷服務(wù)類型所制定的測試項目,配合CAPL內(nèi)建的診斷函式以及測試函式,編輯診斷服務(wù)測試項目(Test case)函式。在CANoe虛擬環(huán)境下測試完成后,使用者可檢視測試器節(jié)點產(chǎn)生的測試報告,對測試程序修正,并重新進行測試。
3.2 建立CAN-ECU節(jié)點
首先,在CANoe 虛擬網(wǎng)絡(luò)環(huán)境下,加入網(wǎng)絡(luò)系統(tǒng)數(shù)據(jù)文件(*.dbc),讓ECU 仿真節(jié)點傳輸數(shù)據(jù)。使用CANoe 附屬網(wǎng)絡(luò)數(shù)據(jù)庫工具軟件CANdb++,建立網(wǎng)絡(luò)數(shù)據(jù)庫,在左方網(wǎng)絡(luò)系統(tǒng)樹狀目錄下,Network node項目上,點擊鼠標(biāo)右鍵,選擇New…新增ECU節(jié)點數(shù)據(jù)(圖5)。出現(xiàn)ECU節(jié)點設(shè)定對話框后,在Definition分頁中輸入ECU名稱。
在左方窗口中點擊右鍵,并在選單中選擇Insert network node”,即可在CAN 網(wǎng)絡(luò)系統(tǒng)中新增虛擬ECU節(jié)點。
(1)加入ODX 檔案
在CANoe 主工具欄中的Configuration 選單中,選擇Diagnostic/ISO TP configuration…”,開啟設(shè)定對話框,能夠為虛擬ECU 節(jié)點加入診斷功能描述文件檔案(*.cdd 或*.odx)。點選Add”按鈕,選擇Add multi file ODX diagnostic description(XML)…”選項,加入ECU的ODX與ODX-C檔案。
用戶以右鍵點擊虛擬ECU節(jié)點,點選Configuration”選項,出現(xiàn)Node Configuration”節(jié)點設(shè)定對話框。在title”字段,輸入虛擬ECU 節(jié)點名稱;CANdb Name”必須選擇網(wǎng)絡(luò)數(shù)據(jù)庫檔案中建立的節(jié)點名稱,若設(shè)為<
(2)建立CAN-ECU仿真診斷功能
使用者必須配合使用在ODX 或CDD 診斷描述檔案中定義的診斷對象,才能使CAPL 的診斷函式命令,可以存取診斷服務(wù)與數(shù)據(jù)。在診斷服務(wù)回應(yīng)函式的程序代碼編輯區(qū)中,點擊右鍵,并選擇Diagnostic objects from CANdela…”選項;然后,在Selection of diagnostic objects”對話框里,用戶可選擇診斷服務(wù)對象,存取診斷服務(wù)。當(dāng)存取診斷服務(wù)參數(shù)時,點選右鍵選擇其中Diagnostic parameters from CANdela …”選項。在Selection of diagnostic objects parameter”對話框中,箭頭向右為傳送端診斷服務(wù)信息的參數(shù),箭頭向左為接收端響應(yīng)診斷服務(wù)中所包含的參數(shù),使用者可在診斷響應(yīng)函式加入診斷參數(shù)、讀取或修改參數(shù)內(nèi)容。
(3)ECU節(jié)點模型診斷功能的驗證
CANoe診斷功能模塊,提供發(fā)展與測試ECU診斷功能的輔助軟件工具;使用Diagnostic Console 與Fault Memory window,可以檢驗虛擬ECU 節(jié)點,能否正確響應(yīng)與ODX 檔案內(nèi)容相符的診斷信息與故障碼。
診斷中控臺是用來描述ECU 診斷功能的ODX或CDD檔案內(nèi)容,使用者可選擇診斷服務(wù),以對ECU發(fā)出要求信息,以及設(shè)定診斷服務(wù)中的參數(shù)與顯示回傳信息內(nèi)容;并對虛擬ECU節(jié)點,執(zhí)行ODX 檔案中的所有診斷服務(wù),并分析診斷中控臺所顯示的回傳信息內(nèi)容,是否與ECU 診斷規(guī)格文件內(nèi)容符合。
故障碼檢窗口能直接讀取ECU內(nèi)存的故障碼(DTC),以及刪除ECU故障碼與不斷更新讀取故障碼數(shù)據(jù)。使用故障碼檢窗口,可以對虛擬ECU 節(jié)點分別傳送讀取與消除故障碼信息,測試已加載ODX 檔案的虛擬ECU 節(jié)點故障碼功能的正確性。
3.3 加入測試器模塊
(1)建立測試項目、群組、流程控制
用戶可在Simulation Setup 窗口中的虛擬總線上,點擊鼠標(biāo)右鍵,選擇“Insert test module”,新增測試器節(jié)點模塊,以CAPL 語法來編輯測試程序。測試器節(jié)點上方分別有鉛筆、編譯、播放等圖形,可用來編輯測試器節(jié)點程序、組譯程序代碼,以及按下播放鈕,開始執(zhí)行測試程序。
(2)測試器節(jié)點設(shè)定對話框
在測試器節(jié)點上,點擊鼠標(biāo)右鍵,選擇“Configuration”,出現(xiàn)“Testnode Configuration”節(jié)點設(shè)定對話框。其中有“Common”、“Report”、“Report Filter”、“Modules”、“Buses”等分頁,可供使用者設(shè)定測試器節(jié)點的外部功能。
使用者可在Modules分頁下方,點擊“Add”,以為測試器節(jié)點新增軟件模塊。測試器節(jié)點必須透過傳輸層,將數(shù)據(jù)長度較長的診斷服務(wù)信息,分批傳輸至總線上。在此加入傳輸層模塊(OSEK_TP.dll),以便使用者通過CAPL browser,加入傳輸層函式。
(3)CAPL 診斷測試程序編輯
測試器節(jié)點程序編輯,主要編輯“TestControl”目錄下的MainTest( )與Testcase( ),以及在“Callback function”目錄下,新增OSEK_TP 傳輸層函式等三部分。使用者也可依不同需求,在“Function”目錄下,新增自定義功能的函式;或是在“Timer”目錄下,新增定時器等。
用戶可在測試項目目錄中,點擊鼠標(biāo)右鍵選擇“New”,新增測試項目。在新增的測試項目函式中,用戶可透過點擊鼠標(biāo),在右鍵選單中,選擇“Diagnostic object from CANdela…”或“Diagnostic parameter from CANdela…”,使用ODX 檔案數(shù)據(jù)庫里的診斷服務(wù)以及診斷服務(wù)參數(shù),搭配測試器節(jié)點CAPL 診斷函式與測試器節(jié)點常用CAPL測試函數(shù)式,來編輯各種測試程序。
3.4 虛擬節(jié)點模型自動測試與結(jié)果
ECU節(jié)點模型與測試器模塊建構(gòu)完成后,先在CANoe 的虛擬網(wǎng)絡(luò)系統(tǒng)環(huán)境中,進行CAN-ECU 的診斷功能自動測試,逐一檢視各個診斷服務(wù)的測試報告,并修改測試程序,使診斷功能自動測試環(huán)境的功能更完整。在CANoe的標(biāo)準任務(wù)欄上,將測試環(huán)境的工作模式改為“Simulated bus”,再按下閃電圖形的“Start”鈕,啟動測試環(huán)境。測試器模塊窗口右下方,按下圖形為播放鈕的“Start”,進行ECU的診斷服務(wù)自動測試,測試界面和如圖7所示。
本研究分別針對(1)General requirement test;(2)Read DTC Information;(3)Clear Diagnostic Information;(4)Network Layer Timeout; (5)Test service;(6)Tester Present; (7)Read Data By Identifier 等進行測試,部分測試結(jié)果及HTML報告如圖8所示。
4 結(jié)論
本研究使用Vector車輛網(wǎng)絡(luò)開發(fā)工具,進行ECU診斷功能自動測試環(huán)境的開發(fā)。先通過CANdelaStudio編輯ECU診斷功能描述文件,并產(chǎn)生ODX檔案;接著,在CANoe虛擬網(wǎng)絡(luò)系統(tǒng)環(huán)境,加載ODX檔案,建立ECU節(jié)點模型的診斷通訊功能,再以測試器模塊執(zhí)行自動測試,所有項目的測試步驟、過程與結(jié)果,也都記錄在測試模塊所產(chǎn)生HTML測試報告中;診斷功能仿真測試結(jié)果與ECU規(guī)格文件是一致的。本研究使用的方法與傳統(tǒng)診斷服務(wù)功能測試方法的差別,主要在于ECU診斷功能的規(guī)劃、診斷功能節(jié)點模型建立、模型驗證與測試等,皆符合V-model開發(fā)程序,并以O(shè)DX格式檔案,來銜接各個開發(fā)階段所需的診斷數(shù)據(jù)。此“CAN-ECU診斷服務(wù)功能自動測試”方法,可以協(xié)助汽車制造廠與ECU 供貨商,在ECU診斷服務(wù)功能研發(fā)時期,通過通用的ODX 格式檔案,可在異地分別進行V-model開發(fā)程序各階段工作,并加入仿真節(jié)點測試功能,可盡早發(fā)現(xiàn)錯誤與缺陷,并可節(jié)省ECU開發(fā)成本及提升開發(fā)效率。
課題:基于CAN的汽車自動化測試系統(tǒng)研究。
參考文獻:
[1]徐赟,邵暉.基于CAN總線的汽車測試解決方案[J].世界電子元器件,2005,(7):64-66.
[2]Karl K,Alexei C,Stephen C,et al. Experimental Security Analysis of a Modern Automobile[J]. IEEE Symposium on Security and Privacy,2010,41(3):447-462.
[3]徐健,鄧亮,王金磊.基于CAN總線的多路LED智能前照燈控制系統(tǒng)的設(shè)計和實現(xiàn)[J].汽車零部件,2019,第8期.
[4]楊鵬翔,楊源飛,張雷.高壓共軌ECU診斷系統(tǒng)中電磁閥診斷電路設(shè)計[J].汽車電器,2016,(4):21-23.
[5]于赫.網(wǎng)聯(lián)汽車信息安全問題及CAN總線異常檢測技術(shù)研究[D].長春:吉林大學(xué), 2016.
[6]王林,殷岳,張林等.診斷系統(tǒng)在ECU開發(fā)中的應(yīng)用[J]. 汽車電器,2010,(7):7-9,12.