樸春日,欒 輝
智能化、網(wǎng)聯(lián)化是汽車產(chǎn)業(yè)發(fā)展的重要方面。汽車新功能的開發(fā)速度越來越快,軟件布署更加復(fù)雜,用戶要求愈加豐富,這些對(duì)傳統(tǒng)電子電氣架構(gòu)提出了挑戰(zhàn),新的電氣架構(gòu)開發(fā)模式逐漸出現(xiàn)。從IT 領(lǐng)域引入的SOA (Service-Oriented Architecture,面向服務(wù)架構(gòu))被認(rèn)為是能夠支持未來汽車軟件發(fā)展的核心技術(shù)之一[1]。
SOA 自20 世紀(jì)90 年代被提出后,在IT 領(lǐng)域獲得快速發(fā)展和廣泛應(yīng)用[2]。將汽車軟件封裝成服務(wù)以提高軟件的可維護(hù)性和可重用性的思想[3]是汽車SOA架構(gòu)的核心理念。這些服務(wù)軟件模塊具有低耦合、自治的特點(diǎn)和標(biāo)準(zhǔn)接口,通過SOME/IP(Scalable service-Oriented MiddlewarE over IP,基于IP 可擴(kuò)展的面向服務(wù)的通信中間件協(xié)議)被其他模塊調(diào)用。SOME/IP 是面向服務(wù)的通信協(xié)議,不同ECU(Electronic Control Unit,電子控制單元)之間通過Client/Server (客戶端/服務(wù)端) 或Sender/Reciever(發(fā)送端/接收端)方式進(jìn)行通信,數(shù)據(jù)只在有需要時(shí)進(jìn)行傳輸,有效降低總線負(fù)載[4]。
目前,汽車領(lǐng)域多家企業(yè)已進(jìn)行了相關(guān)探索。聯(lián)合汽車電子有限公司提出將AP (Adaptive Platform,自適應(yīng)平臺(tái))中間件集成于所開發(fā)的XCU(域控制器)平臺(tái),以完成 SOA 汽車軟件的實(shí)現(xiàn)和布署[1]。 寶馬公司在新一代E/E (Electrical/Electronic,電子電氣)架構(gòu)中引入SOA 方法,為整個(gè)系統(tǒng)提供大量抽象服務(wù)[5]。
本文構(gòu)建一種基于SOA 的車輛服務(wù)平臺(tái),其上運(yùn)行車身域和娛樂域的多種基礎(chǔ)服務(wù),包括電氣件狀態(tài)服務(wù)如門鎖狀態(tài)、燈狀態(tài)等,電氣件控制服務(wù)如打開雨刮、播放音樂等。這些服務(wù)對(duì)外提供SOME/IP 接口和MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議)接口,方便其他應(yīng)用調(diào)用。用戶可對(duì)各類服務(wù)自由靈活調(diào)用編排,使之成為定制的車輛新功能。
SOA 服務(wù)平臺(tái)系統(tǒng)由應(yīng)用層、服務(wù)層和傳感執(zhí)行層3 部分組成。(1)應(yīng)用層布署和實(shí)現(xiàn)SOA 場(chǎng)景功能APP 軟件,例如提神模式、自定義場(chǎng)景等,并且可調(diào)用服務(wù)層服務(wù),基于預(yù)設(shè)邏輯、時(shí)序等實(shí)現(xiàn)特定的應(yīng)用場(chǎng)景功能。應(yīng)用層的應(yīng)用場(chǎng)景由場(chǎng)景編輯器開發(fā),操作流程如圖1所示,編輯場(chǎng)景時(shí)首先定義進(jìn)入場(chǎng)景的條件,包括觸發(fā)條件和狀態(tài)條件兩類,之后設(shè)置對(duì)應(yīng)場(chǎng)景的執(zhí)行動(dòng)作,并確定是否定義退出場(chǎng)景。全部?jī)?nèi)容定義完成后,將場(chǎng)景配置文件下載至車端。(2)服務(wù)層布署和實(shí)現(xiàn)SOA 服務(wù)軟件,例如外燈服務(wù)、導(dǎo)航服務(wù)等,該層一方面接收傳感執(zhí)行層狀態(tài)信號(hào),向傳感執(zhí)行層發(fā)送控制信號(hào),封裝信號(hào)為服務(wù),另一方面向應(yīng)用層提供服務(wù)能力,供應(yīng)用層調(diào)用。(3)傳感執(zhí)行層提供車輛基礎(chǔ)的傳感、執(zhí)行能力,主要包括娛樂域、車身域。
圖1 場(chǎng)景編輯器操作流程
服務(wù)作為面向服務(wù)設(shè)計(jì)的最基本單元,承載了特定責(zé)任,為降低服務(wù)間的耦合,服務(wù)劃分應(yīng)滿足單一責(zé)任、低依賴和基于場(chǎng)景劃分的原則[6]。據(jù)此將常見的車身域和娛樂域功能抽離出來封裝成元服務(wù),總計(jì)46 個(gè)服務(wù)、281 個(gè)服務(wù)接口,見表1,其中每個(gè)服務(wù)均由若干子服務(wù)(接口)組成,包括車輛已定義并實(shí)現(xiàn)的服務(wù)(車輛支持)、車輛已定義未實(shí)現(xiàn)的服務(wù)(車輛未支持)以及車輛未定義的服務(wù)(預(yù)留)。
表1 服務(wù)劃分
SOA 服務(wù)平臺(tái)系統(tǒng)的硬件布署如圖2 所示。應(yīng)用層布署在Scene Engine(場(chǎng)景引擎控制器)上,保存場(chǎng)景編輯器中的新應(yīng)用。服務(wù)層布署在BU(中央域控制器)上,實(shí)現(xiàn)全部服務(wù)的獨(dú)立運(yùn)行。傳感執(zhí)行層布署在HU(HMI Unit,人機(jī)交互單元)和其他車身域電氣件上,提供車輛狀態(tài)和實(shí)現(xiàn)具體執(zhí)行動(dòng)作。BU 上運(yùn)行Adaptive AUTOSAR(自適應(yīng)平臺(tái)),既可通過SOME/IP 接口對(duì)外提供服務(wù),又可借助一個(gè)應(yīng)用代理模塊通過MQTT接口對(duì)外提供服務(wù)。服務(wù)層和傳感執(zhí)行層之間通過CAN(Controller Area Network,控制器局域網(wǎng)絡(luò))進(jìn)行交互。此外,新應(yīng)用的開發(fā)通過布署在PAD(Portable Android Device,便攜式安卓設(shè)備)上的場(chǎng)景編輯器實(shí)現(xiàn),可將應(yīng)用下載到Scene Engine中。
圖2 硬件布署
Scene Engine實(shí)現(xiàn)場(chǎng)景配置文件的無線下載和車端布署、SOA 應(yīng)用管理和場(chǎng)景觸發(fā)等,其中場(chǎng)景配置文件的格式為JSON。Scene Engine 軟件分為4 個(gè)模塊:MQTT、數(shù)據(jù)引擎、場(chǎng)景引擎和服務(wù)引擎,如圖3 所示。(1)MQTT 負(fù)責(zé)與PAD 進(jìn)行無線通信,接收、校驗(yàn)和解析SOA 應(yīng)用配置文件、上報(bào)場(chǎng)景狀態(tài)等,通信協(xié)議為MQTT;(2) 數(shù)據(jù)引擎通過SOME/IP 通信方式訂閱車輛車身域和娛樂域的各種服務(wù)狀態(tài),并發(fā)送給Scene Engine,通過狀態(tài)信息和場(chǎng)景配置文件中的觸發(fā)條件判斷場(chǎng)景觸發(fā)與否;(3)場(chǎng)景引擎負(fù)責(zé)車輛SOA應(yīng)用(場(chǎng)景)管理,如增加、刪除、啟用、禁用某個(gè)場(chǎng)景等,核心功能是監(jiān)控已啟用的全部場(chǎng)景的觸發(fā)條件是否滿足,當(dāng)某個(gè)場(chǎng)景的觸發(fā)條件滿足時(shí)則調(diào)用服務(wù)引擎響應(yīng)車輛執(zhí)行動(dòng)作的請(qǐng)求;(4)服務(wù)引擎為SOME/IP 通信代理端,負(fù)責(zé)響應(yīng)場(chǎng)景引擎的請(qǐng)求指令,如解鎖車門、打開音樂等,并實(shí)現(xiàn)各種車輛服務(wù)的調(diào)用。
圖3 Scene Engine組成
Scene Engine是SOA車輛服務(wù)平臺(tái)的核心組成部分。
BU 為運(yùn)行車輛SOA 中間件的平臺(tái),實(shí)現(xiàn)車身域和娛樂域全部服務(wù)的邏輯和對(duì)外提供接口,其軟件模塊包括MQTT 通信模塊、CAN 通信模塊、SOME/IP 通信模塊和服務(wù)邏輯模塊,如圖4 所示。(1)服務(wù)邏輯模塊負(fù)責(zé)車身和娛樂域服務(wù)邏輯的實(shí)現(xiàn),并與CAN 進(jìn)行交互,完成車輛狀態(tài)的獲取和車輛操作的執(zhí)行;(2)CAN 通信模塊負(fù)責(zé)車輛CAN 解析,同時(shí)接收和發(fā)送CAN 信號(hào);(3)SOME/IP 通信模塊將各車輛服務(wù)通過SOME/IP方式對(duì)外提供;(4)MQTT 通信模塊將各車輛服務(wù)通過MQTT 方式對(duì)外提供。
圖4 BU組成
BU 是車輛SOA 服務(wù)平臺(tái)的服務(wù)層,可進(jìn)行服務(wù)的動(dòng)態(tài)布署和更新。
場(chǎng)景編輯器是一款安裝在車載PAD 端可創(chuàng)建車輛運(yùn)行時(shí)各種場(chǎng)景的軟件,包括兩個(gè)模塊:場(chǎng)景管理和場(chǎng)景編輯。(1)場(chǎng)景管理可通過在主頁面點(diǎn)擊“我的場(chǎng)景”進(jìn)入,顯示了當(dāng)前車輛擁有的所有場(chǎng)景,可對(duì)場(chǎng)景進(jìn)行新增、編輯、刪除和執(zhí)行操作;(2)場(chǎng)景編輯是允許用戶為場(chǎng)景編輯場(chǎng)景名稱、場(chǎng)景描述、場(chǎng)景觸發(fā)條件和場(chǎng)景執(zhí)行操作,即創(chuàng)建車輛新功能應(yīng)用。
當(dāng)車輛滿足觸發(fā)條件時(shí),已安裝在車端的場(chǎng)景會(huì)執(zhí)行相應(yīng)操作。
場(chǎng)景編輯器匹配安卓操作系統(tǒng),可由引擎Cocos Creator 開發(fā)。編輯器使用單場(chǎng)景模式,即只有一個(gè)主場(chǎng)景,多個(gè)預(yù)制體進(jìn)行頁面切換,通信協(xié)議為MQTT。
通過SOA 車輛服務(wù)平臺(tái),用戶使用場(chǎng)景編輯器編輯車輛新功能并下載到車端。本文以迎賓模式和分心模式為例說明新功能的實(shí)現(xiàn)過程。
迎賓模式為用戶自定義的新功能,當(dāng)用戶拉開車門時(shí)被觸發(fā),執(zhí)行一系列動(dòng)作,包括調(diào)節(jié)座椅、開啟空調(diào)、播放音樂、變換座艙主題等,實(shí)車測(cè)試如圖5所示。
圖5 迎賓模式實(shí)車數(shù)據(jù)
由圖5 可知,根據(jù)實(shí)車CAN 信號(hào),迎賓功能的觸發(fā)條件為:擋位為P 擋(信號(hào)3)、主駕門關(guān)閉(信號(hào)2)、主駕無人(信號(hào)4)、用戶解鎖車輛(信號(hào)1);觸發(fā)后執(zhí)行迎賓功能:危險(xiǎn)警報(bào)燈閃爍2 s(信號(hào)6)、位置燈和近光燈打開(信號(hào)5、7)、座椅X向位置調(diào)節(jié)至最大腿部空間(信號(hào)8、9)。從解鎖車輛(信號(hào)1 對(duì)應(yīng)的第1 條豎直虛線)到第1 個(gè)執(zhí)行動(dòng)作被觸發(fā)(信號(hào)6 對(duì)應(yīng)的第2 條豎直虛線)的時(shí)間約為800 ms,并發(fā)的執(zhí)行動(dòng)作也同時(shí)被觸發(fā),滿足自定義的迎賓場(chǎng)景的功能和性能要求。
車輛行駛中,當(dāng)識(shí)別出用戶分心行為如打電話、低頭等時(shí),需通過語音、屏幕圖文、車窗下降、空調(diào)調(diào)節(jié)等方式提醒用戶注意行車安全,實(shí)車測(cè)試如圖6 所示。
圖6 分心模式實(shí)車數(shù)據(jù)
由圖6 可知,根據(jù)實(shí)車CAN 信號(hào),分心模式的觸發(fā)條件為:擋位為D 擋(信號(hào)2)、主駕有人(信號(hào)3)、系統(tǒng)識(shí)別到駕駛員注意力不集中(信號(hào)1);觸發(fā)后執(zhí)行分心模式動(dòng)作:打開左前和右前車窗(信號(hào)4、5)。從識(shí)別出駕駛員分心(信號(hào)1 對(duì)應(yīng)的第1 條豎直虛線)到車輛執(zhí)行動(dòng)作被觸發(fā)(信號(hào)4 對(duì)應(yīng)的第2 條豎直虛線)的時(shí)間約為400 ms,滿足自定義的分心模式的功能和性能要求。
本文基于SOA 的開發(fā)理念,提出一種車輛服務(wù)平臺(tái)系統(tǒng)及軟硬件設(shè)計(jì)方案,通過自定義新功能迎賓模式和分心模式,驗(yàn)證設(shè)計(jì)方案有效可行。