董剛
(煙臺汽車工程職業(yè)學(xué)院 機(jī)電工程系, 煙臺 265500)
設(shè)計(jì)開發(fā)汽車電控系統(tǒng)多采用串行模式開發(fā)流程實(shí)現(xiàn),此種方式所需的設(shè)計(jì)周期較長,成本較高,隨著設(shè)計(jì)內(nèi)容及模糊設(shè)計(jì)參數(shù)的不斷增多,極大的增加了程序人員的工作量,以滿足大型系統(tǒng)的設(shè)計(jì)需求[1]。基于模型的設(shè)計(jì)方法可提升開發(fā)效率,在代碼自動生成技術(shù)方面RTW(Mathworks 公司)發(fā)展較為成熟,RTW自動生成嵌入式代碼省去了手工編程的操作規(guī)程,本文結(jié)合了RTW代碼生成技術(shù),實(shí)現(xiàn)了汽車電子實(shí)時控制系統(tǒng)開發(fā)[2]。
開發(fā)人員通過基于模型的設(shè)計(jì)方法的運(yùn)用,可使系統(tǒng)的測試和仿真環(huán)節(jié)在設(shè)計(jì)初期通過實(shí)際可行的模型的運(yùn)用得以實(shí)現(xiàn),并且在時間上保證了各設(shè)計(jì)部門間獨(dú)立性,通過分工協(xié)作的設(shè)計(jì)模式顯著提升了設(shè)計(jì)的效率。代碼生成技術(shù)極大地簡化軟件開發(fā)過程,顯著降低了程序人員代碼編寫的工作量,使其能夠在設(shè)計(jì)和優(yōu)化控制算法上投入更多的時間和精力。
為保證從系統(tǒng)需求到設(shè)計(jì)與實(shí)現(xiàn)的整個過程中的一致性和可靠性,本文在設(shè)計(jì)汽車電控系統(tǒng)時采用了基于Simulink/ RTW的設(shè)計(jì)方法,具體的設(shè)計(jì)過程為:在對Simulink強(qiáng)大的圖形建模技術(shù)充分利用的基礎(chǔ)上,完成系統(tǒng)模型的創(chuàng)建,使該模型具備可視化、圖形化的特點(diǎn), 并通過仿真試驗(yàn)驗(yàn)證該模型的有效性,在仿真驗(yàn)證結(jié)果準(zhǔn)確適用的情況下,開發(fā)汽車電子控制系統(tǒng)時利用RTW自動生成目標(biāo)語言代碼的功能,具體的系統(tǒng)開發(fā)流程如圖1所示。

圖1 基于Simulink的系統(tǒng)設(shè)計(jì)流程
本文以其發(fā)動機(jī)控制系統(tǒng)為例,對基于Simulink/RTW的汽車電子控制系統(tǒng)的設(shè)計(jì)方法的開發(fā)流程進(jìn)行詳細(xì)介紹[3]。
對復(fù)雜系統(tǒng)通過基于模型的設(shè)計(jì)方法能夠?qū)崿F(xiàn)圖形化的設(shè)計(jì),并且具有良好的規(guī)范要求,其所集成的工具功能較為全面,包括模型設(shè)計(jì)、仿真測試和代碼生成等,保證了程序和需求的一致性,對于設(shè)計(jì)好的系統(tǒng)模型易于做出相應(yīng)的修改,在設(shè)計(jì)的早期階段通過性能評估發(fā)現(xiàn)并改善設(shè)計(jì)缺陷[4]。可使用Simulink已有模塊或自定義功能模塊實(shí)現(xiàn)完成控制算法的設(shè)計(jì);Simulink具備支持子系統(tǒng)和多層模型的優(yōu)勢,據(jù)此在實(shí)際建立控制系統(tǒng)模型時從模塊入手,采取逐層遞進(jìn)的方式具備清晰簡潔層次的仿真模型的建立。然后對建立好的控制模型及控制算法進(jìn)行反復(fù)仿真測試、驗(yàn)證,此過程同樣通過Simulink 提供的仿真調(diào)試功能及可實(shí)現(xiàn),根據(jù)測試結(jié)果不斷優(yōu)化模型直至滿足設(shè)計(jì)需求。發(fā)動機(jī)控制系統(tǒng)仿真模型框圖如圖2所示,將封裝后的模型的最上層形式保存為engine.mdl,發(fā)動機(jī)控制系統(tǒng)仿真模型如圖3所示[5]。

圖2 發(fā)動機(jī)模型框圖

