馬培義,王燁,徐瑞雪,王祺明,朱成,周沛澤
?
一種手寫代碼轉(zhuǎn)換為Matlab模型的研究
馬培義,王燁,徐瑞雪,王祺明,朱成,周沛澤
(安徽江淮汽車集團(tuán)股份有限公司,安徽 合肥 230601)
文章首先對開發(fā)背景進(jìn)行簡單介紹,在此基礎(chǔ)上,著重介紹如何實(shí)現(xiàn)將手寫代碼轉(zhuǎn)換為Matlab建模語言,并將生成的代碼與底層接口函數(shù)進(jìn)行集成、編譯、刷寫到TCU中,用CANape標(biāo)定工具對控制程序進(jìn)行調(diào)試和測試,經(jīng)對測試結(jié)果的分析,驗(yàn)證了該方法功能正確,滿足要求,可以應(yīng)用。
手寫代碼;接口調(diào)用
軟件開發(fā)初期,為了能夠及時(shí)地滿足軟件調(diào)試進(jìn)度,對于輸入、輸出接口,經(jīng)常用手寫代碼實(shí)現(xiàn),當(dāng)軟件需要實(shí)現(xiàn)平臺化時(shí),根據(jù)不同的需求,需要對手寫代碼進(jìn)行變更。由此帶來的問題有:1)手寫代碼維護(hù)性差;2)手寫代碼閱讀性差;3)無法實(shí)現(xiàn)功能模塊化。
因此,為了解決手寫代碼存在的問題,且結(jié)合當(dāng)前軟件實(shí)現(xiàn)方式,需要將手寫代碼轉(zhuǎn)換為Matlab建模的方式,實(shí)現(xiàn)同樣的功能。進(jìn)而增加軟件的可維護(hù)性、閱讀性以及功能模塊化。
手寫代碼轉(zhuǎn)換為Matlab模型需要遵循以下原則:
1)不能打亂當(dāng)前的軟件架構(gòu),建議按照AUTOSAR架構(gòu)進(jìn)行設(shè)計(jì),方面后期的維護(hù);
2)模型搭建需要遵循MAAB建模規(guī)范(MathWorks Automotive Advisory Board);
3)軟件邏輯搭建需要正確、準(zhǔn)確地實(shí)現(xiàn)當(dāng)前手寫代碼的全部功能。
按照上述原則,且為了能夠與軟件實(shí)現(xiàn)無縫連接,設(shè)計(jì)底層手寫代碼轉(zhuǎn)換為Matlab建模方式的軟件架構(gòu)如圖1所示,包括:1)軟件輸入接口調(diào)用:模擬量/頻率量/CAN信號輸入;2)信號處理:對采集的各種輸入信號進(jìn)行處理,轉(zhuǎn)化為控制軟件內(nèi)部信號;3)信號輸出:將完成處理的信號進(jìn)行打包,輸出到軟件功能模塊;4)軟件功能模塊:實(shí)現(xiàn)軟件功能;5)輸出接口:執(zhí)行軟件功能的結(jié)果,控制電磁閥或者輸出對應(yīng)的CAN信號。

圖1 底層手寫代碼轉(zhuǎn)換為Matlab建模方式軟件架構(gòu)
這里將介紹軟件輸入接口的調(diào)用,來說明手寫代碼如何使用Matlab中實(shí)現(xiàn)軟件接口的調(diào)用。
1)在軟件中增加TCU_Input subsystem模塊,作為軟件輸入接口的功能模塊。為了提升軟件模塊的可讀性,對該功能模塊進(jìn)行屬性編輯,如下圖2所示。

圖2 輸入模塊屬性編輯
2)在TCU input模塊中增加輸入量讀取邏輯,并從Targetlink模塊庫中將function增加到Matlab編輯界面,為了保證在生成代碼時(shí),所有的輸入函數(shù)集成到一個(gè)文件下,對function聲明如圖3所示:

圖3 function聲明

