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