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

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

圖2 發動機模型框圖

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

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


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


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