高 越,高 健,周煥宇
基于SOMEIP協(xié)議的SOA設(shè)計(jì)
高 越,高 健,周煥宇
(沈陽(yáng)東信創(chuàng)智科技有限公司,遼寧 沈陽(yáng) 110000)
為了推進(jìn)車載以太網(wǎng)和基于服務(wù)的架構(gòu)(SOA)在車內(nèi)的快速應(yīng)用,論文結(jié)合實(shí)例介紹了基于模型的SOA功能架構(gòu)開(kāi)發(fā)流程及方法,同時(shí)綁定可伸縮的基于IP的中間件(SOMEIP)協(xié)議,進(jìn)行基于服務(wù)以太網(wǎng)通信設(shè)計(jì),對(duì)汽車SOA功能架構(gòu)和以太網(wǎng)網(wǎng)絡(luò)架構(gòu)開(kāi)發(fā)具有一定指導(dǎo)意義。
SOMEIP;基于服務(wù)的架構(gòu);以太網(wǎng);架構(gòu);用例;服務(wù)接口
隨著智能互聯(lián)、自動(dòng)駕駛、電動(dòng)汽車及共享出行的發(fā)展,分布式模塊化架構(gòu)正在向區(qū)域和中央計(jì)算平臺(tái)的架構(gòu)方向演進(jìn),軟件定義汽車是實(shí)現(xiàn)汽車新四化的推動(dòng)力,軟件開(kāi)發(fā)必須快速、敏捷,以實(shí)現(xiàn)功能更新迭代,面向服務(wù)的架構(gòu)(Service Oriented Architecture, SOA)開(kāi)發(fā)可以滿足以上所有需求,又因?yàn)镾OA開(kāi)發(fā)需要交互大量的結(jié)構(gòu)化數(shù)據(jù),百兆、千兆甚至是多G以太網(wǎng)又被引入到車內(nèi),二者結(jié)合使用,相輔相成,在國(guó)內(nèi)外各大整車廠得到逐步落地。
SOA是一種軟件架構(gòu)開(kāi)發(fā)方法,服務(wù)可以是黑盒形式,通過(guò)標(biāo)準(zhǔn)的服務(wù)接口向外提供服務(wù);服務(wù)也是無(wú)狀態(tài)的,可以被重復(fù)調(diào)用,可以被多次部署。SOA設(shè)計(jì)主要包括用例設(shè)計(jì)、交互時(shí)序設(shè)計(jì)、接口設(shè)計(jì)。
功能設(shè)計(jì)通常采用“自上而下(Top-Down)”的正向開(kāi)發(fā)思路,首先通過(guò)用戶場(chǎng)景分析定義用例(Use Case),通過(guò)用例描述系統(tǒng)面向用戶提供主要功能或服務(wù)[1]。
本文以汽車遠(yuǎn)程控制功能為例進(jìn)行用例設(shè)計(jì),用例設(shè)計(jì)遵循的原則為參與者(Actor)通過(guò)什么方法可以達(dá)到什么目標(biāo)。如圖1所示,參與者為用戶,用戶可以通過(guò)手機(jī)App遠(yuǎn)程控制座椅加熱、控制空調(diào)、控制車窗、控制門鎖等多個(gè)用例,而遠(yuǎn)程控制車窗又包含(Include)以下四個(gè)子用例:
1)用例1:一鍵開(kāi)啟車窗,用戶通過(guò)手機(jī)App遠(yuǎn)程一鍵開(kāi)啟車窗,開(kāi)合度至100%。
2)用例2:一鍵關(guān)閉車窗,用戶通過(guò)手機(jī)App遠(yuǎn)程一鍵關(guān)閉車窗,開(kāi)合度至0%,車窗關(guān)閉過(guò)程中,可能觸發(fā)使能防夾,一旦防夾功能使能,需要提示用戶,這里防夾功能使能用例是一鍵關(guān)閉用例的擴(kuò)展。
3)用例3:車窗換氣控制,用戶通過(guò)手機(jī)App遠(yuǎn)程控制車窗,開(kāi)合度可至任意位置。
4)用例4:車窗狀態(tài)查詢,用戶通過(guò)手機(jī)App遠(yuǎn)程查詢車窗狀態(tài)及位置。
圖1 汽車遠(yuǎn)程控制用例圖
功能實(shí)現(xiàn)通過(guò)時(shí)序圖描述,主要包括參與者(paticipate)和每一步需要交互的信息,一個(gè)時(shí)序圖可包括一個(gè)或者多個(gè)用例。
圖2為遠(yuǎn)程一鍵關(guān)閉車窗時(shí)序圖,對(duì)圖分析可知,車身域控為車窗控制服務(wù)的提供者,手機(jī)App為車窗服務(wù)的消費(fèi)者,而網(wǎng)關(guān)作為服務(wù)代理,將信號(hào)轉(zhuǎn)換成服務(wù),提供整車狀態(tài)服務(wù),其中包括車窗控制(Window Control)、服務(wù)依賴(Depen- dency)、整車狀態(tài)(Vehicle State)服務(wù)。圖3為使用PRREEvision工具定義的服務(wù)調(diào)用關(guān)系。
圖2 遠(yuǎn)程一鍵關(guān)閉車窗時(shí)序圖
圖3 一鍵關(guān)閉車窗功能服務(wù)調(diào)用關(guān)系
前面已經(jīng)定義完服務(wù)角色及服務(wù)的調(diào)用關(guān)系,下面定義接口類型及相關(guān)數(shù)據(jù)類型,接口類型包括請(qǐng)求響應(yīng)方法R&R Method,一般用于需要執(zhí)行一段時(shí)間才會(huì)有效執(zhí)行反饋的控制類指令;單方向通信方法F&F Method;域(Get, Set, Notify),其中通知(Notify)指令必須涵蓋控制指令中所涵蓋的所有狀態(tài)[2];事件(Event)類型接口使用同上面的通知(Notify)指令。
按照之前的功能分析,Window Control服務(wù)需要定義一個(gè)R&R Method,輸入?yún)?shù)為電動(dòng)窗控制命令(Window CtrolCmd),輸出參數(shù)為電動(dòng)窗控制結(jié)果(Window CtrolRst),也需要定義一個(gè)通知(notify),參數(shù)內(nèi)容為電動(dòng)窗的位置和防夾狀態(tài)(Window State);Vehicle State服務(wù)需要定義三個(gè)通知(notify),分別為Vehicle Speed、Gear Level和Ignition State。
以太網(wǎng)數(shù)據(jù)大多為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)定義必須層層分解到原始數(shù)據(jù)類型BaseType,圖4以Window State數(shù)據(jù)為例說(shuō)明數(shù)據(jù)類型定義。Window State為結(jié)構(gòu)體數(shù)據(jù)類型,包含兩個(gè)數(shù)據(jù)成員winPosition和winStatus,這兩個(gè)數(shù)據(jù)成員也為結(jié)構(gòu)體,分別包含前左、前右、后左和后右四個(gè)電動(dòng)窗的位置和狀態(tài)信息,基本數(shù)據(jù)類型都為uint8。
圖4 結(jié)構(gòu)體數(shù)據(jù)Window Control定義
可伸縮的基于IP的中間件(Scalable Service Oriented Middleware over IP, SOMEIP)協(xié)議是歐洲主機(jī)廠寶馬公司專門針對(duì)以太網(wǎng)及SOA的車內(nèi)應(yīng)用而開(kāi)發(fā)的中間件協(xié)議,通過(guò)此中間件進(jìn)行應(yīng)用層和IP層的數(shù)據(jù)交互,實(shí)現(xiàn)了應(yīng)用程序和操作系統(tǒng)之間的解耦。SOMEIP協(xié)議主要包括遠(yuǎn)程過(guò)程調(diào)用(Remote Process Call, RPC)、數(shù)據(jù)序列化、服務(wù)發(fā)現(xiàn)(Service Discovery, SD)、SOMEIP 傳輸協(xié)議(Transport Protocol, TP)等四部分內(nèi)容[3]。
RPC協(xié)議定義主要是SOMEIP協(xié)議頭(Header)的相關(guān)參數(shù),如服務(wù)ID、方法/事件ID、協(xié)議版本、客戶端ID,事件組(Event Group)及其ID等。這些數(shù)據(jù)定義原則是為不同域的服務(wù)劃分范圍,且確保唯一性。
數(shù)據(jù)序列化是指發(fā)送方將應(yīng)用層的結(jié)構(gòu)化的并行數(shù)據(jù)轉(zhuǎn)化成串行數(shù)據(jù)發(fā)送到總線上的過(guò)程,接收方再將從總線上接收到的串行數(shù)據(jù)反序列化成并行數(shù)據(jù)交給應(yīng)用層。
汽車開(kāi)放系統(tǒng)架構(gòu)(AUTomotive Open System ARchitecture, AUTOSAR)組織定義了轉(zhuǎn)換器(Transformer)作為SOMEIP 序列化的軟件模塊。關(guān)鍵設(shè)置參數(shù)如下:
1)對(duì)齊(Alignment)應(yīng)用于變長(zhǎng)數(shù)據(jù),如變長(zhǎng)數(shù)組和變長(zhǎng)字符串,為了方便讀取內(nèi)存數(shù)據(jù),通過(guò)填充的方式使數(shù)據(jù)處于字節(jié)起始位置。對(duì)齊參數(shù)的定義主要和域控處理器系統(tǒng)相關(guān),本文中車身域控和網(wǎng)關(guān)均為4 byte對(duì)齊。
2)字節(jié)序(Byte Order),為了和車外網(wǎng)兼容,字節(jié)序定義為Motorola Big Endian類型。
3)結(jié)構(gòu)體、數(shù)組和變長(zhǎng)字符串的數(shù)據(jù)長(zhǎng)度域長(zhǎng)度,本文全部定義為4 byte。
圖5為結(jié)構(gòu)體數(shù)據(jù)類型序列化示例,數(shù)據(jù)長(zhǎng)度域長(zhǎng)度為4 byte[4]。
圖5 結(jié)構(gòu)體數(shù)據(jù)序列化
軟件定義(Software Defined, SD)是一種特殊的服務(wù),定義了服務(wù)的尋址信息和狀態(tài)信息。服務(wù)端發(fā)布提供服務(wù),客戶端查找、訂閱服務(wù)。通過(guò)此服務(wù)發(fā)現(xiàn)機(jī)制,可動(dòng)態(tài)地建立通信鏈接,同時(shí)可開(kāi)啟、關(guān)閉服務(wù),有效降低了總線帶寬及算力資源。
服務(wù)器端和客戶端的SOMEIP SD通信行為是不同的,但都包括四個(gè)階段,每個(gè)階段都需要定義相應(yīng)的參數(shù),圖6為服務(wù)器端通信行為定義,初始化階段(Initial Wait Phase)需要配置的時(shí)間參數(shù)為INITIAL_DELAY時(shí)間(最大和最小值之間的隨機(jī)值);重復(fù)階段(Repetition Phase)中參數(shù)REPETITIONS_BASE_DELAY為服務(wù)端發(fā)送offer service的基本時(shí)間,隨著發(fā)送次數(shù)的增加,發(fā)送間隔時(shí)間倍增,最多發(fā)送次數(shù)為REPETIT- IONS_MAX;主階段(Main Phase)中OfferCyclic Delay為服務(wù)端發(fā)送offer service的發(fā)布周期[5]。
圖6 服務(wù)端狀態(tài)轉(zhuǎn)換及時(shí)間參數(shù)
SOMEIP SD相關(guān)參數(shù)定義可以參照表1,客戶端和服務(wù)端的參數(shù)定義一致[6]。
表1 SOMEIP SD參數(shù)定義
參數(shù)數(shù)值/ms Initial_Delay_Min0 Initial_Delay_Max300 Repetition_Base_Delay30 Repetition_Max3 Cyclic_Offer_Delay1 000 TTL5 000 Request_Response_Delay_Min0 Request_Response_Delay_Max500
SOMETP協(xié)議可以綁定用戶數(shù)據(jù)報(bào)協(xié)議(User Data Protocol, UDP)傳輸數(shù)據(jù)。如果SOMEIP協(xié)議綁定UDP,且數(shù)據(jù)字節(jié)長(zhǎng)度大于1 400 byte,則必須使用SOMEIP TP,將數(shù)據(jù)進(jìn)行分片傳輸。SOMEIP TP的設(shè)計(jì)參數(shù)主要有兩個(gè),發(fā)送端發(fā)送連續(xù)兩個(gè)數(shù)據(jù)包的時(shí)間間隔(Minimum Separation Time=1 ms)和接收端接收超時(shí)時(shí)間(RxTimeout Time=3 ms)。
最后,定義車載以太網(wǎng)一到四層的通信協(xié)議,比如物理層的通信速率和主從節(jié)點(diǎn),數(shù)據(jù)鏈路層的虛擬局域網(wǎng)和MAC地址,網(wǎng)絡(luò)層的IP地址和傳輸層的端口號(hào)等,所有數(shù)據(jù)及相關(guān)參數(shù)設(shè)計(jì)完成后,使用VECTOR公司的架構(gòu)開(kāi)發(fā)工具PREE- vision進(jìn)行建模,可導(dǎo)出以太網(wǎng)SOA的ARXML,并將此ARXML導(dǎo)入VECTOR公司的仿真測(cè)試工具CANoe中進(jìn)行仿真測(cè)試。在仿真時(shí),可直接在Bus Statistic窗口下查看總線負(fù)載率,如圖7所示。
圖7 CANoe仿真總線負(fù)載
本文結(jié)合實(shí)例介紹了SOA功能架構(gòu)定義的流程和方法,以及如何基于SOMEIP協(xié)議進(jìn)行SOA網(wǎng)絡(luò)架構(gòu)的相關(guān)參數(shù)設(shè)計(jì)。未來(lái)的電子電氣架構(gòu),SOA將作為功能架構(gòu)的主要開(kāi)發(fā)方式,而以太網(wǎng)將作為整車網(wǎng)絡(luò)的主干通信網(wǎng)絡(luò),國(guó)內(nèi)主機(jī)廠正紛紛搭建以太網(wǎng)和SOA電子電氣架構(gòu)平臺(tái),提升市場(chǎng)競(jìng)爭(zhēng)力。
[1] 袁仲楠.基于PREEvision的電子電氣架構(gòu)開(kāi)發(fā)研究[J].電子測(cè)試,2020(3):55-57,130.
[2] 劉聰,陳敏.面向服務(wù)的電子電氣架構(gòu)研究與應(yīng)用[J].北京汽車,2021(6):34-36,40.
[3] AUTOSAR Organization.AUTOSAR TR SOMEIP Example R4.2.1:637[S].Redmond:AUTOSAR Organ- ization,2014.
[4] AUTOSAR Organization.AUTOSAR PRS SOMEIP Protocol R20-11:696[S].Redmond:AUTOSAR Organ- ization,2020.
[5] AUTOSAR Organization.AUTOSAR TPS Manifest Specification R19-03:713[S].Redmond:AUTOSAR Organization,2019.
[6] 詹德凱,高越.基于PREEvision的SOA設(shè)計(jì)[J].汽車實(shí)用技術(shù),2022,47(23):62-70.
SOA Design Based on SOMEIP Protocol
GAO Yue, GAO Jian, ZHOU Huanyu
( Shenyang Dotrust Technologies Company Limited, Shenyang 110000, China )
In order to promote the rapid application of on-board ethernet and service oriented architecture(SOA) in the vehicle, this paper introduces the development method and process of SOA functional architecture based on model combined with examples, and also, the design of service-oriented ethernet communication based on scalable service oriented middleware over IP(SOEMIP) protocol is bound, which has certain guiding significance for the development of automotive SOA functional architecture and ethernet network architecture.
SOMEIP;Service oriented architecture; Ethernet; Architecture; Use case; Service interface
U462.1
A
1671-7988(2023)17-71-05
10.16638/j.cnki.1671-7988.2023.017.012
高越(1982-),女,碩士,工程師,研究方向?yàn)槠囯娮与姎饧軜?gòu)、汽車以太網(wǎng)、SOA,E-mail:01yue.gao @dotrustech.com。