車載通信架構(gòu) —— DDS協(xié)議介紹我是穿拖鞋的漢子,魔都中堅(jiān)持長(zhǎng)期主義的汽車電子工程師。老規(guī)矩,分享一段喜歡的文字,避免自己成為高知識(shí)低文化的工程師:“ 本文主要-> 1、標(biāo)準(zhǔn)及發(fā)展簡(jiǎn)介-> 2、概念介紹-> 3、應(yīng)用場(chǎng)景及價(jià)值意義一、標(biāo)準(zhǔn)及發(fā)展簡(jiǎn)介DDS 的全稱為 Data Distribution Service(數(shù)據(jù)分發(fā)服務(wù) ),是由OMG聯(lián)盟在2004年發(fā)布的中間件協(xié)議和應(yīng)用程序接口標(biāo)準(zhǔn)。采用發(fā)布 / 訂閱模型,提供豐富的 QoS(Quality of Service)服務(wù)質(zhì)量策略,可滿足各種分布式系統(tǒng)實(shí)時(shí)通信的低延遲、高可靠性、可擴(kuò)展性的需求。DDS 被廣泛應(yīng)用在航空航天、船舶、軍事、工業(yè)、醫(yī)療、交通、能源等領(lǐng)域中。在分布式系統(tǒng)中,DDS 中間件是處于操作系統(tǒng)和用戶應(yīng)用程序之間的軟件層,如圖 4.5-12 所示。它將應(yīng)用程序從操作系統(tǒng),網(wǎng)絡(luò)傳輸和低級(jí)數(shù)據(jù)格式的詳細(xì)信息中抽象出來,以接口定義語(yǔ)言模式提供了支持多種編程語(yǔ)言 API,從而使應(yīng)用在不同的操作系統(tǒng)、編程語(yǔ)言和處理器體系架構(gòu)之間交換信息。DDS中間件管理了數(shù)據(jù)格式、發(fā)現(xiàn)、連接、可靠性、協(xié)議、傳輸選擇、QoS、安全性等底層細(xì)節(jié)。隨著SOA在汽車領(lǐng)域的發(fā)展和運(yùn)用,面向服務(wù)的通信中間件SOME/IP標(biāo)準(zhǔn)協(xié)議被引入到基礎(chǔ)軟件架構(gòu)標(biāo)準(zhǔn)中。隨著基礎(chǔ)軟件軟硬解耦、軟軟解耦的發(fā)展,應(yīng)用和服務(wù)之間除了服務(wù)能力的提供,還出現(xiàn)數(shù)據(jù)共享的需求。DDS正是以數(shù)據(jù)為中心的通信中間件,用Topic為單元實(shí)現(xiàn)數(shù)據(jù)的共享,按照用戶定義的方式存儲(chǔ)、發(fā)布和訂閱數(shù)據(jù),支持運(yùn)行在不同系統(tǒng)上,不同開發(fā)語(yǔ)言的應(yīng)用可以分布式的互相收發(fā)數(shù)據(jù)。二、概念介紹DDS 在軟件框架中的模型如下圖所示。DDS 通信的要素包括:->(Domain)代表一個(gè)通信平面,由Domain ID唯一標(biāo)識(shí),只有在同一個(gè)域內(nèi)的通信實(shí)體才可以通信;如果考慮車內(nèi)通信,可以只劃分1個(gè)Domain,也可以按照交互規(guī)則或其他規(guī)則,定義多個(gè)Domain;-> 域參與者(Domain Participant)代表域內(nèi)通信的應(yīng)用程序的本地成員身份,簡(jiǎn)單來說,就是說明同一數(shù)據(jù)域內(nèi)的通信成員;-> 主題(Topic)是數(shù)據(jù)的抽象概念,由TopicName標(biāo)識(shí),關(guān)聯(lián)相應(yīng)數(shù)據(jù)的數(shù)據(jù)類型(DataType),如果把車內(nèi)所涉及的所有Topic集合在一起,這樣就形成一個(gè)虛擬的全局?jǐn)?shù)據(jù)空間“Global Data Space”,進(jìn)一步弱化了節(jié)點(diǎn)的概念,所以域參與者已經(jīng)不是節(jié)點(diǎn)的概念了;-> 發(fā)布者(Publisher)發(fā)布者,發(fā)布主題數(shù)據(jù),至少與1個(gè)DataWriter關(guān)聯(lián),通過調(diào)用DataWriter的相關(guān)函數(shù)將數(shù)據(jù)發(fā)出去;-> 訂閱者(Subscriber)訂閱者,訂閱主題數(shù)據(jù),至少與1個(gè)DataReader關(guān)聯(lián)。當(dāng)數(shù)據(jù)到達(dá)時(shí),應(yīng)用程序可能忙于執(zhí)行其他操作或應(yīng)用程序只是等待該消息時(shí),這樣就會(huì)存在兩種情況,同步訪問和異步通知;-> 數(shù)據(jù)寫入者(Data Writer)數(shù)據(jù)寫入者,類似緩存,把需要發(fā)布的主題數(shù)據(jù)從應(yīng)用層寫入到DataWriter中;;-> 數(shù)據(jù)讀取者(Data Reader)數(shù)據(jù)讀取者,同樣可以理解為一種緩存,從訂閱者得到主題數(shù)據(jù),隨之傳給應(yīng)用層。詳細(xì)內(nèi)容可參見如下示意圖:DDS軟件框架模型 DDS軟件框架模型 DCPS(Data-Centric Publish-Subscribe )模型中的4個(gè)基礎(chǔ)的概念:-> 1、Publisher:它是負(fù)責(zé)創(chuàng)建和配置其實(shí)現(xiàn)的 DataWriters 的 DCPS 實(shí)體。 DataWriter 是負(fù)責(zé)實(shí)際發(fā)布消息的實(shí)體。每個(gè) DataWriter 都有一個(gè)分配的 Topic,在該 Topic 下發(fā)布消息。-> 2、Subscriber:它負(fù)責(zé)接收在其訂閱的 Topic 下發(fā)布的數(shù)據(jù)。它為一個(gè)或多個(gè) DataReader 對(duì)象提供服務(wù),這些對(duì)象負(fù)責(zé)將新數(shù)據(jù)的可用性傳達(dá)給應(yīng)用程序。-> 3、Topic:它是綁定發(fā)布和訂閱的實(shí)體,在 DDS 域中是唯一的。通過 TopicDescription,它允許發(fā)布和訂閱數(shù)據(jù)類型的統(tǒng)一。-> 4、Domain:它用于鏈接所有發(fā)布者和訂閱者,屬于一個(gè)或多個(gè)應(yīng)用程序,它們?cè)诓煌黝}下交換數(shù)據(jù)。這些參與域的單個(gè)應(yīng)用程序稱為 DomainParticipant,DDS域由Domain ID 標(biāo)識(shí)。DomainParticipant通過定義Domain ID 以指定它所屬的DDS域。具有不同Domain ID 的兩個(gè) DomainParticipants不知道彼此在網(wǎng)絡(luò)中的存在。因此,可以創(chuàng)建多個(gè)通信通道。這適用于涉及多個(gè)DDS應(yīng)用程序的場(chǎng)景,它們各自的 DomainParticipants相互通信,但這些應(yīng)用程序不得干擾。DomainParticipant 充當(dāng)其他 DCPS 實(shí)體的容器,充當(dāng)發(fā)布者、訂閱者和主題實(shí)體的工廠,并在域中提供管理服務(wù)。三、應(yīng)用場(chǎng)景及價(jià)值意義作為AP中中間件協(xié)議的常用協(xié)議,DDS還廣泛應(yīng)用于如下地方:-> 軍事&航空航天NASA Launch Control System,NASA 發(fā)射控制系統(tǒng),DDS用于超過40萬個(gè)控制點(diǎn) , 能夠智能地分發(fā)來自數(shù)千個(gè)傳感器的數(shù)據(jù),并允許在控制室進(jìn)行數(shù)據(jù)的存儲(chǔ)和查看。另外,Next Generation Navy System基于DDS標(biāo)準(zhǔn)的、高性能的中間件促進(jìn)系統(tǒng)更好地實(shí)現(xiàn)互操作性,并作為未來架構(gòu)設(shè)計(jì)的基礎(chǔ)。-> 智能能源Large Scale Fusion Reactor System,該系統(tǒng)是DDS用于聚變能源中心的遠(yuǎn)程控制系統(tǒng)的數(shù)據(jù)監(jiān)控和采集。SIEMENS WIND POWER也使用DDS可用于控制多個(gè)分布式的風(fēng)力渦輪機(jī),通過數(shù)據(jù)的交互和采集提高發(fā)電效率。-> 醫(yī)療設(shè)備&健康衛(wèi)生系統(tǒng)用于集成醫(yī)院的醫(yī)藥診斷系統(tǒng)。DDS將設(shè)備、服務(wù)連接在一起,以支持實(shí)時(shí)的顯示。DDS 可用于支持需要高效控制大規(guī)模數(shù)據(jù)流傳輸?shù)南到y(tǒng),如CT成像系統(tǒng)等。-> 仿真&測(cè)試系統(tǒng)飛行員訓(xùn)練模擬器。CAE用DDS進(jìn)行高效的數(shù)據(jù)分發(fā),并作為下一代飛行模擬器的架構(gòu).-> 汽車領(lǐng)域(敲重點(diǎn))用于 Hardware-in-the-loop(HIL)仿真,Audi使用DDS中間件實(shí)現(xiàn)測(cè)試系統(tǒng)中數(shù)百個(gè)設(shè)備的數(shù)據(jù)的實(shí)時(shí)交互。DDS用于大眾智能車的駕駛輔助及綜合安全系統(tǒng),用于結(jié)合來自雷達(dá)、激光測(cè)距儀和視頻的數(shù)據(jù),來協(xié)助安全操作,比如能夠檢測(cè)駕駛員的睡意,還能夠檢測(cè)車道偏離等。Baidu Apollo系統(tǒng)中集成了DDS。AUTOSAR 的AP平臺(tái)在 R18-03 版本開始支持DDS,CP平臺(tái)也已經(jīng)開始規(guī)劃支持DDS。部分自動(dòng)駕駛的SoC芯片預(yù)留了DDS接口,ROS2、Cyber RT 等操作系統(tǒng)也集成了開源DDS。而對(duì)于面向服務(wù)的通信協(xié)議,DDS與SOME/IP各自的優(yōu)劣?DDS能否替換SOME/IP等問題不在本文討論。擱筆分享完畢!愿你我相信時(shí)間的力量做一個(gè)長(zhǎng)期主義者! |
|