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