何醫(yī)天
1.上海交通大學(xué)自動化學(xué)院 上海市 200030 2.采埃孚(中國)投資有限公司 上海市 201615
ECU軟件在現(xiàn)代車輛的車身、動力、底盤與安全系統(tǒng)中的廣泛應(yīng)用,使汽車的故障診斷和測試更加復(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ù)、維修效率。
在完成車輛網(wǎng)絡(luò)診斷功能測試開發(fā)工具的應(yīng)用規(guī)劃后,先規(guī)劃出“ECU診斷伺服功能自動測試機(jī)”開發(fā)的輸入格式,并建立輸入工具、設(shè)定或編輯軟件功能,以及輸出報(bào)告檔案的整體架構(gòu),以利開發(fā)人員進(jìn)行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)境中,通過仿真實(shí)際網(wǎng)絡(luò)通訊的方式,執(zhí)行ECU診斷伺服自動測試軟件;依序完成所有測試項(xiàng)目后,產(chǎn)生ECU診斷功能測試報(bào)告。本文采取的車輛網(wǎng)絡(luò)ECU診斷功能測試架構(gòu)詳如圖1所示,ECU診斷伺服功能自動測試機(jī)開發(fā)的規(guī)格需求則整理如表1所示。
表1 車輛網(wǎng)絡(luò)ECU 診斷功能測試規(guī)格需求表
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診斷功能及診斷測試器的模擬測試。
圖2 CANdelaStudio 編輯環(huán)境
2.2.2 建立ECU診斷功能文件
首先,在工作窗口中的主選單中,選擇File選單中的New 選項(xiàng),根據(jù)OEM 提供ECU診斷功能需求規(guī)格,選擇CANdelaStudio內(nèi)建的UDSonCANExample 或KWPonCAN-Example 的診斷文件樣板(圖3),作為建立符合OEM 規(guī)格的ECU診斷功能描述文件的基本架構(gòu)。
圖3 建立ECU診斷功能文件
(1)ECU診斷功能信息
ECU信息(ECU Information)章節(jié)中包括:
(1)ECU信息文字?jǐn)⑹鼍庉嬳撁妫?/p>
(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來對新的診斷通訊聯(lián)機(jī)進(jìn)行相關(guān)設(shè)定。
(4)Session Wizard
設(shè)定對話框的設(shè)置步驟中,先輸入診斷通訊聯(lián)機(jī)的名稱,以及加入要求信息所傳輸?shù)臄?shù)據(jù)對象。接著在診斷服務(wù)清單里,依照OEM 的診斷規(guī)格,勾選ECU 在此診斷通訊所支持的診斷服務(wù)。
2.2.3 ODX格式檔案輸出模塊
當(dāng)輸入數(shù)據(jù)、開啟或儲存文件時(shí),CANdelaStudio 會執(zhí)行數(shù)據(jù)一致性檢查,它檢查診斷服務(wù)數(shù)據(jù)對象與診斷文件樣板所指定的需求是否符合,例如診斷文件樣板中的診斷數(shù)據(jù),最小長度定義為8位,則數(shù)據(jù)訊框至少含有一個(gè)8位的數(shù)據(jù)對象。輸出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),輸出可檢視測試器節(jié)點(diǎn)產(chǎn)生的測試報(bào)告,對測試程序修正,并重新進(jìn)行測試。完成執(zhí)行診斷數(shù)據(jù)一致性檢查,以及設(shè)定ODX診斷通訊參數(shù)檔案輸出后,點(diǎn)選主選單File”的Export 選項(xiàng),選擇Open Diagnostic Exchange (ODX)”后,出現(xiàn)儲存檔案對話框選擇檔案儲存路徑與輸入文件名,再選擇檔案版本為ODX 2.0.1,產(chǎn)生ODX檔案。
圖4 輸出ODX檔案
CANoe為車輛診斷測試開發(fā)工具,它可以加載CANdelaStudio所輸出ECU的ODX 檔案;并通過CANoe診斷測試功能,顯示ODX檔案中所有的診斷服務(wù),并分析信息內(nèi)容的正確性。在CANoe 環(huán)境中,亦可以建構(gòu)虛擬CAN-bus網(wǎng)絡(luò)ECU 節(jié)點(diǎn)的診斷測試開發(fā)環(huán)境;通過讀取ECU的ODX與ODX-C檔案,編輯虛擬ECU節(jié)點(diǎn)的診斷通訊功能,并使用CANoe提供的Diagnostic Console與Fault Memory window 等診斷功能測試工具,來分析與顯示ODX 檔案中的診斷服務(wù)信息內(nèi)容。
CANoe整合測試環(huán)境中,用戶可通過車輛網(wǎng)絡(luò)測試器節(jié)點(diǎn),開發(fā)診斷伺服自動測試環(huán)境。在測試器節(jié)點(diǎn)中,通過CAPL browser針對各種診斷服務(wù)類型所制定的測試項(xiàng)目,配合CAPL內(nèi)建的診斷函式以及測試函式,編輯診斷服務(wù)測試項(xiàng)目(Test case)函式。在CANoe虛擬環(huán)境下測試完成后,使用者可檢視測試器節(jié)點(diǎn)產(chǎn)生的測試報(bào)告,對測試程序修正,并重新進(jì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è)定對話框后,在Definition分頁中輸入ECU名稱。
在左方窗口中點(diǎn)擊右鍵,并在選單中選擇Insert network node”,即可在CAN 網(wǎng)絡(luò)系統(tǒng)中新增虛擬ECU節(jié)點(diǎn)。
圖5 新增ECU網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)據(jù)
(1)加入ODX 檔案
在CANoe 主工具欄中的Configuration選單中,選擇Diagnostic/ISO TP configuration…”,開啟設(shè)定對話框,能夠?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è)定對話框。在title”字段,輸入虛擬ECU 節(jié)點(diǎn)名稱;CANdb Name”必須選擇網(wǎng)絡(luò)數(shù)據(jù)庫檔案中建立的節(jié)點(diǎn)名稱,若設(shè)為<<default>>,在進(jìn)行系統(tǒng)仿真會出現(xiàn)錯(cuò)誤信息;虛擬節(jié)點(diǎn)狀態(tài)為模擬(simulated)或關(guān)閉(off);最下方的File…”、Edit”與Compile”分別能夠加載、編輯和編譯節(jié)點(diǎn)程序檔案。
(2)建立CAN-ECU仿真診斷功能
使用者必須配合使用在ODX 或CDD 診斷描述檔案中定義的診斷對象,才能使CAPL的診斷函式命令,可以存取診斷服務(wù)與數(shù)據(jù)。在診斷服務(wù)回應(yīng)函式的程序代碼編輯區(qū)中,點(diǎn)擊右鍵,并選擇Diagnostic objects from CANdela…”選項(xiàng);然后,在Selection of diagnostic objects”對話框里,用戶可選擇診斷服務(wù)對象,存取診斷服務(wù)。當(dāng)存取診斷服務(wù)參數(shù)時(shí),點(diǎn)選右鍵選擇其中Diagnostic parameters from CANdela …”選項(xiàng)。在Selection of diagnostic objects parameter”對話框中,箭頭向右為傳送端診斷服務(wù)信息的參數(shù),箭頭向左為接收端響應(yīng)診斷服務(wù)中所包含的參數(shù),使用者可在診斷響應(yīng)函式加入診斷參數(shù)、讀取或修改參數(shù)內(nèi)容。
圖6 新增診斷服務(wù)參數(shù)數(shù)據(jù)
(3)ECU節(jié)點(diǎn)模型診斷功能的驗(yàn)證
CANoe診斷功能模塊,提供發(fā)展與測試ECU診斷功能的輔助軟件工具;使用Diagnostic Console 與Fault Memory window,可以檢驗(yàn)虛擬ECU 節(jié)點(diǎn),能否正確響應(yīng)與ODX 檔案內(nèi)容相符的診斷信息與故障碼。
診斷中控臺是用來描述ECU 診斷功能的ODX或CDD檔案內(nèi)容,使用者可選擇診斷服務(wù),以對ECU發(fā)出要求信息,以及設(shè)定診斷服務(wù)中的參數(shù)與顯示回傳信息內(nèi)容;并對虛擬ECU節(jié)點(diǎn),執(zhí)行ODX 檔案中的所有診斷服務(wù),并分析診斷中控臺所顯示的回傳信息內(nèi)容,是否與ECU 診斷規(guī)格文件內(nèi)容符合。
故障碼檢窗口能直接讀取ECU內(nèi)存的故障碼(DTC),以及刪除ECU故障碼與不斷更新讀取故障碼數(shù)據(jù)。使用故障碼檢窗口,可以對虛擬ECU 節(jié)點(diǎn)分別傳送讀取與消除故障碼信息,測試已加載ODX 檔案的虛擬ECU 節(jié)點(diǎn)故障碼功能的正確性。
(1)建立測試項(xiàng)目、群組、流程控制
用戶可在Simulation Setup 窗口中的虛擬總線上,點(diǎn)擊鼠標(biāo)右鍵,選擇“Insert test module”,新增測試器節(jié)點(diǎn)模塊,以CAPL語法來編輯測試程序。測試器節(jié)點(diǎn)上方分別有鉛筆、編譯、播放等圖形,可用來編輯測試器節(jié)點(diǎn)程序、組譯程序代碼,以及按下播放鈕,開始執(zhí)行測試程序。
(2)測試器節(jié)點(diǎn)設(shè)定對話框
在測試器節(jié)點(diǎn)上,點(diǎn)擊鼠標(biāo)右鍵,選擇“Configuration”,出現(xiàn)“Testnode Configuration”節(jié)點(diǎn)設(shè)定對話框。其中有“Common”、“Report”、“Report Filter”、“Modules”、“Buses”等分頁,可供使用者設(shè)定測試器節(jié)點(diǎn)的外部功能。
使用者可在Modules分頁下方,點(diǎn)擊“Add”,以為測試器節(jié)點(diǎn)新增軟件模塊。測試器節(jié)點(diǎn)必須透過傳輸層,將數(shù)據(jù)長度較長的診斷服務(wù)信息,分批傳輸至總線上。在此加入傳輸層模塊(OSEK_TP.dll),以便使用者通過CAPL browser,加入傳輸層函式。
(3)CAPL 診斷測試程序編輯
測試器節(jié)點(diǎn)程序編輯,主要編輯“TestControl”目錄下的MainTest( )與Testcase( ),以及在“Callback function”目錄下,新增OSEK_TP 傳輸層函式等三部分。使用者也可依不同需求,在“Function”目錄下,新增自定義功能的函式;或是在“Timer”目錄下,新增定時(shí)器等。
用戶可在測試項(xiàng)目目錄中,點(diǎn)擊鼠標(biāo)右鍵選擇“New”,新增測試項(xiàng)目。在新增的測試項(xiàng)目函式中,用戶可透過點(diǎn)擊鼠標(biāo),在右鍵選單中,選擇“Diagnostic object from CANdela…”或“Diagnostic parameter from CANdela…”,使用ODX 檔案數(shù)據(jù)庫里的診斷服務(wù)以及診斷服務(wù)參數(shù),搭配測試器節(jié)點(diǎn)CAPL 診斷函式與測試器節(jié)點(diǎn)常用CAPL測試函數(shù)式,來編輯各種測試程序。
ECU節(jié)點(diǎn)模型與測試器模塊建構(gòu)完成后,先在CANoe 的虛擬網(wǎng)絡(luò)系統(tǒng)環(huán)境中,進(jìn)行CAN-ECU 的診斷功能自動測試,逐一檢視各個(gè)診斷服務(wù)的測試報(bào)告,并修改測試程序,使診斷功能自動測試環(huán)境的功能更完整。在CANoe的標(biāo)準(zhǔn)任務(wù)欄上,將測試環(huán)境的工作模式改為“Simulated bus”,再按下閃電圖形的“Start”鈕,啟動測試環(huán)境。測試器模塊窗口右下方,按下圖形為播放鈕的“Start”,進(jìn)行ECU的診斷服務(wù)自動測試,測試界面和如圖7所示。
表2 診斷測試類型
圖7 CANoe診斷功能自動測試畫面
本研究分別針對(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)行測試,部分測試結(jié)果及HTML報(bào)告如圖8所示。
圖8 診斷服務(wù)功能測試結(jié)果與HTM測試報(bào)告
本研究使用Vector車輛網(wǎng)絡(luò)開發(fā)工具,進(jìn)行ECU診斷功能自動測試環(huán)境的開發(fā)。先通過CANdelaStudio編輯ECU診斷功能描述文件,并產(chǎn)生ODX檔案;接著,在CANoe虛擬網(wǎng)絡(luò)系統(tǒng)環(huán)境,加載ODX檔案,建立ECU節(jié)點(diǎn)模型的診斷通訊功能,再以測試器模塊執(zhí)行自動測試,所有項(xiàng)目的測試步驟、過程與結(jié)果,也都記錄在測試模塊所產(chǎn)生HTML測試報(bào)告中;診斷功能仿真測試結(jié)果與ECU規(guī)格文件是一致的。本研究使用的方法與傳統(tǒng)診斷服務(wù)功能測試方法的差別,主要在于ECU診斷功能的規(guī)劃、診斷功能節(jié)點(diǎn)模型建立、模型驗(yàn)證與測試等,皆符合V-model開發(fā)程序,并以O(shè)DX格式檔案,來銜接各個(gè)開發(fā)階段所需的診斷數(shù)據(jù)。此“CAN-ECU診斷服務(wù)功能自動測試”方法,可以協(xié)助汽車制造廠與ECU 供貨商,在ECU診斷服務(wù)功能研發(fā)時(shí)期,通過通用的ODX 格式檔案,可在異地分別進(jìn)行V-model開發(fā)程序各階段工作,并加入仿真節(jié)點(diǎn)測試功能,可盡早發(fā)現(xiàn)錯(cuò)誤與缺陷,并可節(jié)省ECU開發(fā)成本及提升開發(fā)效率。