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

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

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


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


雙擊port處,對port進行修改命名;

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



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

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

也可以導出數(shù)據(jù)字典對應的ARXML文件

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

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

按照對應關(guān)系,完成所有關(guān)聯(lián)map;
返回主界面,將Composition的輸入、輸出port,連接到架構(gòu)模型邊界
架構(gòu)導出
再執(zhí)行導出,生成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ā)工程師進行進一步開發(fā),當然,如果架構(gòu)模型建立與單元構(gòu)建同屬于一撥人的職責,可以直接在上面工程中繼續(xù)創(chuàng)建Runnable,并繼續(xù)開發(fā)。