圖3 發(fā)動機(jī)控制系統(tǒng)仿真模型
代碼自動生成工具RTW(由MathWorks公司提供),能夠使采用Simulink建立的模型所面向不同目標(biāo)的代碼實(shí)現(xiàn)自動生成,與此同時RTW還提供了一個開放的接口,滿足用戶的拓展接入需求,在設(shè)置RTW配置時不同的系統(tǒng)目標(biāo)文件所對應(yīng)的目標(biāo)代碼也不同,為用戶提供了豐富的選擇方案,鑒于RTW只支持定步長積分器需進(jìn)行選項(xiàng)卡設(shè)置以避免代碼生成過程中報錯,具體需在Solver options設(shè)置其中的Type為Fixed-step,本文選用ert .tlc系統(tǒng)目標(biāo)文件,其所對應(yīng)的緊縮型代碼格式專為生成產(chǎn)品級代碼而設(shè)計(jì),占用內(nèi)存小,RTW生成的嵌入式代碼符合程序員編寫代碼規(guī)范,比較緊湊,具有良好的可讀性和一致性, 能夠滿足嵌入式系統(tǒng)的需求[6],RTW所自動生成的核心函數(shù)代碼如下:
void engine step(int T tid)
{
// rtb dbl tmp和rtb dbl tmp b為中間變量
real T rtb dbl tmp b;
// engine Y.Torque1計(jì)算過程
engine B.Add4=engine B.Fcnpf2+engine B.Fcn3;
rtb dbl tmp =engine B.Add4;
rtb dbl tmp b =engine B.s2;
engine B.Fcn4=9.5500000000000007*
rtb dbl tmp /rtb dbl tmp b;
// 得到 engine Y.Torque1運(yùn)算結(jié)果
}
在對整套系統(tǒng)運(yùn)行進(jìn)行控制的過程中,上位機(jī)起到驅(qū)動樞紐的作用,是仿真系統(tǒng)的主控機(jī),通過這一人機(jī)交互界面操作者能夠?qū)φ麄€仿真的過程進(jìn)行有效的管理和控制,觀測仿真結(jié)果,同時對涉及到的各種數(shù)據(jù)處理工作可通過調(diào)用其它應(yīng)用軟件實(shí)現(xiàn),便于維護(hù)及擴(kuò)展。對底層硬件的操作則通過整個軟件程序?qū)崿F(xiàn),具備良好的可移植性,通過Simulink強(qiáng)大的建模和仿真功能完成模型的構(gòu)建,為快速、連續(xù)的完成整個控制系統(tǒng)的開發(fā)過程,充分利用VC(軟件運(yùn)行庫)強(qiáng)大的界面功能及其可定制性,上位機(jī)軟件平臺具體的結(jié)構(gòu)如圖4所示[7]。

圖4 上位機(jī)軟件平臺結(jié)構(gòu)
仿真初始化負(fù)責(zé)設(shè)置仿真時間及步長等,在Simulink里已搭建完仿真模型并對其進(jìn)行了驗(yàn)證,因此無需在VC中修改模型,只需打開Simulink模型(以圖片的形式);仿真模型控制主要包括運(yùn)行、 暫停、 停止等;相應(yīng)模型參數(shù)數(shù)值的修改通過模型參數(shù)設(shè)置對話框的形式即可實(shí)現(xiàn),通過將參數(shù)變量(于代碼生成階段生成)同對話框中的Edit控件進(jìn)行關(guān)聯(lián)處理,以實(shí)現(xiàn)通過Edit控件的值的修改完成模型參數(shù)的調(diào)整;仿真結(jié)果顯示的功能在于在具體的仿真過程中,模型在每個步長時間的計(jì)算結(jié)果通過engine step ()函數(shù)的調(diào)用完成,最終通過虛擬儀表的形式實(shí)時顯示獲取的ECU的控制信號及仿真模型的輸出信號等[8]。
為驗(yàn)證本文所設(shè)計(jì)的基于Simulink的汽車電子控制系統(tǒng)的準(zhǔn)確性,本文僅以扭矩與空燃比為例,將發(fā)動機(jī)控制系統(tǒng)實(shí)際在VC運(yùn)行中的仿真結(jié)果同在Simulink中的仿真結(jié)果進(jìn)行對比,發(fā)動機(jī)控制系統(tǒng)在實(shí)時仿真時間為50 s內(nèi)運(yùn)行終了時的曲線變化結(jié)果如圖5所示。


圖5 在VC中扭矩與空燃比的仿真結(jié)果
在Simulink中運(yùn)行終了時的曲線變化仿真結(jié)果如圖6所示,觀察圖5仿真結(jié)果可證明模型計(jì)算值變化同實(shí)際情況的追隨性較好,達(dá)到了仿真的要求,在VC與Simulink中發(fā)動機(jī)控制模型的運(yùn)行結(jié)果表現(xiàn)趨于相同如圖6所示。
說明由RTW生成的代碼準(zhǔn)確率高,并且RTW可自動實(shí)現(xiàn)Simalink模型向C/C++代碼進(jìn)行轉(zhuǎn)換的全部過程[9],使程序人員的工作量(手動編寫代碼等)得以顯著降低,在滿足實(shí)際設(shè)計(jì)需求的基礎(chǔ)上極大的縮短了開發(fā)周期,基于Simulink的發(fā)動機(jī)控制系統(tǒng)的設(shè)計(jì)方案具備一定的可行性,具有較大的實(shí)際應(yīng)用價值。
汽車電子控制系統(tǒng)的復(fù)雜程度逐漸提高,汽車電控系統(tǒng)采取手工編寫代碼實(shí)現(xiàn)的方式難以滿足實(shí)際系統(tǒng)開發(fā)需要,結(jié)合模型設(shè)計(jì)和代碼生成技術(shù),對汽車電子實(shí)時控制系統(tǒng)進(jìn)行設(shè)計(jì),主要通過使用Simulink實(shí)現(xiàn)算法開發(fā)、系統(tǒng)建模,使用RTW自動生成嵌入式代碼,軟件仿真平臺的開發(fā)則通過使用VC 強(qiáng)大的功能實(shí)現(xiàn),在發(fā)動機(jī)控制系統(tǒng)的開發(fā)過程中應(yīng)用該設(shè)計(jì)方法,對比Simulink中的仿真結(jié)果,驗(yàn)證了該方法的可行性,可以顯著縮短控制系統(tǒng)的開發(fā)周期并有效減低開發(fā)風(fēng)險,消除系統(tǒng)中潛在的隱患,提高產(chǎn)品可靠性與穩(wěn)定性,在開發(fā)嵌入式控制系統(tǒng)上具備較高的實(shí)用價值。


圖6 在Simulink中扭矩與空燃比的仿真結(jié)果