前言
2021年,汽車界的熱門話題層出不窮:互聯網企業進軍汽車界,軟件定義汽車,某斯拉事件,全球芯片短缺等等。
這次文章的關鍵詞與軟件定義汽車有關:SOA。
我們這次來聊一聊怎么通過我們熟悉的CANoe工具去實現SOA的相關功能。
什么是SOA
SOA的全稱是面向服務架構,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。(來源:百度百科)
SOA里面涉及服務,接口、服務提供者、服務消費者等概念。
- 服務:實現某種功能的函數或方法,是一個可遠程訪問并獨立執行和更新的離散功能單元;
- 接口:能夠被其他模塊調用的函數名稱或一個封裝的API;
- 服務提供者:提供服務功能 如算法,數據源;
- 服務消費者:如消費數據,使用功能。
但是SOA的架構為什么要在汽車上應用?
我們可以通過下面的例子進行思考,并分析傳統架構與面向服務架構的異同。
根據上面的例子我們可以清晰的看出:
對于傳統面向信號的架構來說,增加新功能所需要的步驟更加繁瑣,增加了我們對于開發本身的成本,也可以透過整個流程看出,面向信號的架構對于系統本身的利用率并不高。
面向服務的架構對于ECU的更新版本、更新信號庫、代碼修改等過程更加簡便和靈活。簡化成了注冊服務與調用API。節約了時間成本,讓整個系統的功能可擴展性極大擴張。
汽車在不斷提高智能化水平;引入智能駕駛,V2X等技術的同時,也更加關注用戶的體驗與需求。軟件的迭代、OTA等功能的使用也越來越廣泛和頻繁。在我們傳統的電子電氣架構下,我們可擴展的功能越來越有限,我們需要一個功能可擴展性強、軟硬件松散耦合、標準化接口、支持異構系統集成的電子架構。這也就是為什么我們要在汽車上使用SOA架構。
System and Communication Setup功能介紹
CANoe中System and Communication Setup功能主要的使用場景是建立SOA仿真通信。SOA的核心是服務,任何功能都可以鏈接到“服務”,并且服務的提供者和消費者都可以自由地改變。因此Communication Setup功能主要是在環境中實現不同的服務的鏈接,這些服務鏈接不僅局限于數據庫中的定義,可以在CANoe仿真環境中動態地建立連接。
在Communication Setup中將應用層與實際傳輸介質分離。我們在這里使用通信對象來描述應用層信息,通信對象可以是服務、PDU或者信號。在此環境下,通信對象可以完全獨立于網絡通信介質,在CANoe中進行純粹的模擬通信。
通信對象可以通過綁定鏈接到傳輸介質。綁定的方式也分為兩種。
- 第一種是采用以太網傳輸,綁定SOME/IP通信。我們可以通過以太網協議實現端對端的Server與Client仿真相關的SOA功能。
- 第二種是通過抽象綁定,這類綁定一般是在開發的早期階段,通過抽象綁定,無需定義底層協議,注重的是應用的通信。
我們可以通過以上表格了解傳統工程仿真的元素與SOA仿真元素的對應關系。
配置流程介紹
打開CANoe后即進入仿真標簽,找到左上角系統與通信窗口。
之后進入到配置界面。
首先我們需要加載數據源文件。
選取ARXML或者是vCDL等文件。
加載完成后進入下一步,可在數據庫加載完成后提前定義好數據庫中屬于被測系統以及測試環境的元素有哪些。
導入完成后回到配置界面
添加應用模型文件(.CAN/.CS/.DLL等)。
如果你使用的是CANoe 14.0版本,模型導入完成后需要進行通信綁定的配置。
綁定界面可將未定義的元素進行拖動定義,綁定分為抽象綁定或SOME/IP綁定。
完成后點擊OK保存。
在CANoe 15.0版本中,通過讀取ARXML或vCDL等數據文件,文件預先設置了節點角色,可直接進入服務查看通信綁定狀態。
如綁定SOME/IP
或者是抽象綁定
基本配置完成后,之后我們再進入系統瀏覽器,查看之前加載好的所有數據。
左側的菜單欄中對我們的測試功能進行了分類,分為系統定義與預定義。
預定義的分類下是我們在數據庫導入的時候定義好的。
我們可以在窗口右上角切換用例的運行環境。
如果我們的被測對象是真實設備,并且已經與CANoe進行了連接,可以將右上角的用例狀態切換為environment simulation。
切換后我們再將state的信息切換為REAL(Device)。此時我們的被測系統是真實的,而環境是仿真出來的。
如果我們也沒有真實的硬件設備,我們把右上角狀態切換為test the tester。
切換后我們的state的信息會切換為simulated。此時我們的被測系統和環境都是仿真出來的。
我們也可以借助此窗口查看系統的通信關系。
通信的拓撲圖可以直觀查看到。
工具欄也可查看選擇的端點內包含的通信對象。
配置完成后,點擊熟悉的黃色閃電?按鈕,就可以進行CANoe的SOA功能仿真啦。
知識補充
1、在SOA仿真中我們看到了一種新的數據源格式:vCDL
首字母縮寫詞 vCDL代表 Vector Communication Description Language,是一種域特定語言 (DSLClosed),用于描述 CANoe中的通信對象。 vCDL允許通過用于簡單和基于文本的通信對象配置的工具擴展 CANoe通信概念。 通信對象及其各自的參數以類似于最常見編程語言的語法定義。 該語言的主要設計目標是能夠用很少的語言元素映射簡單的結構。 如果需要復雜的配置,擴展語法允許通過屬性補充定義(類似于 C#中常用的屬性)。
我們可以使用系統自帶的 vCDL Editer實現文件的生成與編輯。
2、CANoe可以編輯和生成ARXML了?
我們在編輯系統數據的功能窗口發現,我們可以查看ARXML的部分信息,如PDU、DATA Types、Encodings等。
目前模型編輯窗口修改的ARXML參數只是應用于當前工程內部,修改參數值和相關內容并不會改變ARXML數據庫文件本身的內容,也無法生成新的ARXML文件。
此窗口更多的協助用戶校對和匹配通信對象,以及更改修正關于以太網通信參數(如SOME/IP參數) 等場景使用。
5、為什么綁定功能中SOME/IP也作為綁定的一類?
SOME/IP (Scalable service-Oriented Middlewareover IP),即“運行于IP之上的可伸縮的面向服務的中間件”,是車載以太網中存在于應用層的高層協議。 “中間件”可以是操作系統,也可以是應用程序,也可以是某個服務功能。SOME/IP屬于應用層協議,它提供面向服務的通訊接口。服務接口包含請求/響應方法(R/R Method),單向請求方法(F&F Method),通知事件(Notification Events),字段(Fields)。可以支持請求/響應模式的遠程服務調用,也可以支持訂閱/發布模式的消息通知。SOMP/IP-SD服務發現功能可以發現服務提供者的信息以及檢查服務的狀態。
服務是SOME/IP的最核心概念,在一個服務中,定義了服務端(Server)和客戶端(Client)兩個角色:服務端提供服務,客戶端調用服務。對于同一個服務,只能存在一個服務端,但可以同時存在多個客戶端調用服務。
SOA本身的特性就是面向服務,并需要通過協議調用一個或多個服務進行數據交互來滿足系統的業務需求。
一個是面向服務的架構,一個是面向服務的通信協議。SOA架構中的服務可借助SOME/IP在不同的軟件平臺或操作系統之間共享資源,兩者在此功能中集合是一種必然。
在車載以太網普及度逐年攀升的時代,在實車上實現SOA以及進行測試通常會運用到SOME/IP協議。
6、總結
CANoe Communication Setup功能為實現SOA模型的交互和模型測試提供了全新的接口。用戶可以通過CANoe更加靈活地實現面向服務架構的仿真。
汽車新四化的發展,汽車的功能由過去的靠特定功能硬件實現轉向為越來越多靠功能執行模塊實現,軟件對汽車的功能和性能起著決定性作用。
面對未來全新的架構,CANoe可以繼續極大程度簡化測試與開發流程,幫助用戶高效開發。
CANoe是德國Vector公司出的一款總線開發環境,是網絡和ECU開發、測試和分析的專業工具,支持從需求分析到系統實現的整個系統開發過程;其豐富的功能和配置選項被OEM和供應商的網絡設計工程師、開發工程師和測試工程師所廣泛使用。
北匯信息作為Vector中國的合作伙伴,不僅提供相應的工具和技術支持服務及培訓,還針對不同的應用提供相應的解決方案,助力中國客戶的研發效率提升。
注:部分圖片來源于Vector。
-
CANoe
+關注
關注
4文章
66瀏覽量
8637
發布評論請先 登錄
相關推薦
評論