面向服务通信与面向信号通信
汽車電子行業中因為汽車以太網技術的引進,也引進了一些傳統IT行業的概念。比如面向服務的通信概念,以前在汽車診斷領域雖有所應用,但并未如現在這般被系統地提出來,在汽車電控的各領域中得以應用,并推出了各種相關的規范和標準。面向服務通信的概念是與傳統汽車電子行業的面向信號通信的概念相對應的一個概念,今天就二者做一個簡單的對比。
?
CAN為總線式通信,采用廣播式的通信方式。針對這種通信方式,CAN總線在信息傳輸時通常采用的是面向信號的通信方式(Signal-Oriented Communication)。面向信號的通信,顧名思義,這種通信是為了將信號進行傳輸,比如節點B需要節點A的某一個信息(即一個信號值),節點A就直接把這個信號同其他信號一起,打包成報文丟到總線上,節點B收到之后就能夠獲得該信號了。用某些傳統IT人士的說法,這是一種簡單粗暴式的通信方法。
?
在這種傳輸情況下最核心的就是通信矩陣,在通信矩陣中以信號作為主要對象,體現出信號被封裝到哪條報文中,信號被哪個節點發送,被哪個節點接收。
?
目前用的最多的是將通信矩陣做成數據庫的方式,在仿真、代碼實現、測試等階段都能夠使用,也就是諸如*.dbc文件的CAN總線數據庫。下圖是從Vector的CANdb++工具中打開的某CAN總線數據庫文件中截取的通信矩陣:第一列為通信矩陣的關鍵列-信號名稱,表頭為總線上所有節點名稱,藍色字體帶有<Tx>標志的為發送節點所發送的報文名稱,括號中0x開頭的為信號所在的報文,黑色的為接收節點所接收的報文名稱。當然工具不同體現形式不同,但是通信矩陣包含的核心內容基本上是一致的。
?
?
汽車以太網目前采用交換機式網絡,采用點對點的通信方式。在這種通信方式下,最經典的就是面向服務的通信方式(Service-Oriented Communication),當然也會有面向信號方式的存在。
?
面向服務的通信,顧名思義,這種通信是為了對服務的相關信息進行傳輸。服務是什么呢?簡單理解就是某一段代碼所能夠提供的某些功能。比如你在餐廳點餐,服務員(Server)就提供了一種“點餐”的服務(Service),你作為一個客戶(Client),就能夠使用這些服務。服務的相關信息有哪些呢?就是各種屬性信息、控制信息等內容。如果服務與服務使用者同在一臺電腦上,那么可以直接通過程序接口實現過程調用,如圖中A區域所示。但是如果服務與服務使用者位于不同的電腦,則需要進行遠程調用,如圖中B區域所示。在遠程調用時,就需要借助中間件及網絡傳輸實現信息傳輸,如圖中C區域所示,這種通信就是面向服務的通信,就是要通過一定的方式對服務的相關信息進行打包,打包后再把這些信息在網絡上進行傳遞。
?
?
在汽車以太網中目前采用的較多的是AUTOSAR組織提出的SOME/IP通信方式。這種通用方式是一種遠程過程調用RPC(Remote Procedure Call遠程過程調用)。在這種面向服務通信的方式中有三個比較關鍵的內容:服務接口、服務發現、信息打包方式(SOME/IP的一些其他內容以后再慢慢展開)。
?
服務接口(Service Interface):直白理解就是服務與外界通信的接口,也就是說服務模塊與外界溝通的基本出入口。可以簡單理解為你問服務員,我要魚丸粗面。服務員說,木有粗面。這種對話方式及內容就是服務接口。而至于為什么木有粗面,那就是服務員在接收到你的信息之后,根據他的大腦分析得到的結果,也就是服務的內部代碼處理的結果。在通信方面,我們更多關注的是服務接口,而不是服務的內部代碼分析過程。SOME/IP中規定的服務接口包含:雙向方法(Request & Response Method)、單向方法(Fire & Forget Method)、事件(Event)、屬性(Field)等幾項內容。
?
?
服務發現(Service Discovery,簡稱SD):用于協助客戶端去尋找可用服務的一種機制。服務(Service)部署在服務器端(Server),在具體實現時(實例化)會有些參數比如網絡地址可能會發生變化。為了能夠讓客戶端隨時找到服務器上的服務,因此需要這種服務發現機制。可以簡單理解為服務發現(SD)是Service的秘書。SD清楚的知道Service的地址、狀態等內容。就像你要找大領導簽字,你先問一下秘書,領導在嗎、什么時間有空。秘書會告訴你,領導今天在哪個會議室開會,什么時間段有空。在SOME/IP SD包含了發現服務、提供服務、停止提供服務、訂閱事件組、停止訂閱事件組等7種類型的服務發現相關報文。
?
信息打包方式:用于將服務信息和服務發現的信息進行打包,并通過網絡進行傳輸。針對不同的應用場合服務接口的內容會有所不同,因此也就會有不同的打包協議,不同協議對這些信息的打包方式均有所不同。比如在SOME/IP中,打包的內容就包括:報文ID、請求ID、協議版本、接口版本以及處理之后(序列化)的服務接口信息等內容。SOME/IP協議中對請求、無返回的請求、通知、響應、錯誤等五種類型的信息進行打包,即SOME/IP有上述五種報文類型。而前邊提到的SOME/IP SD信息的打包,就是使用的通知(Notification)的報文類型。
?
?
下圖是Vector的AUTOSAR協議棧中截取的一部分,圖中紅色框出來三個模塊就涉及到了上文提到的三個部分。SW-C的全稱為Software Component,包含的服務代碼實現了服務,其對外接口就是服務接口;SD模塊實現了服務發現的內容,管理服務的地址信息、狀態信息等內容;SOME/IP模塊實現了數據的傳輸控制,用于服務接口數據的上下傳遞。
?
?
總結
以上是生活随笔為你收集整理的面向服务通信与面向信号通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BEC 中级心得
- 下一篇: HEW3工程链接错误(L2330 (E)