圖4 軟件接口調(diào)用function定義
在Fork2_6_Read模塊中增加相應(yīng)的軟件接口邏輯,軟件接口function的定義如4所示。其中Step function name中為軟件接口函數(shù)名稱,其他的function name可根據(jù)需要進(jìn)行定義。
至此,已經(jīng)完成軟件輸入接口調(diào)用的實(shí)現(xiàn),對于信號處理、信號輸出等模塊,只需要按照手寫代碼的處理邏輯進(jìn)行搭建即可。
根據(jù)2.2中設(shè)計(jì)的軟件架構(gòu),結(jié)合2.3中的軟件接口調(diào)用實(shí)現(xiàn),在Matlab環(huán)境中完成模型設(shè)計(jì)后,將模型轉(zhuǎn)化為TargetLink模型,并編制相應(yīng)的測試用例,完成MIL測試,若仿真測試結(jié)果滿足需求,則可以進(jìn)行代碼的生成和集成工作。代碼生成后,配置合適的編譯環(huán)境并編譯形成可執(zhí)行S19文件。在TargetLink環(huán)境下基于模型生成A2L文件,為標(biāo)定做準(zhǔn)備。然后,利用刷寫調(diào)試工具將S19文件下載到TCU中,最后在整車上進(jìn)行調(diào)試。
為了驗(yàn)證上述模型中軟件接口調(diào)用策略是否正確,利用CANape工具,建立調(diào)試環(huán)境,對撥叉位置信號進(jìn)行采集調(diào)試。
在CANape界面中添加Database,導(dǎo)入生成的A2L文件,形成配置環(huán)境。新建適用于測試軟件接口調(diào)用的界面,將需要檢測的輸入接口信號以圖表或數(shù)字形式顯示,包括:離合器壓力傳感器電壓值、離合器溫度電壓值、實(shí)際檔位電壓值、各轉(zhuǎn)速信號原始值。最終形成如圖5所示調(diào)試界面:

圖5 調(diào)試界面
輸入接口調(diào)用的調(diào)試,主要是驗(yàn)證集成的輸入接口是否與手寫代碼表現(xiàn)一致,因此,在整車靜態(tài)時(shí),通過脫開離合器,進(jìn)行手動(dòng)掛檔測試。
1)撥叉2/6檔檔位測試:
整車中,手動(dòng)控制撥叉動(dòng)作,檢查實(shí)際撥叉?zhèn)鞲衅麟妷褐岛蛯?shí)際撥叉位置是否與設(shè)定值一致。下圖6為手動(dòng)掛檔測試結(jié)果。

圖6 手動(dòng)掛檔測試結(jié)果
基于上述測試結(jié)果,手寫代碼轉(zhuǎn)換為Matlab建模方式能夠?qū)崿F(xiàn)控制要求。
本論文通過手寫代碼轉(zhuǎn)換為Matlab建模語言的方法介紹,實(shí)現(xiàn)與手寫代碼功能一致的軟件,利用CANape標(biāo)定工具對生成的軟件進(jìn)行調(diào)試,經(jīng)對測試結(jié)果的分析,驗(yàn)證手寫代碼轉(zhuǎn)換為Matlab建模方法功能正確,結(jié)果符合要求,可應(yīng)用到整車軟件中。
[1] 陳然,孫東野,劉永剛.雙離合器式自動(dòng)變速器建模與控制系統(tǒng)仿真[J].重慶大學(xué)學(xué)報(bào):自然科學(xué)版,2010,33(09):1-7.
[2] 趙志國,刁威振,王琪,胡笑天.干式DCT控制系統(tǒng)硬件在環(huán)仿真試驗(yàn)臺開發(fā)[J] .汽車工程, 2012,34(11) 1024-1032.
[3] 劉國強(qiáng),孫偉,陳德民,郭曉林.基于多傳感器技術(shù)的雙離合器自動(dòng)變速器控制系統(tǒng)研究[J].計(jì)算機(jī)測量與控制,2012,20(05):1229 -1231.
[4] 張祥,楊志剛,張彥生.汽車AMT系統(tǒng)的Matlab/Simulink建模與仿真[J].系統(tǒng)仿真學(xué)報(bào),2007, 19(14):3339-3343.
Manual Code Integrate Method
Ma Peiyi, Wang Ye, Xu Ruixue, Wang Qiming, Zhu Cheng, Zhou Peize
( Anhui Jianghuai Automobile CO., LTD., Anhui Hefei 230601 )
This paper firstly gives a rough instruction about the background, and give a detailed method about how to translate the manual to Matlab/Simulink model, then generate c# code, and then compile the code to S19 file and using flash -ing tool to download into TCU. At last, use CANape to do the testing, finally analyze the results and get the conclusion that this control software has correct function and meet the requests, can be used in DCT system.
Manual code; Interface callback
B
1671-7988(2018)22-46-03
V217
B
1671-7988(2018)22-46-03
V217
馬培義(1989-),男,本科,電控設(shè)計(jì)工程師,就職于安徽江濰汽車集團(tuán)股份有限公司。
10.16638/j.cnki.1671-7988.2018.22.015