車載以太網 - SOME/IP簡介


SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是車載以太網通信引入的一個概念,位於OSI 7層模型的層4之上。在以CAN總線為主的車載網絡中,通信過程是面向信號的(除了診斷通信之外),這是一種根據發送者需求實現的通信過程,當發送者發現信號的值變化了,或者發送周期到了,就會發送信息,而不考慮接收者是否有需求。而SOME/IP則不同,它是在接收方有需求的時候才發送,這種方法的優點在於總線上不會出現過多不必要的數據,從而降低負載。

在車載網絡中,某個ECU有時會需要調用實現在其他ECU上的個服務,這個時候它倆就分別扮演了client和server的角色,而SOME/IP就是實現這種遠程服務調用的接口,如下圖所示。

服務的遠程調用SOME/IP數據在以太網報文中的位置

 

從上面這個圖可以看出來,SOME/IP其實是構架在傳輸層之上的應用層通信協議,它的內容雖然很多很雜,但本質上也就是定義了SOME/IP 包頭和數據的內容而已。

從上面這個圖可以看出來,SOME/IP其實是構架在傳輸層之上的應用層通信協議,它的內容雖然很多很雜,但本質上也就是定義了SOME/IP 包頭和數據的內容而已。

SOME/IP 數據的格式

上圖是SOME/IP數據的格式,除了最下面的Payload之外都屬於SOME/IP的header,這里面的字段不一一介紹,只提一下Message Type [8 Bit],它有以下幾種取值:

  • REQUEST (期待響應的請求)
  • REQUEST_NO_RETURN(不期待響應的請求)
  • NOTIFICATION(事件通知)
  • RESPONSE(響應消息)
  • ERROR(報錯消息)

REQUEST,REQUEST_NO_RETURN,RESPONSE屬於同一類遠程過程調用方法,當client有需求的時候,發送一個request消息,server根據這個消息類型(REQUEST或REQUEST_NO_RETURN)來決定是否發送response消息。過程如下圖所示。

方法調用過程(圖片來源vector網站)

NOTIFICATION屬於事件通知類的服務,首先由client向server訂閱服務內容,然后server向client自動發布服務內容。

Event Notification(圖片來源vector網站)Field Notification(圖片來源vector網站)

NOTIFICATION又分為Event和Field 兩類,這兩類通知都需要首先使用SOME/IP-SD(Service Discovery)來進行服務訂閱,然后才能發布通知。區別在於,Event是某一時刻的快照,只是事件通知,而Field除了事件通知之外,還具有Getter和Setter的功能,即對信息進行讀寫的操作。

SOME/IP-SD可以被當作SOME/IP的一種特殊服務,前面提到過,client可以遠程調用server提供的服務,或者訂閱server發布的內容,那么client是怎么知道server提供哪些服務呢,就是通過SOME/IP-SD來實現服務發現過程的。

SOME/IP-SD的報文格式

從上圖可見,SOME/IP-SD是一種特殊的SOME/IP格式,它對SOME/IP-SD報文中的Payload進行了定義和實現。而Message ID字段則是固定的0xFF FF 81 00。

SOME/IP-SD提供了兩種動態發現服務的機制。一種是Offer Service ,由server向網絡上的小伙伴告知它所提供的服務;另一種是Find Service ,由client向別人請求可用的服務。

本文只是簡要介紹,不對通信過程和協議內容做過多分析。

如果大家對此部分內容感興趣,可以參考下面這個網站,

這上面有與SOME/IP相關的全部詳細信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM