中國第一汽車股份有限公司技術(shù)中心 李一鳴 鄭 巖 龐學(xué)文
一種車輛標(biāo)定數(shù)據(jù)在Targetlink和RTW集成環(huán)境下共用的方法
中國第一汽車股份有限公司技術(shù)中心 李一鳴 鄭 巖 龐學(xué)文
汽車電子行業(yè)大都采用基于模型的代碼自動生成的軟件開發(fā)技術(shù),但基于原有工作進(jìn)行二次開發(fā)且需要改變代碼生成工具時(shí),要保證切換前后模型、數(shù)據(jù)等文件的一致性。本文使用汽車電子常用的工具和軟件環(huán)境對標(biāo)定數(shù)據(jù)進(jìn)行離線處理,實(shí)現(xiàn)標(biāo)定數(shù)據(jù)在C代碼生成工具Targetlink和RTW下通用,并對結(jié)果進(jìn)行驗(yàn)證。
標(biāo)定數(shù)據(jù)轉(zhuǎn)換;Targetlink;RTW
汽車電子行業(yè)中為了保證代碼和產(chǎn)品質(zhì)量,一般都采用基于模型的代碼自動生成的軟件開發(fā)技術(shù)[1],通過制定代碼生成過程的規(guī)范,保證代碼質(zhì)量,降低測試成本。
當(dāng)前基于模型的產(chǎn)品級代碼自動生成平臺有Targetlink、Matlab/ Simulink/RTW Embedded Coder(簡稱RTW)、Scade等,都基于Matlab/Simulink系統(tǒng)仿真模型轉(zhuǎn)化。Targetlink是Dspace公司針對汽車電子領(lǐng)域,基于Simulink/Stateflow模型開發(fā)的一套產(chǎn)品級代碼生成工具,有著優(yōu)異的代碼轉(zhuǎn)化效率和嚴(yán)格的軟件規(guī)范。在模型編譯過程中要將Simulink模型轉(zhuǎn)換為Targetlink模型來滿足其設(shè)計(jì)要求和規(guī)范,使用時(shí)要連接專用的軟件保護(hù)器,在團(tuán)隊(duì)開發(fā)模式下有一定的局限性。RTW (Real Time Workshop,實(shí)時(shí)工作仿真平臺)是Mathworks公司為Matlab在實(shí)時(shí)控制應(yīng)用方面開發(fā)的專用工具箱[2]。其做為Matlab軟件下的工具,使用成本低,更新速度快,對Simulink的支持好,開發(fā)人員無需其它特殊條件即可進(jìn)行代碼編譯和生成。
根據(jù)項(xiàng)目開發(fā)需求,汽車電子開發(fā)團(tuán)隊(duì)會選擇適宜的軟件開發(fā)環(huán)境。但有時(shí)新的工作要一定程度的基于原有工作,并需要更換軟件集成平臺,則必須要保證更換平臺前后模型、數(shù)據(jù)、和相關(guān)文件基本一致。工程在Targetlink和RTW集成環(huán)境間相互切換時(shí),標(biāo)定數(shù)據(jù)由于模型編譯和代碼生成方式的變化無法通用。
本文就是針對這種情況,找到標(biāo)定數(shù)據(jù)在兩個(gè)軟件平臺下可以通用的解決方案。由于兩個(gè)軟件平臺下的標(biāo)定數(shù)據(jù)轉(zhuǎn)換是可逆的,所以本文以Targetlink集成環(huán)境向RTW集成環(huán)境轉(zhuǎn)換為例,反之方法一致。
汽車電子行業(yè)中常用的標(biāo)定數(shù)據(jù)存儲方式和庫文件有多種格式,本文以.par格式文件來保存標(biāo)定數(shù)據(jù),以.a2l格式文件讀取和轉(zhuǎn)換數(shù)據(jù)為例。par格式文件是一種文本格式,是Vector公司開發(fā)的CANape軟件常用的數(shù)據(jù)存儲格式。a2l格式文件是基于ASAM MCD-2MC(ASAP2)標(biāo)準(zhǔn)的庫文件,該標(biāo)準(zhǔn)是針對測量和標(biāo)定任務(wù)開發(fā)的,用于規(guī)范ASAM MCD系統(tǒng)中間層和控制器數(shù)據(jù)庫之間的接口[3]。
實(shí)際應(yīng)用中為了便于使用者觀察數(shù)據(jù),a2l文件一般會被處理,將原本的定義顯示為易于讀取的信息。但是兩個(gè)平臺對a2l文件的處理規(guī)則并不完全相同,這樣就導(dǎo)致了Targetlink集成的程序保存出的標(biāo)定數(shù)據(jù)無法全部被RTW環(huán)境下集成的程序直接讀取。
本文的解決思路是將標(biāo)定數(shù)據(jù)在二個(gè)集成環(huán)境下的一個(gè)相交點(diǎn)上實(shí)現(xiàn)數(shù)據(jù)的交互,實(shí)現(xiàn)這個(gè)方案需要一下三個(gè)主要步驟。
1.1 統(tǒng)一數(shù)據(jù)格式
由于兩個(gè)集成環(huán)境下的模型同源,導(dǎo)致標(biāo)定數(shù)據(jù)差異的原因主要是代碼和a2l的生成方式不同。統(tǒng)一數(shù)據(jù)格式后,就為實(shí)現(xiàn)兩個(gè)平臺間數(shù)據(jù)的交換提供了基礎(chǔ)。
標(biāo)定數(shù)據(jù)是通過a2l文件從MCU中讀取的,而a2l文件一般是被處理過的,所以要獲得模型初始定標(biāo)狀態(tài)下生成的a2l文件,把標(biāo)定數(shù)據(jù)通過初始狀態(tài)的a2l文件逆轉(zhuǎn)化為模型初始定標(biāo)的狀態(tài)。從而去除數(shù)值轉(zhuǎn)換關(guān)系和部分字符等特殊表示形式,將標(biāo)定數(shù)據(jù)都以原始的數(shù)值方式存儲,避免在后續(xù)步驟中出現(xiàn)不識別或識別錯(cuò)誤的狀況。
標(biāo)定數(shù)據(jù)在存儲時(shí)有多種數(shù)據(jù)格式可選,如十進(jìn)制、十六進(jìn)制、物理值等,其中物理值是數(shù)據(jù)在MCU的物理層級上保存的數(shù)值,在轉(zhuǎn)換時(shí)基本不會改變。為了保證數(shù)據(jù)完全去除a2l文件中的轉(zhuǎn)換關(guān)系算法,在數(shù)據(jù)保存時(shí),需要選擇數(shù)據(jù)類型為物理值。轉(zhuǎn)換示意圖如圖1所示。
1.2 數(shù)值換算
在項(xiàng)目工作中,Targetlink環(huán)境下保存出的標(biāo)定數(shù)據(jù)與RTW環(huán)境下保存出來的數(shù)據(jù)有著明顯的差別,除去表述形式和運(yùn)算關(guān)系不完全相同外,它們的二維數(shù)組形式互為轉(zhuǎn)置,即二者的坐標(biāo)軸也相反。就需要對數(shù)據(jù)進(jìn)行處理,將二維的數(shù)組進(jìn)行轉(zhuǎn)置。而且有部分?jǐn)?shù)據(jù)仍以字符的形式存在,這些數(shù)據(jù)轉(zhuǎn)化后很可能無法被RTW環(huán)境集成的軟件讀取,所以需要根據(jù)字符對應(yīng)關(guān)系進(jìn)行逆轉(zhuǎn)換,從字符形式轉(zhuǎn)變?yōu)閿?shù)值形式。
圖1 Targetlink平臺下數(shù)據(jù)格式轉(zhuǎn)換示意圖
本文使用m語言在Matlab環(huán)境下開發(fā)了自動運(yùn)行的數(shù)據(jù)轉(zhuǎn)置處理腳本。腳本讀取par格式數(shù)據(jù)文件,檢索其中的二維數(shù)組并進(jìn)行轉(zhuǎn)置。同時(shí)檢測數(shù)據(jù)中字符格式的數(shù)據(jù),通過讀取其對應(yīng)關(guān)系將數(shù)據(jù)轉(zhuǎn)變?yōu)閿?shù)值格式。最后將數(shù)據(jù)以par文件格式進(jìn)行保存。其邏輯拓?fù)鋱D如圖2所示。
圖2 腳本邏輯拓?fù)鋱D
1.3 讀取轉(zhuǎn)換數(shù)據(jù)
最后要將數(shù)據(jù)格式轉(zhuǎn)變?yōu)镽TW平臺下定義的格式。使用開發(fā)的腳本對轉(zhuǎn)化后的標(biāo)定數(shù)據(jù)進(jìn)行數(shù)值處理后,所得的數(shù)據(jù)格式與RTW平臺下的軟件讀寫格式相同,即可以被直接讀取。但是在RTW平臺下,如果直接使用a2l文件讀取數(shù)據(jù),讀取到的數(shù)值會產(chǎn)生錯(cuò)誤。原因是標(biāo)定數(shù)據(jù)的狀態(tài)仍處于模型初始定標(biāo)的狀態(tài),該數(shù)據(jù)只能被模型生成的初始狀態(tài)的a2l文件所翻譯,使用具有換算關(guān)系的a2l文件讀取數(shù)據(jù)時(shí),會由于轉(zhuǎn)換關(guān)系的不同而導(dǎo)致錯(cuò)誤。所以此時(shí)需要使用RTW平臺模型生成的初始未修改狀態(tài)的a2l文件來轉(zhuǎn)換標(biāo)定數(shù)據(jù),轉(zhuǎn)換完畢后以物理值的形式存儲在par文件中。由于par文件可以保存數(shù)據(jù)的兩種格式,就可以包含著物理值的格式。而后使用RTW平臺的a2l文件即可讀取保存出的par文件,并加載到工程中。讀取轉(zhuǎn)換數(shù)據(jù)的示意圖如圖3所示。
圖3 RTW平臺下數(shù)據(jù)轉(zhuǎn)化示意圖
轉(zhuǎn)換方法針對Targetlink和RTW環(huán)境集成的代碼,使用CANape和Matlab軟件環(huán)境完成任務(wù),分別負(fù)責(zé)數(shù)據(jù)的讀寫和運(yùn)行自動腳本。實(shí)現(xiàn)標(biāo)定數(shù)據(jù)從MCU中讀取,轉(zhuǎn)化,最后寫入MCU的過程。為簡化轉(zhuǎn)換流程,獲得標(biāo)定數(shù)據(jù)后,使用CANape軟件內(nèi)對數(shù)據(jù)操作支持較好的CDM Studio工具對標(biāo)定數(shù)據(jù)進(jìn)行轉(zhuǎn)換。