張寶棟
摘 要:結(jié)合對(duì)火炮初速減退量進(jìn)行準(zhǔn)確修正的迫切需求,本文對(duì)基于Simulink仿真模型的MBD開發(fā)流程進(jìn)行了研究,根據(jù)已建立好的火炮燒蝕磨損內(nèi)彈道仿真模型,對(duì)自動(dòng)生成代碼進(jìn)行了參數(shù)配置,實(shí)現(xiàn)了仿真模型代碼的自動(dòng)生成,減少了系統(tǒng)開發(fā)周期,為模型的工程化應(yīng)用奠定了基礎(chǔ)。
關(guān)鍵詞:內(nèi)彈道模型;自動(dòng)代碼生成
1引言
基于模型設(shè)計(jì)的開發(fā)流程,開發(fā)人員在Simulink環(huán)境下建立仿真模型并進(jìn)行仿真,進(jìn)行早期設(shè)計(jì)的驗(yàn)證,當(dāng)仿真結(jié)果符合開發(fā)要求時(shí),使用Embedded Coder技術(shù)可自動(dòng)生成嵌入式的產(chǎn)品級(jí)代碼,應(yīng)用于硬件平臺(tái)上。克服了傳統(tǒng)手工編碼開發(fā)周期長、實(shí)現(xiàn)復(fù)雜且經(jīng)常引入錯(cuò)誤以及不易于保持MATLAB參考代碼與C代碼的一致性等缺點(diǎn),并且可對(duì)代碼進(jìn)行非實(shí)時(shí)與實(shí)時(shí)環(huán)境下的驗(yàn)證與測試,保證了工程的可靠性和實(shí)時(shí)性,大大提高了嵌入式開發(fā)的效率,加快了開發(fā)進(jìn)程。
2模型參數(shù)配置
以某型125mm高膛壓坦克炮穿甲彈,標(biāo)準(zhǔn)條件下新炮起動(dòng)壓力約為30MPa,常溫初速小于1740m/s,平均最大膛壓小于等于470.4MPa,發(fā)射藥為“**/**H花高”,基于MATLAB中的Simulink庫建立內(nèi)彈道仿真模型,根據(jù)坦克炮(新炮)的內(nèi)彈道相關(guān)參數(shù),對(duì)模型進(jìn)行仿真,得到在標(biāo)準(zhǔn)條件下坦克炮內(nèi)彈道的仿真結(jié)果如圖1所示。
圖1 某型坦克炮穿甲彈彈丸速度、膛壓仿真曲線
從上圖中可以看出,該型坦克炮穿甲彈彈丸初速約為1721m/s,起動(dòng)壓力約為30MPa,約在3.51ms處達(dá)到最大膛壓464.7MPa,與該炮標(biāo)準(zhǔn)數(shù)據(jù)相吻合,證明了內(nèi)彈道模型的可靠性。
3模型代碼生成
建立磨損火炮的內(nèi)彈道仿真模型之后,為實(shí)現(xiàn)模型的工程化應(yīng)用,將內(nèi)彈道模型應(yīng)用硬件系統(tǒng)當(dāng)中,完成射彈初速的計(jì)算功能,需要生成嵌入式代碼。MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,提供了三種代碼的自動(dòng)生成工具:MATLAB Coder,Simulink Coder和Embedded Coder,其中,MATLAB Coder可以自動(dòng)實(shí)現(xiàn)MATLAB代碼生成C/C++代碼;Simulink Coder可以自動(dòng)從Simulink/Stateflow模型生成C/C++代碼,但以上兩種工具生成的代碼均不能直接用于嵌入式系統(tǒng),而Embedded Coder可以自動(dòng)生成可重用、結(jié)構(gòu)緊湊且執(zhí)行快速的實(shí)時(shí)C代碼,故本文利用Embedded Coder工具完后模型代碼的生成工作[1]。
在進(jìn)行代碼生成之前,必須對(duì)模型的參數(shù)進(jìn)行配置,為生成嵌入式代碼,至少需要配置3部分:模型的解算器solver,模型的系統(tǒng)目標(biāo)文件(如ert.tlc或其他自定義的嵌入式系統(tǒng)目標(biāo)文件),硬件實(shí)現(xiàn)規(guī)定(Hardware Implenmatation)[1]。
求解器solver的設(shè)置,主要包括仿真時(shí)間范圍、起始和停止時(shí)間、仿真步長和選擇合適的仿真解法[2]。具體操作如下:按下Ctrl+E打開模型的Configuration Parameter對(duì)話框,解算器類型選擇固定點(diǎn)解算器,長度為0.01s,求解算法選擇為Runge-Kutta法。對(duì)目標(biāo)硬件規(guī)格(Hardware Implementation)進(jìn)行設(shè)置,在這個(gè)選項(xiàng)卡中可以配置芯片的廠商和類型,設(shè)置芯片的字長、字節(jié)順序等。最后一個(gè)關(guān)鍵的配置是控制整個(gè)代碼生成過程的系統(tǒng)目標(biāo)文件System Target File,ert.tlc文件是Embedded Coder提供的能夠生成專門用于嵌入式系統(tǒng)C代碼的系統(tǒng)目標(biāo)文件,代碼格式是一種專為生成產(chǎn)品級(jí)代碼而設(shè)計(jì)的緊縮型代碼格式,占用的內(nèi)存較少[3]。
4代碼驗(yàn)證
為了驗(yàn)證用于代碼生成的模型與自動(dòng)生成代碼的一致性,在代碼移植在底層驅(qū)動(dòng)前,需要對(duì)代碼進(jìn)行驗(yàn)證,主要是為了避免代碼生成過程中可能引入的錯(cuò)誤,錯(cuò)誤主要來源于兩方面,一是來自于代碼生成工具本身,代碼生成工具作為一款軟件,和其它軟件一樣,都可能存在一定的bug;二是來自于代碼生成用戶,代碼生成過程是一個(gè)可以定制化的過程,如果定制化的過程沒有經(jīng)過嚴(yán)格、充分的驗(yàn)證,也很容易引入bug。因此,為了防止這類bug生成不正確的代碼,在MBD開發(fā)流程中,常用軟件在環(huán)測試(Software-in-the-Loop,SIL)進(jìn)行模型代碼驗(yàn)證。
5結(jié)論
本文通過對(duì)MBD開發(fā)流程進(jìn)行分析,依據(jù)MBD開發(fā)流程,建立了內(nèi)彈道仿真模型,仿真結(jié)果與標(biāo)準(zhǔn)數(shù)據(jù)相符,證明了模型的準(zhǔn)確性,然后對(duì)模型參數(shù)進(jìn)行配置,自動(dòng)生成嵌入式代碼,利用SIL軟件在環(huán)仿真,對(duì)代碼進(jìn)行了一致性檢驗(yàn),為火炮領(lǐng)域仿真模型的工程化應(yīng)用奠定了基礎(chǔ)。
參考文獻(xiàn):
[1]孫君瀟,Simulink仿真及代碼生成技術(shù)入門到靜通[M],北京:北京航空航天大學(xué)出版社,2015.
[2]陳亮,郝洪濤,倪凡凡等,雙離合自動(dòng)變速器系統(tǒng)建模與代碼自動(dòng)生成的研究[J].傳動(dòng)技術(shù),2018,32(2):3-12.
[3]邱寶梅,左文英,王鳳娟.基于Simulink/RTW的汽車電子控制系統(tǒng)的研究[J].計(jì)算機(jī)測量與控制,2011,19(5):1086-1088.