田 真,張曼雪,董婷婷,郭永斌,金啟前,趙福全
(吉利汽車研究院,浙江,杭州 311228)
傳統(tǒng)的開發(fā)模式存在很多缺點,如開發(fā)人員間信息交流以文檔為基礎(chǔ)、代碼手寫、修訂錯誤較困難且代價較大。為了提高產(chǎn)品開發(fā)的效率,同時也減輕工程師的工作量,整車控制系統(tǒng)開發(fā)提出了V模式的開發(fā)流程。該流程的主要特點是開發(fā)、編程和測試,總是在同一環(huán)境下工作,整個開發(fā)過程都可以得到驗證。使用該模式可以加速和簡化開發(fā)流程,實時修訂開發(fā)過程中出現(xiàn)的錯誤。
模型單元測試在V模式的最初階段,對各個模塊的功能進行驗證。本文對某新能源車型整車控制系統(tǒng)仿真模型的核心功能模塊進行分析,同時分析測試方法,并根據(jù)測試用例,對模塊功能進行單元測試及驗證。
整車控制系統(tǒng)的V模式開發(fā)流程,主要包括控制方案的設(shè)計、離線仿真、快速控制原型、產(chǎn)品代碼生成、硬件在環(huán)仿真測試和標定,如圖1所示。
(1)建立對象數(shù)學模型。
(2)設(shè)計控制方案。
(3)以Matlab[2]為平臺建立模型并進行仿真分析。
(1)保留需要下載到dSPACE中的模塊。
(2)用硬件接口關(guān)系代替原來的邏輯連接。
(3)對I/O進行配置。
(1)自動生成代碼。
(2)自動下載到整車控制器硬件系統(tǒng)中。
硬件在環(huán)(Hardware-in-loop,HIL)即指由硬件控制器與模擬器之間形成一個以數(shù)據(jù)、信號進行交流的閉環(huán)測試系統(tǒng)。通過虛擬的整車駕駛環(huán)境的建立,與實際的控制器硬件之間建立循環(huán)系統(tǒng),測試該控制器在虛擬環(huán)境下的各種功能。
基于CAN總線的標定協(xié)議(CAN Calibration Protocol,CCP)是一個連接開發(fā)工具和ECU的軟件接口協(xié)議,該協(xié)議定義了模塊標定、數(shù)據(jù)采集和存取flash中運行數(shù)據(jù)的方法,在電池管理系統(tǒng)中,可以利用CCP實現(xiàn)以下功能。
(1)實時在線測試。
(2)各傳感器檢測和標定。
(3)報警或出錯值的調(diào)整。
(4)程序下載。
單元測試的對象是模型的最小單位——模塊。單元測試應對模塊中所有的功能設(shè)置測試用例,對覆蓋度不足的測試用例進行補充及測試,校核單元測試結(jié)果,評估測試結(jié)果的正確性。通過單元測試用例,可以保證所建模型功能達到預期的運行結(jié)果。
以整車的轉(zhuǎn)矩管理模塊為例,其功能是將轉(zhuǎn)矩分配給發(fā)動機、發(fā)電機和電動機[3],對于純電動車型,此模塊決定如何對電機的轉(zhuǎn)矩輸出進行分配。因此有關(guān)的轉(zhuǎn)矩管理器子模塊決定了整車轉(zhuǎn)矩的分布,細分為運行模式判定、轉(zhuǎn)矩輸出管理等子模塊。單元測試針對最低層次的細分功能模塊進行測試及功能驗證。
本文以轉(zhuǎn)矩管理模塊中的TED子模塊為例,進行單元測試的舉例說明。TED為純電動模式轉(zhuǎn)矩模塊,其功能目標為以下兩點。
(1)如果純電動(state Electric Drive)使能,驅(qū)動電機為唯一車輛驅(qū)動裝置。
(2)發(fā)動機和ISG電機轉(zhuǎn)矩目標值為0,驅(qū)動目標轉(zhuǎn)矩發(fā)送至驅(qū)動電機控制-IPU。
在圖7所示的子模塊中,根據(jù)車輪處轉(zhuǎn)矩需求計算驅(qū)動電機轉(zhuǎn)矩值,同時轉(zhuǎn)矩的變化斜率受到限制。轉(zhuǎn)矩上升與下降的斜率限值對稱,在相應map中定義并可標定。電機轉(zhuǎn)矩限值可設(shè)為系統(tǒng)峰值限值或持續(xù)運行限值,并受限于加速踏板傳感器限制的車輪處轉(zhuǎn)矩需求值。
單元測試框架如圖8所示,包括測試信號輸入(simulate Input)、TED功能模塊(TST_TED_tqStateEdrive)、結(jié)果比較(compare Signals)和輸出信號確認(verify Signals)模塊。
(1)simulate Input模塊說明
simulate Input模塊輸入包含2組測試信號:Test Signals_R001/2,分別對應2組測試用例。通過switch中testcase選擇按照哪組測試用例進行測試。2組測試用例的輸入(testSig_Bus)均包含相同名稱的信號,并且信號分為兩部分,即包含所有的TED模塊的輸入信號和輸出目標信號。其中模塊的輸入信號部分輸入至TED功能模塊中作為功能模塊的輸入信號。
(2)TED功能模塊說明
此模塊應用了“模型引用”,對TED單元進行測試。“模型引用”方法適于獨立地進行單元測試。此模塊的輸出信號,即對應于輸入信號的功能模塊輸出結(jié)果,輸入至下一模塊進行結(jié)果對比分析。
(3)compare Signals模塊說明
此模塊為2個測試用例輸出結(jié)果的對比分析模塊,對testSig_Bus中設(shè)定的輸出目標結(jié)果與模型實際測試輸出結(jié)果進行對比,以測試模型單元的輸出是否符合預定的結(jié)果。
(4)verify Signals模塊說明
此模塊對測試過程進行確認,如果測試未通過則該模塊報錯,出錯原因可能是模塊本身有誤或測試用例設(shè)置不當,需要測試工程師排查錯誤。
測試目標:驅(qū)動電機轉(zhuǎn)矩需求輸出正確。
模型輸出的驅(qū)動電機轉(zhuǎn)矩需求值符合系統(tǒng)限值。當ted_bEmotSysPeakLimAcv_C(電機系統(tǒng)峰值限值標志位)標定為0時,驅(qū)動電機轉(zhuǎn)矩限定在scm_tqEmotNormLL(驅(qū)動電機轉(zhuǎn)矩下限)~scm_tqEmotNormUL(驅(qū)動電機轉(zhuǎn)矩上限)之內(nèi);當標定為1時,驅(qū)動電機轉(zhuǎn)矩限定在scm_tqEmotPeakLL(驅(qū)動電機峰值轉(zhuǎn)矩下限)~ scm_tqEmotPeakUL(驅(qū)動電機峰值轉(zhuǎn)矩上限)之內(nèi)。此外,轉(zhuǎn)矩變化的斜率受限,斜率限值取決于前一個循環(huán)步長下由TMO(轉(zhuǎn)矩輸出管理)模塊輸出的電機轉(zhuǎn)矩需求的絕對值和車速。上升和下降斜率相等。根據(jù)模塊的功能定義,通過設(shè)定合適的模塊輸入值并進行仿真,監(jiān)控模型輸出結(jié)果的狀態(tài)并與期望的結(jié)果進行對比。
測試用例設(shè)置:
ted_bEmotSysPeakLimAcv_C(電機系統(tǒng)峰值限值標志位)設(shè)置為0,scm_tqEmotNormLL(電機轉(zhuǎn)矩下限),scm_tqEmotNormUL(電機轉(zhuǎn)矩上限)分別設(shè)為50 N·m、-50 N·m。
其余與本測試無關(guān),可設(shè)為1。
輸出目標值(驅(qū)動電機轉(zhuǎn)矩需求)設(shè)定如下。
測試過程:運行模型,對結(jié)果的目標期望值(testSig_Bus-test-Sig_ted_tqEmotReq)與模型輸出值[testResult_Bus-ted_tqEmot Req(驅(qū)動電機需求轉(zhuǎn)矩)]進行對比,當模型測試的輸出值符合設(shè)定的期望結(jié)果值時,輸出result值恒為1;當模型測試的輸出值不符合設(shè)定的期望結(jié)果值時,輸出result值在0.5 s時從1變至0;在模型中對assertion模塊進行設(shè)置,信號驗證模型中的聲明模塊,判斷輸入信號是否為0,如果輸入信號全為非0值,該模塊不動作,當測試未通過時,即對應用例端口為0時,則中斷模擬并顯示錯誤信息。如圖11所示,測試通過。
TED-Testcase2的基本信息如下。
測試目標:正確確定驅(qū)動電機轉(zhuǎn)矩限值,即來自DTR模型的轉(zhuǎn)矩上下限值dtr_tqWhlByAccPSenUL(車輪處轉(zhuǎn)矩上限)、dtr_tqWhlByAccPSenLL(車輪處轉(zhuǎn)矩下限)需轉(zhuǎn)化為驅(qū)動電機轉(zhuǎn)矩限值,并且電機轉(zhuǎn)矩的限值在系統(tǒng)限值scm_tqEmotPeakLL(驅(qū)動電機峰值轉(zhuǎn)矩下限)~scm_tqEmotPeakUL(驅(qū)動電機峰值轉(zhuǎn)矩上限)、scm_tqEmotNormLL(驅(qū)動電機正常轉(zhuǎn)矩下限)~scm_tqEmotNormUL(驅(qū)動電機轉(zhuǎn)矩上限)之內(nèi)。當ted_bEmotSysPeakLimAcv_C(電機系統(tǒng)峰值限值標志位)標定為0時,驅(qū)動電機轉(zhuǎn)矩限定在scm_tqEmotNormLL~scm_tqEmotNormUL之內(nèi)。
測試過程:對結(jié)果的目標期望值(test Sig_Bus-testSig_ted_tqEmotULtestSigted_TqEmotLL)分別與模型測試輸出(testResult_Bus-ted_tqEmotUL、ted_tqEmotLL)進行對比, 當對應值分別相等時,輸出result值恒為1,測試通過,否則測試未通過。在verify Signals模塊中對assertion模塊進行設(shè)置,當測試未通過時,則中斷模擬并顯示錯誤信息。
測試用例設(shè)置:設(shè)置的輸入?yún)?shù)數(shù)值如圖12所示,設(shè)置最大最小驅(qū)動電機限值、加速踏板最大最小轉(zhuǎn)矩需求和傳動比,其余數(shù)值對testcase2無影響,故可設(shè)置為1。
測試結(jié)果:測試結(jié)果如圖14所示,來自于DTR模型的轉(zhuǎn)矩上下限值 dtr_tqWhlByAccPSenUL、dtr_tqWhlByAcc-PSenLL(車輪處轉(zhuǎn)矩)轉(zhuǎn)化為驅(qū)動電機轉(zhuǎn)矩限值為-100~25N·m,系統(tǒng)限值scm_tqEmotNormLL(驅(qū)動電機正常轉(zhuǎn)矩下限)~scm_tq-EmotNormUL(驅(qū)動電機正常轉(zhuǎn)矩上限)為-50~50N·m,因此期望的上下限值testSig_ted_tqEmotUL(TED模塊輸出的電機轉(zhuǎn)矩上限)、testSig_ted_tqEmotLL(TED輸出的驅(qū)動電機轉(zhuǎn)矩下限)輸出結(jié)果設(shè)定為-50~25N·m。經(jīng)測試,模型測試輸出結(jié)果ted_tqEmotUL、ted_tqEmotLL與期望值相等,因此測試結(jié)果為1,測試通過。
上面兩個測試用例覆蓋需要測試的需求測試點,可以對模塊功能進行驗證。
表1 文中縮寫定義表
本文結(jié)合純電動車的實例對基于V模式的開發(fā)流程進行了介紹,驗證了采用基于V模式的開發(fā)方式可以提高整車控制器的開發(fā)效率,同時減輕了工程師的工作量,并且保證了產(chǎn)品的穩(wěn)定性和有效性。
單元測試在模型建立及仿真階段,通過測試對整車性能進行分析驗證,保證所建模型功能達到預期的運行結(jié)果以及下個階段的工作能夠順利進行。
[1]戴海峰,魏學哲,孫澤昌. V -模式及其在現(xiàn)代汽車電子系統(tǒng)開發(fā)中的應用[J].機電一體化,2006(6):20-24.Dai Haifeng,Wei Xuezhe,Sun Zechang.V-mode and Its Application in Development of Modern Automabile Electronics Systems[J]. Mechatronics,2006(6):20-24. (in Chinese)
[2]張志涌.精通MATLAB 6.5版[M].北京:北京航空航天大學出版社,2003.Zhang Zhiyong. MATLAB 6.5[M]. Beijing:Beihang University Press,2003. (in Chinese)
[3]EHSANI M,Gao Yimin,EMADI A.現(xiàn)代電動汽車、混合動力電動汽車和燃料電池車——基本原理、理論和設(shè)計[M].北京:機械工業(yè)出版社,2010.EHSANI M,Gao Yimin,EMADI A. Modern Electric,Hybrid Electric Vehcles and Fuel Cell Vehicles—Basic Principles,Theory and Design[M]Beijing:China Machine Press,2010. (in Chinese)