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