摘 要:概述了車載以太網(wǎng)應(yīng)用背景;介紹了SOME/IP協(xié)議的原理、報(bào)文格式和交互方式。通過導(dǎo)航功能服務(wù)的設(shè)計(jì),文章介紹SOME/IP在ECU之間的使用方式。使用測試工具測試儀表和多媒體系統(tǒng)之間的導(dǎo)航服務(wù),驗(yàn)證設(shè)計(jì)的可行性。
引言
隨著汽車邁向智能化、網(wǎng)聯(lián)化、信息化的發(fā)展方向,汽車功能普遍增加,高性能的硬件平臺(tái)被用于車型的域控制器或中央域控制器。整車電子電氣架構(gòu)邁向域控制器架構(gòu)方向。整車通信信號(hào)數(shù)量大幅增加到5-10Mbps,導(dǎo)致傳統(tǒng)的CAN總線通信已經(jīng)不能滿足整車通信帶寬。整車網(wǎng)絡(luò)架構(gòu)不在單一地采用CAN/LIN總線進(jìn)行通信,而是轉(zhuǎn)向高帶寬的CANFD和Ethernet通信。
基于車載以太網(wǎng)的網(wǎng)絡(luò)通信已經(jīng)被明確為下一代網(wǎng)絡(luò)核心架構(gòu)。目前越來越多的OEM選擇使用車載以太網(wǎng)。不同的應(yīng)用場景選擇不同的應(yīng)用協(xié)議進(jìn)行適配才能滿足相關(guān)功能需求。而且基于TCP/IP的底層協(xié)議棧的穩(wěn)定性和兼容性,也是OEM考慮的首要因素。綜合上述考慮,越來越多的OEM和供應(yīng)商選擇加入AUTOSAR聯(lián)盟,使用AUTOSAR協(xié)議棧[1]。
AUTOSAR規(guī)范的核心目標(biāo)是實(shí)現(xiàn)汽車電子軟件的可復(fù)用性,通過規(guī)范內(nèi)的分層架構(gòu)對(duì)軟件開發(fā)過程進(jìn)行分層分工,各個(gè)層次之間的接口部分按照統(tǒng)一規(guī)范開發(fā),而層次內(nèi)部則可由開發(fā)人員自由發(fā)揮。以此提高軟件復(fù)用率,降低開發(fā)成本,方便軟件的更新和維護(hù)。在AUTOSAR協(xié)議設(shè)計(jì)過程中,寶馬公司開發(fā)了SOME/IP(Scalable service-Oriented Middleware over IP)協(xié)議,該通信協(xié)議是面向服務(wù)的通信協(xié)議,不同ECU之間通過Client /Server的方式進(jìn)行通信,數(shù)據(jù)只在有需要的時(shí)候進(jìn)行傳輸,有效降低了總線負(fù)載[2]。
1SOME/IP簡介
1.1SOME/IP協(xié)議位置
SOME/IP本身屬于車載以太網(wǎng)通信協(xié)議架構(gòu)中應(yīng)用程序與傳輸層協(xié)議之間的中間件(Middleware),起源于復(fù)雜的軟件系統(tǒng)開發(fā),并涉及“服務(wù)”所需的所有功能以實(shí)現(xiàn)其他軟件組件之間數(shù)據(jù)交換,這種數(shù)據(jù)交換需要經(jīng)由網(wǎng)絡(luò),中間件的任務(wù)就是確保需要交換數(shù)據(jù)的軟件組件在網(wǎng)[3]。其在車載以太網(wǎng)通信協(xié)議模型的位置如圖1 所示。
ECU通信根據(jù)功能需求的不同,劃分為Client(客戶端)和Server(服務(wù)器)。Server通過SOME/IP的服務(wù)接口Service Interface向Client提供服務(wù)。Client也通過服務(wù)接口向Server請求服務(wù)。
1.2SOME/IP交互方式
SOME/IP的通訊方式與傳統(tǒng)CAN總線方式不同。CAN總線的通信主要采用定時(shí)發(fā)送的周期型發(fā)送,不論接收方是否有需求,發(fā)送方都會(huì)發(fā)送此幀報(bào)文。這樣對(duì)于總線帶寬是有一定的浪費(fèi)。但是考慮到傳統(tǒng)嵌入式資源有限,這種簡單的交互方式往往提高了資源利用率,降低了開發(fā)成本。SOME/IP的通信方式主要是由Client向Server索取,如果Client有需求則向Server發(fā)送請求,服務(wù)提供相關(guān)服務(wù)數(shù)據(jù)。如果Client沒有需求,則Server停止響應(yīng)。具體的交互方式如下:
1)請求響應(yīng):Request-Response
2)有請求無響應(yīng):Fire&Forget
3)訂閱:Notification
4)數(shù)據(jù)訪問:Setter/Getter
Request-Response的數(shù)據(jù)發(fā)送方式主要由Client在有工作需求時(shí),向Server發(fā)送Request請求報(bào)文,該請求報(bào)文包含請求的服務(wù)ID和相關(guān)參數(shù)。Server將回復(fù)的響應(yīng)裝載到Response的有效載荷,回傳給Client,最終實(shí)現(xiàn)2個(gè)ECU的遠(yuǎn)程調(diào)用。如果Response不帶有任何有效載荷,該響應(yīng)只表達(dá)Server收到Client的請求。此類發(fā)送方式,多用于車載ECU之間的功能交互,功能設(shè)定的場景下。
Fire&Forget的數(shù)據(jù)發(fā)送方式主要有客戶端發(fā)送請求,但不需要服務(wù)回復(fù)應(yīng)答。此類發(fā)送方式,多用于對(duì)車載ECU進(jìn)行設(shè)置但不需要反饋結(jié)果的場景下,例如開關(guān)打開、配置激活等功能。
Notification的數(shù)據(jù)發(fā)送方式主要為發(fā)布和訂閱。Server啟動(dòng)后,將自身可以提供的服務(wù),通過SOME/IP-SD發(fā)布。Client啟動(dòng)后,將自身需要查找的服務(wù)通過SOME/IP-SD發(fā)布,同時(shí)Client通過SOME/IP-SD完成訂閱。訂閱完成后,Server會(huì)將client需要的信息封裝在event中,多個(gè)event組成eventgroup,Server將eventgroup周期的發(fā)送Client。當(dāng)Client不在需要此eventgroup時(shí),可以通過SOME/IP-SD停止發(fā)送訂閱Server的消息。Server停發(fā)相關(guān)的服務(wù)消息。此類發(fā)送方式,多用于車載ECU將傳感器、執(zhí)行器等運(yùn)行狀態(tài)通知其它ECU的場景下,例如環(huán)境溫度、當(dāng)前時(shí)間、續(xù)航里程等等。
Setter/Getter的數(shù)據(jù)發(fā)送方式實(shí)質(zhì)上Request-Response的發(fā)送方式,但使用場景不同。Setter用于設(shè)置對(duì)端ECU的參數(shù),通過Setter request的有效載荷發(fā)送設(shè)置的參數(shù),Setter response的有效載荷反饋設(shè)置結(jié)果。而Getter用于獲取對(duì)端ECU的參數(shù),通過Getter request請求服務(wù)ID,Getter response反饋參數(shù)結(jié)果。
1.2SOME/IP報(bào)文格式
SOME/IP的報(bào)文包含SOME/IP報(bào)頭和有效載荷。SOME/IP的報(bào)頭,如下圖所示,包含7個(gè)字段。
1)Message ID唯一確定了服務(wù)的信息。包括16bit的Service ID和16bit的Method ID。Service ID用于定義每個(gè)功能服務(wù),Method ID是服務(wù)中具體的功能或方法。每個(gè)Method ID代表了該服務(wù)的一個(gè)功能交互或?qū)崿F(xiàn)方法。
2)Length表示其后所有字節(jié)的長度。
3)Request ID分為Client ID和Session ID。Client ID唯一定義了服務(wù)的請求方的身份標(biāo)識(shí)。Session ID可以相同在訂閱構(gòu)成服務(wù)的調(diào)用次數(shù)。
4)Protocol Version表示SOME/IP協(xié)議的版本,目前默認(rèn)為0x1。
5)Interface Version表示服務(wù)接口的更新版本,可以根據(jù)實(shí)際應(yīng)用隨著版本變更進(jìn)行累計(jì)。
6)Message Type表示SOME/IP的報(bào)文類型。包括Request(0x00),Response(0x80),Request_NoReturn(0x01),Notification(0x02)和Error(0x81)。
7)ReturnCode表示錯(cuò)誤代碼類型,此字段與MessageType=Error配合使用,用于說明交互過程中的錯(cuò)誤。
1.3SOME/IP-SD報(bào)文格式
SOME/IP-SD是服務(wù)發(fā)現(xiàn)報(bào)文。報(bào)文格式如下圖所示。
SOME/IP-SD作為特殊的SOME/IP報(bào)文,其報(bào)頭采用固定的0xFFFF 8100作為Message ID。Protocol Version固定為0x1,Interface Version固定為0x1,Message Type固定為0x2,Return Code固定值為0x00。
在SOME/IP-SD報(bào)頭后具有8個(gè)bit的Flags標(biāo)志位,該信號(hào)用于描述重置狀態(tài)和單播狀態(tài)。
條目數(shù)組(Entries Array)和其長度字段描述該ECU支持的服務(wù)列表,包括可以提供(Offer)的服務(wù)和需要訂閱(Find)的服務(wù)。
選項(xiàng)數(shù)組(Options Array)是為條目數(shù)組中的服務(wù)列表提供詳細(xì)描述信息的,例如提供節(jié)點(diǎn)選項(xiàng)信息,描述該服務(wù)的發(fā)送IP地址和發(fā)送的端口號(hào)等。
車載ECU在啟動(dòng)運(yùn)行后,Server發(fā)布SOME/IP-SD的消息提供其全部的服務(wù)列表。而Client在啟動(dòng)后也會(huì)發(fā)布其需要訂閱的項(xiàng)目列表。并且在收到Server的服務(wù)列表后,發(fā)送訂閱請求,實(shí)現(xiàn)服務(wù)的注冊。
2SOME/IP服務(wù)設(shè)計(jì)
面向服務(wù)的設(shè)計(jì)是指將各種功能以服務(wù)的形式提供給最終用戶或者其他服務(wù)。將相關(guān)聯(lián)的一組信號(hào)或者功能執(zhí)行所需要的參數(shù)合集,整體定義為一個(gè)服務(wù)。取代CAN總線的面向單個(gè)信號(hào)傳輸,通過以太網(wǎng)將所有功能執(zhí)行需要的信息全部封裝在一個(gè)服務(wù)中。上層應(yīng)用只要調(diào)用此服務(wù)接口,即可實(shí)現(xiàn)對(duì)功能控制。
以儀表顯示導(dǎo)航信息為例,解釋具體服務(wù)設(shè)計(jì)過程。如下圖所示,導(dǎo)航功能位于車載多媒體系統(tǒng)IVI中,液晶儀表IP可以顯示建議導(dǎo)航信息,提示駕駛員方向。
功能描述:方向盤開過按鍵觸發(fā)導(dǎo)航功能,通過語音設(shè)置目的地,激活導(dǎo)航功能,IVI向IP發(fā)送導(dǎo)航信息服務(wù)NAVIService,IP收到NAVIService后,切換導(dǎo)航界面,顯示導(dǎo)航數(shù)據(jù)。
導(dǎo)航功能是有IVI提供和實(shí)現(xiàn)的,所以對(duì)于此功能IVI是服務(wù)提供方,也視為服務(wù)發(fā)送方。而IP顯示導(dǎo)航信息,是該服務(wù)的消費(fèi)方。根據(jù)功能交互場景進(jìn)行分析,功能激活后由Server將數(shù)據(jù)推送給Client,所以需要Client提前實(shí)現(xiàn)訂閱,實(shí)現(xiàn)NAVIService的注冊。
通過訂閱的方式,IP可以獲取IVI的導(dǎo)航信息。由于IVI的導(dǎo)航信息的時(shí)效性較高,按照100ms周期發(fā)送給IP。其交互等內(nèi)容如下圖所示。
NAVIService定義如下:
3SOME/IP測試驗(yàn)證
通過使用Vector公司的VN5640工具,測試IP和IVI系統(tǒng)在導(dǎo)航激活過程的數(shù)據(jù)傳輸。IP和IVI在整車上連接到交換機(jī)SWITCH的端口1和端口2,為了不破壞鏈路,將VN5640連接到交換機(jī)的第3路端口,配置交換機(jī),將端口1和端口2的數(shù)據(jù)轉(zhuǎn)發(fā)到端口3上。
系統(tǒng)上電運(yùn)行后,IVI發(fā)送0xFFFF 8100的SOME/IP-SD報(bào)文,提供了ServiceID=0x100E的服務(wù)。通過IPv4 Endoption字段描述可以看出,該服務(wù)位于IP地址為172.16.100.119,傳輸協(xié)議采用UDP,端口號(hào)為30501。該消息清楚的描述了IVI可以提供的服務(wù)ID和該服務(wù)的位置。
IP收到此消息后,立刻發(fā)送Subscribe的SOME/IP-SD報(bào)文,請求在IVI的注冊中心實(shí)現(xiàn)訂閱注冊。而IVI收到此消息后,通過Subscribe Acknowledge回復(fù)IP,成功完成訂閱。
激活I(lǐng)VI的導(dǎo)航功能,從下圖中可以看出,IVI的周期100ms向IPK發(fā)送消息。該消息的ServiceID=0x100E,Method ID=8007,與設(shè)計(jì)要求相同。
從數(shù)據(jù)長度可以看出,SOME/IP報(bào)文可以裝置更多的字節(jié),相比CAN總線大大提升了傳輸效率。
4 結(jié)論
車載以太網(wǎng)通過SOME/IP的通信方式,將多個(gè)數(shù)據(jù)封裝為服務(wù),通過訂閱和發(fā)布的方式,或者請求/響應(yīng)的方式,實(shí)現(xiàn)靈活的調(diào)度。每個(gè)ECU定義好服務(wù)接口,任何控制器都可以實(shí)現(xiàn)對(duì)此服務(wù)的調(diào)用和控制,簡化了設(shè)計(jì)方法,便于后期功能的擴(kuò)展。通過面向服務(wù)的設(shè)計(jì)方法,使車載ECU通信設(shè)計(jì)提升到了新的高度,
參考文獻(xiàn):
[1]張海濤,胡勝,仇林至.基于AUTOSAR的SOME IP通信及其多核應(yīng)用的實(shí)現(xiàn)[J].上海汽車.2021,(01):17-22.
[2]張弛,吳志紅,朱元,等.基于AUTOSAR標(biāo)準(zhǔn)的ETH基礎(chǔ)通信及SOME/IP通信實(shí)現(xiàn)[J].信息通信,2020(2):7-12.
[3]李陽春.基于SOME/IP的整車電氣通信網(wǎng)絡(luò)設(shè)計(jì)研究[J].汽車文摘,2020(08):32-37.
[4]AUTOSAR.SOME/IP Specification of Transformer, Release version 4.3.1[EB/OL].[2020-2-29].https://www.autosar.org/fileadmin/user_upload/standards/classic/19-11/AUTOSAR_SWS_SOMEIPTransformer.pdf
[5]AUTOSAR_SWS_ServiceDiscovery.pdf[EB/OL].https://www.autosar.org/fileadmin/user_upload/standards/classic/4-2/AUTOSAR_SWS_ServiceDiscovery.pdf
作者簡介:
鄧戩(1987- ),女,遼寧沈陽人,工程師,碩士,研究方向?yàn)檐囕v工程。