汽車控制器開發(fā)軟件的在環(huán)測試方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及汽車電子領(lǐng)域,特別是涉及一種汽車控制器開發(fā)軟件的在環(huán)測試方 法。
【背景技術(shù)】
[0002] 汽車控制器研發(fā)算法建模(浮點模型)完成后,對算法模型進行定標處理得到定 點模型,然后利用美國邁斯沃克(MathWorks)公司開發(fā)的工業(yè)標準建模工具MTLAB軟件中 的自動代碼生成工具巧ealTimeWorkshop,RTW)或德國dSPACE公司的自動代碼生成工具 TargetLink對定點模型進行自動代碼生成,對生成的代碼需要進行進一步測試,W驗證模 型到代碼的一致性,確定模型的定標是否準確,采用軟件在環(huán)(Software-in-loop,SIL)測 試是一種有效的方式。
[0003] 傳統(tǒng)汽車控制器開發(fā)軟件在環(huán)測試方法是利用自動代碼生成工具RTW或 TargetLink對模型生成S-化nction封裝,進后在MATLAB環(huán)境下進行仿真測試。傳統(tǒng)的汽 車控制器開發(fā)軟件在環(huán)測試方法具有W下缺點:
[0004] 1.方法不夠靈活。對使用自動代碼生成工具RTW生成的代碼和使用TargetLink 工具生成的代碼,兩者不能交互,只能在本工具下使用本工具所生成的代碼。
[0005] 2.自動代碼生成工具RTW或TargetLink進行S-化nction封裝的代碼并不是產(chǎn)品 級的代碼,不能很好的反映軟件在環(huán)測試結(jié)果。
[0006] 3.自動代碼生成工具RTW進行軟件在環(huán)測試有一定局限性,結(jié)果不夠準確; TargetLink工具進行軟件在環(huán)測試步驟比較繁瑣,使用TargetLink需要購買許可 (license),增加了成本。
[0007] 4.對手工代碼無法直接使用工具進行軟件在環(huán)測試測試。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明要解決的技術(shù)問題是提供一種對定點模型源代碼錄入形式無限制能直接 對產(chǎn)品級代碼進行測試的汽車控制器開發(fā)軟件在環(huán)測試方法。所述產(chǎn)品級代碼是指能直接 應(yīng)用于產(chǎn)品的源代碼。
[0009] 為解決上述技術(shù)問題,本發(fā)明的汽車控制器開發(fā)軟件的在環(huán)測試方法,包括:
[0010] 1)取得汽車控制器定點模型源代碼,利用工業(yè)標準建模工具MTLAB軟件對定點 模型源代碼進行源代碼封裝形成S-化nctionC文件;
[0011] 2)在MTLAB環(huán)境下利用mex命令對S-化nctionC文件進行編譯,生成一個與 S-化nctionC文件同名的動態(tài)鏈接庫文件;
[0012] 3)在MATLAB環(huán)境下運行S-化nction模塊并將S-化nction模塊名改為所述動 態(tài)鏈接庫文件名,使S-化nction模塊與動態(tài)鏈接庫相關(guān)聯(lián),更新模型,生成封裝源代碼的 S-function模塊;
[0013] 4)將步驟3)生成封裝源代碼的S-化nction模塊與原始浮點模型放在同一新建模 型中添加測試例,形成測試模型;新建模型是新建的工程;利用MTLAB軟件建模的時候首 先要打開一個空白的模型,送就相當(dāng)于一個新建的模型,然后再在送個空白的模型中加入 必要的模型W實現(xiàn)某一特定的功能。
[0014] 5)仿真測試模型得到S-化nction模塊代碼運行結(jié)果和原始浮點模型運行結(jié)果, 對上述兩種輸出結(jié)果進行減法運算,再對減法后的結(jié)果取絕對值,得到S-化nction模塊代 碼運行結(jié)果相對原始浮點模型運行結(jié)果的誤差。
[0015] 本發(fā)明的汽車控制器研發(fā)在環(huán)測試方法對定點模型源代碼錄入形式無限制(手 寫或自動生成均可)能直接對產(chǎn)品級代碼進行測試的汽車控制器開發(fā)軟件在環(huán)測試方法 采用本發(fā)明后,只需在MTLAB環(huán)境下對測試模型進行仿真,即能得到S-化nction模塊代碼 運行結(jié)果相對原始浮點模型運行結(jié)果的誤差,得到仿真波形和數(shù)據(jù)。本發(fā)明的在環(huán)測試方 法避免了依賴第Η方工具,節(jié)省了成本,操作更加方便,能直接對產(chǎn)品級代碼進行測試,結(jié) 果更具有可信性。
【附圖說明】
[0016] 下面結(jié)合附圖與【具體實施方式】對本發(fā)明作進一步詳細的說明:
[0017] 圖1是本發(fā)明的流程示意圖,W自動生成代碼為例。
【具體實施方式】
[0018] 本發(fā)明提供一種汽車控制器開發(fā)軟件的在環(huán)測試方法,包括:
[0019] 1)取得手動錄入或軟件自動生成的汽車控制器定點模型源代碼,利用工業(yè)標準建 模工具MTLAB軟件對定點模型源代碼進行源代碼封裝形成S-化nctionC文件;WC源代 碼封裝為例,其過程如下:
[0020] ①利用美國邁斯沃克(MathWorks)公司開發(fā)的工業(yè)標準建模工具MTLAB軟件實 現(xiàn)對C源代碼的封裝。在MATLAB的Simulink模塊庫下打開S-化nction模塊的C文件模 板"BasicC-MEXTemplate",并另存為到工作路徑下。
[0021] ②在S-化nctionC文件下,修改代碼中的S_FUNCTI0N_NAME與該C文件名一致。
[0022] ⑨在S-化nctionC文件中的"#include"位置把要封裝的源代碼的C文件、頭文 件包含進來,格式為"#^(:111(16<頭文件名/C文件名〉"。
[0023] ④在S-functionC文件中的初始化函數(shù)mdllnitializeSizesQ中定義輸入輸出 個數(shù)和數(shù)據(jù)類型,如定義兩個intl6形式的輸入端口代碼如下:
[0024]
[00巧]⑤在S-化nction C文件中的模型輸出函數(shù)mdlOu化utsο中定義S-化nction的輸入輸出端口與外部變量的對應(yīng)關(guān)系,首先把S-化nction的輸入信號賦給源代碼中 的輸入全局變量,然后調(diào)用源代碼中主函數(shù),最后把源代碼中的輸出全局變量的值賦給 S-function的輸出信號,至此S-function C文件封裝完畢。
[0026] 2)在MATLAB環(huán)境下利用mex命令對S-化nction C文件進行編譯,生成一個與 S-化nction C文件同名的動態(tài)鏈接庫文件.mexw32 ;該文件用于S-化nction模塊的生成和 模型仿真。.mexw32是動態(tài)鏈接庫文件的后綴名。
[0027] 3)在MATLAB環(huán)境下運行S-化nction模塊并將S-化nction模塊名改為所述動 態(tài)鏈接庫文件名,使S-化nction模塊與動態(tài)鏈接庫相關(guān)聯(lián),更新模型,生成封裝源代碼的 S-化nction模塊;該模塊調(diào)用S-化nction C文件同名的動態(tài)鏈接庫文件,用于后面的建模 仿真。
[0028] 4)將步驟3)生成封裝源代碼的S-化nction模塊與原始浮點模型放在同一新建模 型中添加測試例,形成測試模型;添加的測試例根據(jù)測試需求設(shè)置,例如接口、信宿等模塊。
[0029] 5)仿真測試模型得到S-化nction模塊代碼運行結(jié)果和原始浮點模型運行結(jié)果, 利用MTLAB庫中加減法模塊Add對上述兩種輸出結(jié)果進行減法運算,再利用MTLAB庫中 的取絕對值模塊abs對減法后的結(jié)果取絕對值,得到S-化nction模塊代碼運行結(jié)果相對原 始浮點模型運行結(jié)果的誤差,即軟件在環(huán)測試結(jié)果。若兩者誤差小于等于設(shè)計需求則完成 汽車控制器開發(fā)軟件研發(fā),若兩者誤差大于設(shè)計需求則進行調(diào)試修改后再次進行本發(fā)明在 環(huán)測試。
[0030] W上通過【具體實施方式】和實施例對本發(fā)明進行了詳細的說明,但送些并非構(gòu)成對 本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改 進,送些也應(yīng)視為本發(fā)明的保護范圍。
【主權(quán)項】
1. 一種汽車控制器開發(fā)軟件的在環(huán)測試方法,其特征是,包括: 1) 取得汽車控制器定點模型源代碼,利用工業(yè)標準建模工具MATLAB軟件對定點模型 源代碼進行源代碼封裝形成S-functionC文件; 2) 在MATLAB環(huán)境下利用mex命令對S-functionC文件進行編譯,生成一個與 S-functionC文件同名的動態(tài)鏈接庫文件; 3) 在MATLAB環(huán)境下運行S-function模塊并將S-function模塊名改為所述動態(tài) 鏈接庫文件名,使S-function模塊與動態(tài)鏈接庫相關(guān)聯(lián),更新模型,生成封裝源代碼的 S-function模塊; 4) 將步驟3)生成封裝源代碼的S-function模塊與原始浮點模型放在同一新建模型中 添加測試例,形成測試模型; 5) 仿真測試模型得到S-function模塊代碼運行結(jié)果和原始浮點模型運行結(jié)果,對上 述兩種輸出結(jié)果進行減法運算,再對減法后的結(jié)果取絕對值,得到S-function模塊代碼運 行結(jié)果相對原始浮點模型運行結(jié)果的誤差,即軟件在環(huán)測試結(jié)果。
【專利摘要】本發(fā)明公開了一種汽車控制器開發(fā)軟件的在環(huán)測試方法,包括:取得汽車控制器定點模型源代碼封裝形成S-function?C文件;對S-function?C文件進行編譯生成與S-function?C文件同名的動態(tài)鏈接庫文件;將S-function模塊名改為所述動態(tài)鏈接庫文件名,生成封裝源代碼的S-function模塊;將封裝源代碼的S-function模塊與原始浮點模型放在同一新建模型中添加測試例形成測試模型;仿真測試模型得到S-function模塊代碼運行結(jié)果和原始浮點模型運行結(jié)果,對上述兩種輸出結(jié)果進行減法運算,再對減法后的結(jié)果取絕對值,得到S-function模塊代碼運行結(jié)果相對原始浮點模型運行結(jié)果的誤差。本發(fā)明的在環(huán)測試方法避免了依賴第三方工具,節(jié)省了成本,操作更加方便,能直接對產(chǎn)品級代碼進行測試,結(jié)果更具有可信性。
【IPC分類】G06F11/36
【公開號】CN105279081
【申請?zhí)枴緾N201410333438
【發(fā)明人】夏洪濤, 鄭鴻云, 王靜
【申請人】聯(lián)創(chuàng)汽車電子有限公司
【公開日】2016年1月27日
【申請日】2014年7月14日