作(zuò)者 | 不(bù)可(kě)說(shuō)
出品 | 汽車(chē)電(diàn)子(zǐ)與軟件(jiàn)
在汽車(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)集成與驗證等。
本文(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)枚舉與整形兩類)


#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


雙≠φ擊port處,對(duì)port進行(xíngε ₽)修改命名;

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;



修改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) ™↕λ

數(shù)據字典查看(kàn)&nbs∏δp;
返回simulink界面,可(kě)以查看(kàn)interface信息&®φ↕nbsp;

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)架構模型邊界
架構導出Ω
再執行(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)發。