馬開獻(xiàn)
(維克多汽車技術(shù)上海有限公司,上海 200050)
隨著科技的發(fā)展,時代的進(jìn)步,開發(fā)工具在ECU開發(fā)當(dāng)中起到越來越重要的作用。同時一些先進(jìn)的開發(fā)流程和開發(fā)理念也逐漸在國內(nèi)被采用,如基于模型開發(fā)的V-Model流程。一旦ECU批量生產(chǎn),如果對其功能進(jìn)行升級,目前比較通用的方法就是采用旁通技術(shù)。
旁通技術(shù)特別適于為ECU添加新的算法以及對原有算法的優(yōu)化。原有的ECU控制器仍然執(zhí)行其全部應(yīng)用程序,而新的算法同時在原型系統(tǒng)上執(zhí)行。在ECU設(shè)計階段可通過旁通技術(shù)獲得極大的設(shè)計靈活性,使設(shè)計不受原有ECU的RAM、ROM、I/O以及Processor處理能力的約束。
CANape是由德國VECTOR公司開發(fā)的,可用于ECU開發(fā)、標(biāo)定、診斷和測量數(shù)據(jù)采集的綜合性工具。CANape主要用于ECU的參數(shù)優(yōu)化,它在系統(tǒng)運行期間同時標(biāo)定參數(shù)值和采集測量信號。同時CANape支持眾多的接口,如CAN、LIN、FlexRay、MOST、Ethernet、K-Line等,如圖1所示。也支持很多協(xié)議,如KWP2000、UDS、CCP、XCP等。目前CANape與Matlab無縫集成,使得CANape強大的通信功能與Matlab/Simulink強大的功能建模能力結(jié)合在一起,為ECU的開發(fā)提供更有力的支持。CANape通過ASAP3協(xié)議可以與臺架進(jìn)行結(jié)合,通過控制臺架的上位機軟件,實現(xiàn)自動定標(biāo)功能。使用CANape自帶的腳本語言,用戶可以開發(fā)與診斷相關(guān)的Flash編程任務(wù)。使用腳本語言可執(zhí)行診斷函數(shù),并從ODX Flash容器中讀取必要的信息和數(shù)據(jù)。可以使用ODX-F容器自動完成Flash功能,也可通過用戶輸入交互進(jìn)行。CANape具備全面測試并分析相關(guān)的診斷通信的能力,這使它成為了進(jìn)行Flash編程的一個理想開發(fā)環(huán)境。
圖1 CANape支持的接口類型
為了縮短Flash編程過程的執(zhí)行時間,VECTOR提供了一種壓縮傳輸數(shù)據(jù)的方法,可使用CANape中針對Flash Bootloader CANfbl的擴(kuò)展功能和相關(guān)的壓縮功能。為優(yōu)化Flash過程,CANape也支持對多個ECU并行編程,同時支持旁通技術(shù)的開發(fā)。
在ECU開發(fā)過程中,經(jīng)常會頻繁地將重要功能導(dǎo)出到外部仿真系統(tǒng),這樣可以花最小的代價來運行這些功能。直到仿真模型中的算法達(dá)到一定的成熟度,開發(fā)工程師可以將仿真模型生成代碼,這些代碼可與其它的ECU代碼一起編譯并燒寫到ECU中。然而,在此之前,可以使用一種被稱作“旁通”的技術(shù)(該技術(shù)耦合了真實ECU及其模型),通過旁通可以在開發(fā)初期不依賴硬件進(jìn)行測試和優(yōu)化算法。
在使用XCP的旁通技術(shù)中,XCP主設(shè)備使用DAQ從ECU中讀取數(shù)據(jù),將這些數(shù)據(jù)作為輸入值發(fā)給模型并且使用STIM將模型返回的結(jié)果發(fā)送回ECU。使用普通的PC機平臺就足以滿足旁通和建模的要求。CANape作為一個高度優(yōu)化的XCP主設(shè)備,可以同時處理真實ECU及在PC機上運行的算法模型之間的通信。
ECU中需要被旁通的功能通過總線網(wǎng)絡(luò)把該子功能的參數(shù)變量傳遞給原型系統(tǒng),并由原型系統(tǒng)對獲得的參數(shù)變量處理完畢后,同樣通過總線網(wǎng)絡(luò)返回原型系統(tǒng)的處理結(jié)果,ECU用該結(jié)果替代子程序返回值,從而實現(xiàn)對ECU子功能的旁通。實現(xiàn)旁通原理圖如圖2所示。
圖2 實現(xiàn)旁通原理圖
例如ECU中需要被旁通的子功能y=f(x)的參數(shù)x通過XCP協(xié)議以數(shù)據(jù)包的形式傳遞給原型系統(tǒng);原型系統(tǒng)調(diào)用相對應(yīng)的旁通子程序y’=f’(x’)完成對參數(shù)x的運算后,通過STIM返回函數(shù)值y’。由于子程序中的y’與y在ECU中被設(shè)置為相同地址,函數(shù)f(x)的返回值y被y’取代,從而實現(xiàn)了原型系統(tǒng)f’(x’)對ECU子程序f(x)的旁通。旁通技術(shù)實現(xiàn)參數(shù)傳遞流程圖如圖3所示。
圖3 旁通技術(shù)實現(xiàn)參數(shù)傳遞流程圖
根據(jù)原理建立簡單的模型來驗證其可行性,其模型通過Matlab/Simulink進(jìn)行創(chuàng)建,實現(xiàn)旁通模型如圖4所示。
圖4 實現(xiàn)旁通模型
在該模型中,通過加法算法進(jìn)行旁通計算,對于加法算法有2個輸入:輸入1為ECU內(nèi)部算法經(jīng)過計算進(jìn)行輸出,該變量名為Channel1;輸入2為常值,該變量名為Testbyte0,可以通過CANape對其值進(jìn)行實時修改;經(jīng)過算法計算過后進(jìn)行輸出到ECU中,該變量名字為Period。在Simulink環(huán)境中對模型進(jìn)行配置,選擇固定步長,選擇cnp.tlc目標(biāo)平臺,編譯生成該模型對應(yīng)的DLL,然后把DLL調(diào)入到CANape中,把Input1和ECU中的某一個變量進(jìn)行關(guān)聯(lián),同時把Output也與ECU中的某一個變量進(jìn)行關(guān)聯(lián),此時就建立好旁通,在CANape中設(shè)置Input1和Output的周期均為10ms,通過XCP協(xié)議命令進(jìn)行上傳和下載,從而實現(xiàn)旁通中的DAQ和STIM命令。仿真結(jié)果如圖5所示。
圖5 仿真結(jié)果圖
根據(jù)仿真結(jié)果可知:當(dāng)輸入2發(fā)生變化時,其輸出也隨之變化,同時Simulink的輸出又是ECU的輸入,因此輸入1也隨之發(fā)生變化,從而實現(xiàn)了旁通的功能。
根據(jù)CANape和Simulink的聯(lián)合仿真結(jié)果,可知CANape軟件平臺可以實現(xiàn)旁通技術(shù),同時相對于硬件平臺的成本已經(jīng)大大降低。通過旁通技術(shù),可以加快ECU的開發(fā),縮短開發(fā)周期,提高開發(fā)效率。