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

軟件需求分析結果
軟件架構設計如下:

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


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


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

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



修改Interface名稱,修改其Element屬性,重點是與剛才創建的ADT關聯起來;

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

也可以導出數據字典對應的ARXML文件

數據字典查看
返回simulink界面,可以查看interface信息

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

按照對應關系,完成所有關聯map;
返回主界面,將Composition的輸入、輸出port,連接到架構模型邊界
架構導出
再執行導出,生成Seat_Heat_Composition.ARXML
ARXML包含其外部輸入port/interface信息,內部port/interface信息,port與SWC map關系、SWC prototype、port prototype、data type等
至此,該ARXML文件便可作為軟件架構模型輸出,給到軟件單元開發工程師進行進一步開發,當然,如果架構模型建立與單元構建同屬于一撥人的職責,可以直接在上面工程中繼續創建Runnable,并繼續開發。