400-821-6015
行(xíng)業(yè)資訊
您當前的(de)位置:首頁 » 行(xíng)業(yè)資訊 » 行(xíng)業('δ↑☆yè)資訊
內(nèi)部資訊行(xíng)業(yè)資訊

汽車(chē)軟件(jiàn)架構(CP)建模實踐

發布日(rì)期:2024-10-22

作(zuò)者 | 不(bù)可(kě)說(shuō)

出品 | 汽車(chē)電(diàn)子(zǐ)與軟件(jiàn)



#01 前  言   

      在汽車(chē)軟件(jiàn₽®φ)的(de)開(kāi)發周期中,首先是(shì)需要(yào)将模糊的(de)概念轉化(hu∞λ₽à)為(wèi)清晰、可(kě)量化(huà)的(de)需求列表,<β↓π明(míng)确軟件(jiàn)需實現(xiàn≈>)的(de)功能(néng)、性能(néng)指标、用(yòng)戶界面要(yΩ δào)求以及安全标準等。随後,進入軟件(jiàn)架構設計(jì)♣ →∑階段,這(zhè)是(shì)将需求轉化(huà)為σ≥(wèi)實際解決方案的(de)過程。軟件(jiàn)架構工(g↑π&♥ōng)程師(shī)在此階段扮演核心角色,基于需求分(fēn)析的(de)結果,結合行(xíσ↔σng)業(yè)最佳實踐、技(jì)術(s≠ ≠βhù)趨勢及項目約束條件(jiàn),構思出軟件(jiàn)的(de)整體•♠(tǐ)架構。這(zhè)包括定義系統的(de)層次結構、組件(jiàn)¥₹劃分(fēn)、接口定義、數(shù)據流‌•φ及控制(zhì)流等關鍵要(yào)素。為(wèi)   §了(le)确保架構的(de)靈活性與可(kě)擴展性,還(hái)會≠'(huì)考慮模塊化(huà)設計(jì)、服務化(huà)架構等先進理(lǐ)念。<∑    

     <§φ 在設計(jì)過程中,軟件(jiàn)架構工(gōng)程師(shī)會(↑∏huì)利用(yòng)專業(yè)工(gōng)具和(hé)技(jì)術(shù)手段,‍±♥如(rú)UML圖等來(lái)輔助表達設計(jì)思想。最終,他( ♥±tā)們會(huì)輸出詳盡的(de)軟件↔​'♦(jiàn)架構描述文(wén)檔,這(zhè)些(xiē)文(w>±én)檔不(bù)僅包含SWC的(de)詳細描述信息,如(rú)組件(jiàn)功→₽♣能(néng)、接口協議(yì)、依賴關‍>系等,還(hái)會(huì)以多(duγ∏←ō)種形式呈現(xiàn),以滿足不(bù)同受衆的(de)需 Ω≈求。例如(rú),使用(yòng)Office文(wén)檔來(lái)撰<"寫詳細的(de)架構說(shuō)明(míng←¥ ♠)書(shū)和(hé)進行(xíng)交流展示≤♦ ;利用(yòng)ARXML(AUTOSAR XML)文(wén)件(jiàn)來(lái)✔✔定義符合AUTOSAR标準的(de)軟件(jiàn)架構,便于在汽車≈¥•♥(chē)行(xíng)業(yè)生(shēng)态系統中進行(xíng)集成與驗證等。



#02 工(gōng)具準備 

      本文(wén)将使用(yòng)MATLAB完成Aλ∏→UTOSAR CP(Classical Platform)平台下(x↔≠ià)的(de)軟件(jiàn)架構中的(de)SWC(Softwa¥↔λre Component)的(de)搭建。

      建模時(shí),對(duì)MATLAB版本和(©γ₹hé)工(gōng)具包有(yǒu)一(yī)定的(de)要(yào)求。以下(xλ€ià)是(shì)詳細的(de)說(shuō)明(míng):'εΩ   


      MATLAB版£‍€本要(yào)求

      MATLAB的(de✘≤✔ )版本對(duì)于支持AUTOSAR建模的(de)功能(néng)至關重要(yào)。€®‍雖然具體(tǐ)的(de)最低(dī)版本要(yào)求可(kě)能(néng)随‌£時(shí)間(jiān)變化(huà),但(dàn)一(yī)般來(lái)說(sΩ¥σhuō),較新的(de)MATLAB版本(如(rú)MATLAB 2020及以•'₹後版本)通(tōng)常能(néng)夠提供更好(hǎo)的(de)支持₩ ♥♦和(hé)更多(duō)的(de)功能(néng)。為(wèiπ≈λ)了(le)獲得(de)最佳的(de)性能(nén≈≤g)和(hé)兼容性,建議(yì)使用(yòng)MA&‍‍TLAB的(de)最新版本或至少(shǎo)是(shì)一(y∑β∞♦ī)個(gè)相(xiàng)對(duì)較新的(de)穩定版本。


      工(gōng)具包要(yào)求

      對(duì)于AUTOSAR☆↑σ™ CP SWC建模,除了(le)MATLAB的(de)基本± ¥安裝外(wài),還(hái)需要(yào)特  λ∏定的(de)工(gōng)具箱和(hé)插件(jiàn)。以下(xià)¥φ∏是(shì)一(yī)些(xiē)關鍵的(de)工(g★λ&ōng)具包要(yào)求:

      1.&nbs↑♦≈×p;Simulink:Simulink是(shì)MATLAB的(de)一(yī)個(gè)附加£©産品,用(yòng)于建模、仿真和(hé)基于模型σ 的(de)設計(jì)。對(duì)于AUTOSAR建模,Simulink是(shì)必不(bù)可(kě)少(shǎo)的(de),因∞ε為(wèi)它提供了(le)圖形化(huà)的(↑§®☆de)建模環境,可(kě)以方便地(dì)構建和(hé)測試系統模型。

      2. AUTOSAR Blockset(或類似名稱的(de)工(gōng)具包≤™):如(rú)果老(lǎo)一(yī)點版本的(de)MATLAB标準安裝中可(kě£→×)能(néng)不(bù)包含專門(mén)的(de)A ±UTOSAR Blockset,但(dàn)可(k¶βě)以通(tōng)過MATLAB的(de)附加功能(néng)管理(lǐ)器(qìεδ)或MATLAB Central File Exchange下(​≠≥↓xià)載并安裝相(xiàng)關的(de)AUTOSAR支€>$持工(gōng)具包。這(zhè)些(xiē¥♣↔)工(gōng)具包通(tōng)常提供了(le)特定的(de)AUTOSAR相(xiàng)關塊↔‌和(hé)配置選項,以支持AUTOSAR SWC的(de)建模和(héΩ‍∑α)代碼生(shēng)成。

      3. Embedded Coder:Embedded Coder是(shì)MATLAB的(de)←β一(yī)個(gè)産品,用(yòng)于将Simulink模型和(hé)MATLAB函數(shù)自(zì)動轉換為(wèi)優化(huà)的(de)C↓ 和(hé)C++代碼。在AUTOSAR SWC建模中,Embedded Coder能(néng​®)夠将模型轉換為(wèi)符合AUTOSAR标準的(d™<φ‌e)代碼,這(zhè)對(duì)于與AUTOSAR兼容的(de)Eα£≠ CU(Electronic Control Unit,電(diàn)♦★子(zǐ)控制(zhì)單元)的(de)部署至關重要(yào)。

      4. 其他(tā)相(xiàng)關工(gōng)具包:根據具體(tǐ)需求,可(kě)能(néng)還(hái)需要✘α£±(yào)安裝其他(tā)MATLAB工(gōng)具包,如(rú)Statefl₽¥Ωεow(用(yòng)于設計(jì)複雜(zá)的(de)φ←狀态機(jī)和(hé)流程圖)、HDL Coder(用(↔♥"yòng)于生(shēng)成硬件(jiàn)描述語言代碼)等。然而÷  δ,這(zhè)些(xiē)工(gōng)具包對(‍γduì)于AUTOSAR CP SWC建模不(bù)是(shì<✘)必需的(de),但(dàn)可(kě)能(né​ε∏ng)會(huì)在某些(xiē)高(gāo)"₹φ級應用(yòng)場(chǎng)景中提供額外(wài)的(de)支持。&♣↑nbsp;   

      綜上(shàng)所述,為(wèi)了¶φ♠(le)使用(yòng)MATLAB進行(xíng)AUTOSAR CP SWC建模,需要(₽≠yào)确保安裝了(le)最新版本的(de)M∏≥§←ATLAB、Simulink以及必要(yào)的(de)AUTOSA​£↕ R支持工(gōng)具包和(hé)Embe©✔≠±dded Coder。

       


#03 建模輸入

      SWC的(de)設計(jì)屬于SWE.2軟ε←‍件(jiàn)架構設計(jì)的(de)工(gōng©&)作(zuò),需要(yào)接收來(lái)自(zì)于SWE.1的(de)軟件(jiànλ↓★≥)需求分(fēn)析輸出,再著(zhe)手λ¥★♠SWC的(de)設計(jì)。這(zhè)包括SWC的(de)劃分(fēn•→λ")、port&interface接口的(de)定義、參數(shù)與數(shù)據類型等。×♦λ     

      假∞$‍÷定之前的(de)準備工(gōng)作(zuò)均已π$‍經完成,“座椅加熱(rè)”功能(nén€±g)的(de)需求與需求分(fēn)析的(de)結果如(rú)下(xi‍β©à):


      主駕座椅加熱(rè)用(yòn♦≈§g)戶需求Case:

      UC 01 : 座椅加熱(rè)關閉時(shí),手動點擊屏幕主駕座椅加熱(rè)虛拟按鍵,座椅加熱(rè)♠∑開(kāi)到(dào)2擋;

      UC 02 : 座椅加熱(rè)2擋位時(shí),手動點擊屏幕主駕座椅加熱'×ε(rè)虛拟按鍵,座椅加熱(rè)開(kāi)到(dàΩ¥o)1擋;

      UC 03 : 座椅加熱(rè)1擋位時(shí),手動≠≤®♦點擊屏幕主駕座椅加熱(rè)虛拟按鍵,座椅加熱(rè)關閉;

      UC 04 : 座椅加熱(rè)開(kāi)啓時(shí)時(shí),且主駕離(lí)™ ≥λ座時(shí),觸發座椅加熱(rè)關閉。

      &nbו✔sp;   

圖片

軟件(jiàn)需求分(fēn)析結果&n‍€bsp;  

      軟件(jiàn)架構設計(jì)如(​→→↑rú)下(xià):

圖片

圖片          

(為(wèi)了(le)操作(zuò)演示,參數(shù)分(fēn)了(♠¶le)枚舉與整形兩類)

圖片
      Data Type 信息如(rú)下(xià):
圖片
   


#04 建  模 

      創建工(gōng)程 

     αδ; 首先打開(kāi)matlab ,創建新的(de)Simulink腳本,選擇AUTOSA±€φ↔R Blockset工(gōng)具箱中的(de)Software Architecture模闆;  

圖片

圖片

          

      SWC組件(jiàn) 

      在SWC模型建立的(de)時(s¶≈∞≤hí)候,可(kě)以建立Composition模塊,可(kě)以理(lǐ)解為(wèi)某☆♥£₩一(yī)類功能(néng)的(de)SWC的(de)©≤集合;Seat_Heat_Composition↑±:   
圖片

圖片

    

      雙擊進入,可(kě)以進行(xíng)Compo‌♦☆←sition內(nèi)的(de)SWC的(de)設計(jì);   

圖片 

      按照(zhào)SWC設計(j↑$ì)結果,構建兩個(gè)Component,SeatH§≈±Ωeat_VC_SWC,SeatHeat_AS_SWC

圖片
      構建SWC的(de)port與interface,首>'λ先直接在SWC邊框上(shàng)鼠标點擊即可(kě)創建port&nbs♣¥p;  
圖片
      共計(jì)需要(yào)六個(gèγ•)外(wài)部輸入、兩個(gè)外(wài)部輸出以及兩 ≤♣個(gè)內(nèi)部交互信号;
      雙≠φ擊port處,對(duì)port進行(xíngε ₽)修改命名;
圖片      &nbα<sp;   

      Interface與D  ¥₩ataType數(shù)據字典建立 

      再對(duì)Inte★λ★rface進行(xíng)模型數(shù)據字典 ✘♥÷的(de)建立;

      點擊Simulink界面左下(xià)角☆ ☆₩的(de)Interface,如(rú)之前沒有(yǒu)複用(yòng)或者已經建立≥×™↑好(hǎo)的(de)數(shù)據字典,則需要(yào)點擊Create€✔←> Dictionary來(lái)創建;  &nφ πbsp;

      再次點擊Open Dictionary來(lái)打≈↑​開(kāi),點擊上(shàng)方的(de)Dat•∞a Interface來(lái)創建Int§≈erface
圖片


      創建了(le∞₽€♣)一(yī)個(gè)默認的(de)Interface,裡(lǐ) •面相(xiàng)關屬性需要(yào)進一(yī)步配置,可(kě)以先根據我們的(de→Ω)需要(yào),對(duì)數(shù)據類型進行(xíng)配置;&nbsλ≤✘>p;  

 圖片

      切換到(dào)Data Types tag欄,建立β€對(duì)應的(de)Data Type
圖片
      根據架構設計(jì)需求,這(zhè)裡(lǐ)定義了≤₽(le)一(yī)個(gè)uint8類型的(de✔ε≥)數(shù)據與三個(gè)base u✘φ±int8的(de)枚舉類型數(shù)據,填寫相(xiàng)關關鍵信息,如($σrú)枚舉量名稱、數(shù)值、初始值、bas§≤↕e類型(枚舉值需要(yào))、最大(dà)最小(xiǎ​÷×αo)值(連續值需要(yào))等;  
圖片
圖片
      再回過頭構建Inte♦≤≈•rface;
      修改Interface名稱,修改其Elemαγ©ent屬性,重點是(shì)與剛才創建的(de£↑>→)ADT關聯起來(lái);   
圖片

      注:如(rú)果Int¥∑δerface關聯的(de)ADT是(shì)枚舉類型,不₩ ↑(bù)要(yào)填寫最大(dà)值&最小(xiǎo)值。          

      ↓δ✘Interface本身(shēn)也(yě)需要(yào)÷≠∞ 配置屬性,如(rú)接口類型、是(shì)否是(shì)服務(應該"₩✔♠是(shì)SOA架構中需要(yào))

圖片


      也(yěσ$‌>)可(kě)以導出數(shù)據字典對(duì ')應的(de)ARXML文(wén)件(jiàn)   ™↕λ

 圖片

      §→γ在工(gōng)作(zuò)目錄下(xià)生(shēng)成對(duì)應的(d¶☆>™e)Data Type ARXML與inter <≤‌face ARXML文(wén)件(jiàn)
圖片


      數(shù)據字典查看(kàn)&nbs∏δp;

      返回simulink界面,可(kě)以查看(kàn)interface信息&®φ↕nbsp;  

圖片

      也(yě)可(kě)↔≤<以點擊模型數(shù)據查看(kàn)剛才建立的(de)Interface與Data Type$₽≠§
圖片


      Port與Interface關聯&nb​☆&sp;

      在模型中點擊port,使其高(gāo)亮(•↓liàng),再下(xià)方的(de)interface中選擇其對(duì)應的(de),右鍵γ‌¶≥,點擊Assign to Select Port(s)    

圖片

      或者Ω÷★,選擇port後,直接在屬性檢查器(qì)中選擇其對(duì)應的(de)In±₹ terface

圖片


      按照(zhào)對(duì)應關系,完成所" ♠☆有(yǒu)關聯map;

      ←‍™π返回主界面,将Composition的(de)輸入、輸出port,δ∞♣ε連接到(dào)架構模型邊界   


圖片          


      架構導出‌Ω‌ 

      先配置下(xià)導出AR$∏♥XML的(de)配置,選擇導出單個(gè)文(wén)件(jiàn);

圖片


     再執行(xíng)導出,生(shēng)成Seat_ ∏γHeat_Composition.ARXML 

 圖片


      ARXML包含其外(wài)部輸入port/intφ₹erface信息,內(nèi)部port/interface信息,port與SWC ma><"p關系、SWC prototype、port prototype、data type等&nb÷←sp;        &nb∏↑εsp;

      至此,該ARXML文(wén)件(✘×₹<jiàn)便可(kě)作(zuò)為(wèi)軟件(jià✔♥↓n)架構模型輸出,給到(dào)軟件(jiàn)單 ♣π↓元開(kāi)發工(gōng)程師(shī)進行(xíng)÷£ ¶進一(yī)步開(kāi)發,當然,如(rú)果架構模型建立與單​®₹​元構建同屬于一(yī)撥人(rén)的(de)職責,可(kě)以直接在上∑σ¥™(shàng)面工(gōng)程中繼續創建Ru↓÷nnable,并繼續開(kāi)發。

北京德智尚車聯科技有限公司版權所有(yǒu) 京ICP證000000号   技(jì)術(shù)支持:網站(zhàn)建設