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