作者 | 不可說
出品 | 汽車電子與軟件
在汽車軟件的開發(fā)周期中,首先是需要將模糊的概念轉(zhuǎn)化為清晰、可量化的需求列表,明確軟件需實(shí)現(xiàn)的功能、性能指標(biāo)、用戶界面要求以及安全標(biāo)準(zhǔn)等。隨后,進(jìn)入軟件架構(gòu)設(shè)計(jì)階段,這是將需求轉(zhuǎn)化為實(shí)際解決方案的過程。軟件架構(gòu)工程師在此階段扮演核心角色,基于需求分析的結(jié)果,結(jié)合行業(yè)最佳實(shí)踐、技術(shù)趨勢(shì)及項(xiàng)目約束條件,構(gòu)思出軟件的整體架構(gòu)。這包括定義系統(tǒng)的層次結(jié)構(gòu)、組件劃分、接口定義、數(shù)據(jù)流及控制流等關(guān)鍵要素。為了確保架構(gòu)的靈活性與可擴(kuò)展性,還會(huì)考慮模塊化設(shè)計(jì)、服務(wù)化架構(gòu)等先進(jìn)理念。
在設(shè)計(jì)過程中,軟件架構(gòu)工程師會(huì)利用專業(yè)工具和技術(shù)手段,如UML圖等來輔助表達(dá)設(shè)計(jì)思想。最終,他們會(huì)輸出詳盡的軟件架構(gòu)描述文檔,這些文檔不僅包含SWC的詳細(xì)描述信息,如組件功能、接口協(xié)議、依賴關(guān)系等,還會(huì)以多種形式呈現(xiàn),以滿足不同受眾的需求。例如,使用Office文檔來撰寫詳細(xì)的架構(gòu)說明書和進(jìn)行交流展示;利用ARXML(AUTOSAR XML)文件來定義符合AUTOSAR標(biāo)準(zhǔn)的軟件架構(gòu),便于在汽車行業(yè)生態(tài)系統(tǒng)中進(jìn)行集成與驗(yàn)證等。
本文將使用MATLAB完成AUTOSAR CP(Classical Platform)平臺(tái)下的軟件架構(gòu)中的SWC(Software Component)的搭建。
建模時(shí),對(duì)MATLAB版本和工具包有一定的要求。以下是詳細(xì)的說明:
MATLAB版本要求
MATLAB的版本對(duì)于支持AUTOSAR建模的功能至關(guān)重要。雖然具體的最低版本要求可能隨時(shí)間變化,但一般來說,較新的MATLAB版本(如MATLAB 2020及以后版本)通常能夠提供更好的支持和更多的功能。為了獲得最佳的性能和兼容性,建議使用MATLAB的最新版本或至少是一個(gè)相對(duì)較新的穩(wěn)定版本。
工具包要求
對(duì)于AUTOSAR CP SWC建模,除了MATLAB的基本安裝外,還需要特定的工具箱和插件。以下是一些關(guān)鍵的工具包要求:
1. Simulink:Simulink是MATLAB的一個(gè)附加產(chǎn)品,用于建模、仿真和基于模型的設(shè)計(jì)。對(duì)于AUTOSAR建模,Simulink是必不可少的,因?yàn)樗峁┝藞D形化的建模環(huán)境,可以方便地構(gòu)建和測(cè)試系統(tǒng)模型。
2. AUTOSAR Blockset(或類似名稱的工具包):如果老一點(diǎn)版本的MATLAB標(biāo)準(zhǔn)安裝中可能不包含專門的AUTOSAR Blockset,但可以通過MATLAB的附加功能管理器或MATLAB Central File Exchange下載并安裝相關(guān)的AUTOSAR支持工具包。這些工具包通常提供了特定的AUTOSAR相關(guān)塊和配置選項(xiàng),以支持AUTOSAR SWC的建模和代碼生成。
3. Embedded Coder:Embedded Coder是MATLAB的一個(gè)產(chǎn)品,用于將Simulink模型和MATLAB函數(shù)自動(dòng)轉(zhuǎn)換為優(yōu)化的C和C++代碼。在AUTOSAR SWC建模中,Embedded Coder能夠?qū)⒛P娃D(zhuǎn)換為符合AUTOSAR標(biāo)準(zhǔn)的代碼,這對(duì)于與AUTOSAR兼容的ECU(Electronic Control Unit,電子控制單元)的部署至關(guān)重要。
4. 其他相關(guān)工具包:根據(jù)具體需求,可能還需要安裝其他MATLAB工具包,如Stateflow(用于設(shè)計(jì)復(fù)雜的狀態(tài)機(jī)和流程圖)、HDL Coder(用于生成硬件描述語言代碼)等。然而,這些工具包對(duì)于AUTOSAR CP SWC建模不是必需的,但可能會(huì)在某些高級(jí)應(yīng)用場(chǎng)景中提供額外的支持。
綜上所述,為了使用MATLAB進(jìn)行AUTOSAR CP SWC建模,需要確保安裝了最新版本的MATLAB、Simulink以及必要的AUTOSAR支持工具包和Embedded Coder。
#03 建模輸入
SWC的設(shè)計(jì)屬于SWE.2軟件架構(gòu)設(shè)計(jì)的工作,需要接收來自于SWE.1的軟件需求分析輸出,再著手SWC的設(shè)計(jì)。這包括SWC的劃分、port&interface接口的定義、參數(shù)與數(shù)據(jù)類型等。
假定之前的準(zhǔn)備工作均已經(jīng)完成,“座椅加熱”功能的需求與需求分析的結(jié)果如下:
主駕座椅加熱用戶需求Case:
UC 01 : 座椅加熱關(guān)閉時(shí),手動(dòng)點(diǎn)擊屏幕主駕座椅加熱虛擬按鍵,座椅加熱開到2擋;
UC 02 : 座椅加熱2擋位時(shí),手動(dòng)點(diǎn)擊屏幕主駕座椅加熱虛擬按鍵,座椅加熱開到1擋;
UC 03 : 座椅加熱1擋位時(shí),手動(dòng)點(diǎn)擊屏幕主駕座椅加熱虛擬按鍵,座椅加熱關(guān)閉;
UC 04 : 座椅加熱開啟時(shí)時(shí),且主駕離座時(shí),觸發(fā)座椅加熱關(guān)閉。

