【摘 要】隨著乘用車行業(yè)的飛速發(fā)展,用戶對于乘用車的需求越來越高,使得汽車電子控制單元ECU的功能也越來越復雜,乘用車的迭代速度和可移植性逐漸成為汽車軟件開發(fā)人員的主要關注點。手寫代碼的開發(fā)方式在開發(fā)周期、開發(fā)難度和可移植性上都顯示出了較大弊端,基于模型設計MBD的嵌入式軟件開發(fā)方法能夠有效解決該問題。文章對基于MBD的乘用車嵌入式軟件開發(fā)方法進行詳細介紹,從而提高開發(fā)效率和軟件品質(zhì),對乘用車嵌入式軟件開發(fā)工作具有較強的指導意義。
【關鍵詞】乘用車;MBD;嵌入式軟件
中圖分類號:U463.6 文獻標識碼:A 文章編號:1003-8639( 2024 )09-0029-03
Research on Embedded Software Development Method for Passenger Car Based on MBD
HAN Hao,ZHAO Wenbo
(FAW Car Co.,Ltd.,Changchun 130012,China)
【Abstract】With the rapid development of the passenger car industry,the demand for passenger cars is getting higher and higher,making the functions of automotive ECU more and more complex,and the iteration speed and portability of passenger cars have gradually become the main concerns of automotive software developers. The handwritten code development method shows great disadvantages in terms of development cycle,development difficulty and portability,and the embedded software development method based on MBD can effectively solve this problem. This paper introduces the embedded software development method of passenger cars based on MBD in detail,so as to improve the development efficiency and software quality,and has strong guiding significance for the development of embedded software for passenger cars.
【Key words】passenger car;MBD;embedded software
1 概述
中國乘用車嵌入式軟件開發(fā)發(fā)展經(jīng)歷了3大階段,如圖1所示,分別經(jīng)歷了匯編語言、C代碼和MBD。
MBD是一種基于模型的軟件設計方法[1],其核心在于根據(jù)需求使用建模工具進行建模,并完成自動代碼生成,最后使用仿真測試工具對模型進行驗證?;贛BD的方法較傳統(tǒng)手寫代碼的方法在開發(fā)方式、開發(fā)周期、代碼品質(zhì)、可靠性和代碼維護上均有較強優(yōu)勢,其具體內(nèi)容如下。
1)開發(fā)環(huán)境更統(tǒng)一,適用于不同背景的開發(fā)人員,有利于整體項目的整合。
2)開發(fā)方式上將功能進行分解,不同于手動編碼容易產(chǎn)生漏洞,采用圖形化的設計方式,呈現(xiàn)的效果更直觀,建模過程更簡單,出現(xiàn)的問題更少,測試更容易。
3)開發(fā)周期較手寫編碼大幅縮短,全部代碼、文檔自動生成,支持多種驗證方式,降低了錯誤的產(chǎn)生,優(yōu)化了設計和測試方式。
4)代碼品質(zhì)更客觀,按照既定的系統(tǒng)需求,采用可視化模擬的方式來優(yōu)化代碼,并自動生成符合行業(yè)標準的C語言代碼。
5)維護難度更小,系統(tǒng)需求和軟件設計相互關聯(lián),整個開發(fā)過程可以持續(xù)驗證,需求或變更時只需要簡單調(diào)整模型即可,移植性較強。
綜上所述,基于MBD的開發(fā)方法邏輯實現(xiàn)更加直觀,可以快速地進行開發(fā)、仿真和測試,并且在項目早期便可以解決大量問題,使得開發(fā)的周期和成本大大減少。因此,基于MBD的開發(fā)方式直擊傳統(tǒng)乘用車嵌入式軟件開發(fā)的痛點,并迅速成為了眾多嵌入式軟件設計師開發(fā)過程中的第一選擇。
2 開發(fā)流程
乘用車軟件開發(fā)需要依賴于完整的周期,當前主流開發(fā)模式是V型開發(fā)模式[2],其具體內(nèi)容如圖2所示。整個V型結(jié)構(gòu)下,以系統(tǒng)需求為開端,系統(tǒng)設計和軟件需求共同形成開發(fā)的嵌入式需求規(guī)范,并將此作為標準進行算法設計和代碼生成,并通過軟件測試、系統(tǒng)測試和功能測試等進行多輪驗證,保證軟件的正確性。整個開發(fā)流程中,每一個開發(fā)階段與測試階段相互對應,可以對軟件的準確性進行精確驗證。
基于MBD的開發(fā)方式屬于V型方式的一種,并對V型方式進行優(yōu)化。整個流程以需求、開發(fā)、測試為主體,每一階段都包含不斷地回溯和驗證,該流程下實現(xiàn)的嵌入式軟件能夠規(guī)避掉很多開發(fā)問題?;贛BD的嵌入式軟件開發(fā)流程如圖3所示。項目開始階段,系統(tǒng)設計人員需要根據(jù)項目具體需求,以文檔方式建立系統(tǒng)需求規(guī)范,以便作為整個項目的實施標準。開發(fā)人員針對系統(tǒng)需求進行反復解讀,明確系統(tǒng)需求的各部分內(nèi)容,并根據(jù)系統(tǒng)需求建立軟件需求以便指導后續(xù)的開發(fā)工作。項目中期屬于開發(fā)階段,開發(fā)人員根據(jù)上一階段的設定標準進行接口和架構(gòu)設計,該環(huán)節(jié)執(zhí)行的好壞能夠直接影響開發(fā)工作的效率。在具備良好的架構(gòu)設計后,開發(fā)人員可使用建模工具針對功能邏輯進行可視化設計,設計過程中應嚴格按照模型靜態(tài)檢查標準,以確保模型可靠性。整個模型建模完成后,通過自動代碼生成功能生成C標準代碼和模型跟蹤報告。項目后期的測試階段中,軟件在環(huán)測試由開發(fā)人員執(zhí)行,目的是確保軟件正常執(zhí)行和保障基礎功能實現(xiàn)。實車測試由專業(yè)測試人員進行,用于發(fā)現(xiàn)工程在真實環(huán)境下的細節(jié)問題。整個項目進行過程中,每個階段相輔相成,能夠極大程度保證代碼品質(zhì)。
3 軟件開發(fā)
3.1 接口設計
接口設計作為開發(fā)階段的第一步,目的是按照需求標準確定各功能模塊輸入輸出信息,其具體內(nèi)容有:信號類型、報文ID、信號名、接口類型、數(shù)據(jù)類型、初始值、有效值取值范圍、描述信息和接收/發(fā)送模塊。其中信號類型一般可分為控制器局域網(wǎng)絡(Controller Area Network,CAN)、本地互聯(lián)網(wǎng)絡(Local Interconnect Network,LIN)及硬線等,一般指信號來源或信號去除。報文ID表示信號在信號矩陣中所處的不同報文段,信號名表示命名信息。接口類型一般可以分為發(fā)送/接收(Sender/Receiver,S/R)、客戶/服務(Client/Server,C/S)及運行實體件變量(Inter Runnable Variable,IRV)等。數(shù)據(jù)類型、初始值、有效值范圍和描述信息用于明確該信號的具體信息。接收/發(fā)送模塊表示使用該信號進行交互的運行實體。
接口設計規(guī)定了軟件程序需要實現(xiàn)的行為和功能,使得在設計階段可以最大程度地使軟件開發(fā)結(jié)果可預見,從而保障軟件的品質(zhì)。
3.2 架構(gòu)設計
架構(gòu)設計階段需要使用DaVinci Developer開發(fā)工具,該開發(fā)工具產(chǎn)自Vector公司,是一款專門用于乘用車ECU軟件的開發(fā)工具。用戶可以使用該軟件的圖形用戶界面進行圖形化設計,可進行應用層軟件開發(fā)并定義程序界面,最終生成架構(gòu)層面源代碼。圖4展示了DaVinci Developer工具中圖形化設計操作界面,該設計方式降低了開發(fā)難度,無需開發(fā)人員具備較強的編碼經(jīng)驗,只需要了解各模塊的功能,并根據(jù)接口設計方案便可輕松完成架構(gòu)設計工作,大大提升了開發(fā)效率和代碼品質(zhì)。另外,該工具可以兼容DaVinci系列的其他工具,增強了后續(xù)開發(fā)的連貫性,為各階段的設計師提供了統(tǒng)一環(huán)境?;贒aVinci Developer進行應用層軟件架構(gòu)及相應接口的設計完成后,可以導出arxml格式的描述文件,用于指導后續(xù)建模。
3.3 模型建模
架構(gòu)設計階段生成的arxml文件需要導入MATLAB工具中進行SIMULINK/Stateflow建模[3],模型的設計過程需要充分結(jié)合系統(tǒng)功能的邏輯關系。該環(huán)境下,研發(fā)人員可根據(jù)功能進行任務劃分,并根據(jù)各自的設計任務修改子模型,提高了軟件開發(fā)速度,并且通過可視化的表現(xiàn),為開發(fā)人員提供設計新思路。圖5展示了某功能模型圖,其中狀態(tài)機表示所處的狀態(tài),如:OFF/ON,優(yōu)先級數(shù)值越小表示優(yōu)先級越高,遷移表示從一個狀態(tài)遷移到另一個狀態(tài),判斷條件是否滿足遷移一般分為條件成立和條件不成立。
建模過程中需要同步進行建模標準檢查,可以根據(jù)標準使用Model Advisor工具進行自動模型檢查。Model Advisor提供相關建模標準(例如MAAB標準)的檢查選項,使建立的模型可以符合建模標準。該工具能夠?qū)δP偷臐撛趩栴}進行檢查,找出可能限制代碼效率的情況,為模型的設計人員提出相應的意見。Model Advisor的打開界面(圖6),通過選擇檢查的目標和檢查標準,可根據(jù)檢查項對模型進行檢查,并最終生成準確率高和復雜度低的代碼。
3.4 自動代碼生成
在模型得到充足的驗證后,可以進行自動代碼生成工作。MATLAB中的代碼生成工具可將上一階段完成的模型編譯并轉(zhuǎn)化為C代碼。在生成代碼前,首先需要對代碼生成的步長類型等進行配置后再編譯,編譯通過的情況下,會自動生成相應的代碼報告,如圖7所示。
報告中包含子系統(tǒng)報告和靜態(tài)代碼報告等,開發(fā)者可根據(jù)這些描述文件了解模型的具體配置信息。因代碼與模型互相對應,可以通過模型找到代碼,也可以通過代碼找到模型,為開發(fā)者在模型代碼對照的過程中提供極大便利。
4 模型測試
4.1 軟件在環(huán)測試
軟件在環(huán)測試[4]目的是測試軟件的準確性,評估代碼可行性,屬于對代碼的早期驗證,意義重大。軟件在環(huán)測試可以被理解為對模型和代碼的聯(lián)合仿真,通過對比模型測試的真實輸出和開發(fā)者期待的真實輸出來判斷模型功能實現(xiàn)是否正確。此環(huán)節(jié)中,可以使用Simulink Design Verifier工具進行測試,該工具可通過手動編寫或自動生成測試用例的方式對模型邏輯進行驗證并生成測試報告(圖8),報告中包含兼容性檢查、設計錯誤檢查和模型覆蓋度檢查等。
測試用例的覆蓋率通過百分比數(shù)值體現(xiàn),通過判斷是否滿足設定目標確定測試用例的有效性。如圖8所示,通過生成的報告,開發(fā)者可以清楚地了解模型中是否有未執(zhí)行的遷移條件,從而減少錯誤的發(fā)生。因此,在完成軟件在環(huán)測試后,如能夠在達到較好覆蓋率的情況下仍可滿足最初設定的功能需求,則該代碼具備很高的可靠性。
4.2 實車測試
控制器多數(shù)信號都是通過CAN總線方式進行接收,通過程序運行進行邏輯運算,然后以CAN報文的形式發(fā)送到總線上供其他控制器使用。如圖9所示,實車測試過程中更多是使用CANalyzer工具和CANoe軟件進行CAN通信和信號測試。測試過程中,通過CAN的硬件接口將相應的虛擬節(jié)點替換成設計完成的真實節(jié)點,其他的虛擬節(jié)點不變,然后把實際物理節(jié)點與虛擬節(jié)點連接到一起,對真實節(jié)點進行測試,確保其能夠?qū)崿F(xiàn)系統(tǒng)功能。將實際系統(tǒng)的部分負載與計算機連接,然后應用嵌入式軟件對真實環(huán)境下的運行情況進行驗證,更能夠證明該研究方法下開發(fā)的控制系統(tǒng)的有效性。
5 結(jié)束語
基于MBD的乘用車嵌入式軟件開發(fā)方法是一種高效、靈活和低成本的開發(fā)方法,這種方法對于當下乘用車軟件開發(fā)的高速迭代需求具有非常重要的意義,其高效的開發(fā)手段和驗證方式,可以在極大程度上保證開發(fā)的時效性和產(chǎn)品的品質(zhì)。因此,把基于模型的設計流程應用到乘用車嵌入式軟件開發(fā)中,可極大降低模型開發(fā)過程中的時間成本和人力成本,提高開發(fā)效率,減少潛在錯誤。
參考文獻:
[1] 查正運. 基于模型驅(qū)動的汽車電子軟件開發(fā)方法研究[J]. 科技創(chuàng)新與應用,2015(25):76.
[2] 王永樂. 一種基于V模型的嵌入式軟件測試方案[J]. 電子制作,2015(8):82.
[3] 王鑫,李惠宇,王茹,等. 基于Simulink模型的車身控制系統(tǒng)設計[J]. 汽車電器,2023(7):37-41.
[4] 王麗娟,劉全周,李占旗,等. 汽車電子嵌入式軟件單元測試用例設計方法研究[J]. 中國汽車,2022(8):14-18,23.
(編輯 凌 波)
作者簡介韓昊(1997—),男,助理工程師,碩士,從事汽車嵌入式軟件開發(fā)工作。