軟件需求分析結(jié)果
軟件架構(gòu)設(shè)計(jì)如下:

(為了操作演示,參數(shù)分了枚舉與整形兩類)


#04 建 模
創(chuàng)建工程
首先打開matlab ,創(chuàng)建新的Simulink腳本,選擇AUTOSAR Blockset工具箱中的Software Architecture模板;
SWC組件
在SWC模型建立的時(shí)候,可以建立Composition模塊,可以理解為某一類功能的SWC的集合;Seat_Heat_Composition:
雙擊進(jìn)入,可以進(jìn)行Composition內(nèi)的SWC的設(shè)計(jì);
按照SWC設(shè)計(jì)結(jié)果,構(gòu)建兩個(gè)Component,SeatHeat_VC_SWC,SeatHeat_AS_SWC


雙擊port處,對(duì)port進(jìn)行修改命名;

Interface與DataType數(shù)據(jù)字典建立
再對(duì)Interface進(jìn)行模型數(shù)據(jù)字典的建立;
點(diǎn)擊Simulink界面左下角的Interface,如之前沒有復(fù)用或者已經(jīng)建立好的數(shù)據(jù)字典,則需要點(diǎn)擊Create Dictionary來創(chuàng)建;
再次點(diǎn)擊Open Dictionary來打開,點(diǎn)擊上方的Data Interface來創(chuàng)建Interface
創(chuàng)建了一個(gè)默認(rèn)的Interface,里面相關(guān)屬性需要進(jìn)一步配置,可以先根據(jù)我們的需要,對(duì)數(shù)據(jù)類型進(jìn)行配置;



修改Interface名稱,修改其Element屬性,重點(diǎn)是與剛才創(chuàng)建的ADT關(guān)聯(lián)起來;

注:如果Interface關(guān)聯(lián)的ADT是枚舉類型,不要填寫最大值&最小值。
Interface本身也需要配置屬性,如接口類型、是否是服務(wù)(應(yīng)該是SOA架構(gòu)中需要)

也可以導(dǎo)出數(shù)據(jù)字典對(duì)應(yīng)的ARXML文件

數(shù)據(jù)字典查看
返回simulink界面,可以查看interface信息

Port與Interface關(guān)聯(lián)
在模型中點(diǎn)擊port,使其高亮,再下方的interface中選擇其對(duì)應(yīng)的,右鍵,點(diǎn)擊Assign to Select Port(s)
或者,選擇port后,直接在屬性檢查器中選擇其對(duì)應(yīng)的Interface

按照對(duì)應(yīng)關(guān)系,完成所有關(guān)聯(lián)map;
返回主界面,將Composition的輸入、輸出port,連接到架構(gòu)模型邊界
架構(gòu)導(dǎo)出
再執(zhí)行導(dǎo)出,生成Seat_Heat_Composition.ARXML
ARXML包含其外部輸入port/interface信息,內(nèi)部port/interface信息,port與SWC map關(guān)系、SWC prototype、port prototype、data type等
至此,該ARXML文件便可作為軟件架構(gòu)模型輸出,給到軟件單元開發(fā)工程師進(jìn)行進(jìn)一步開發(fā),當(dāng)然,如果架構(gòu)模型建立與單元構(gòu)建同屬于一撥人的職責(zé),可以直接在上面工程中繼續(xù)創(chuàng)建Runnable,并繼續(xù)開發(fā)。