目錄
- 1 摘要
- 2 DoIP時間參數
- 2.1 ISO 13400定義的時間參數
- 2.2 參數示例
- 3 DoIP節點內部狀態機
- 4 UDSonIP概述
- 5 總結
1 摘要
本文繼續對DOIP協議進行介紹,主要是DOIP相關的時間參數、時間參數定義以及流程示例。推薦大家對上文專題進行回顧,有利于系統性學習DOIP協議。
上文專題回顧:
車載以太網網絡測試-21【傳輸層-DOIP協議-4】
2 DoIP時間參數
2.1 ISO 13400定義的時間參數
下表為標準中定義的DoIP時間參數:
以上,是ISO 13400-2定義的時間參數:
-
A_DoIP_Ctrl
該參數值診斷設備發送完上一個UDP報文后的等待響應的最長等待時間(Timeout:2S),注意兩點:
(1)如果該UDP報文以廣播形式發送給多個DoIP節點,那么這個時間指等待所有節點響應的完成的時間。
(2)該時間參數只針對UDP報文。 -
A_DoIP_Announce_Wait
該時間參數指定了DoIP實體在響應車輛識別請求之前等待的初始時間,以及在配置有效IP地址后DoIP實體在發送車輛公告消息之前等待的時間。 -
A_DoIP_Announce_Interval
該時間參數指定了在配置了有效的IP地址后,由DoIP實體發送的三條車輛聲明報文之間的時間間隔。延遲時間:500 ms -
A_DoIP_Announce_Wait
這個時間參數應用場景有兩個:
(1)DoIP節點在獲取IP地址成功到發送第一個車輛聲明報文的時間間隔
(2)DoIP節點在收到診斷設備發送的車輛信息請求報文后發送車輛信息響應報文的時間間隔
此時間參數的值應在最小值和最大值之間隨機確定,隨機時間:0-500ms;之所以設置為隨機值是為了避免所有DoIP節點同時發送車輛聲明報文或車輛信息響應報文,造成網絡堵塞。 -
A_DoIP_Announce_Num
該參數指定了在配置了有效的IP地址后,由DoIP實體發送的車輛公告報文的數量。標準定義:重復:3 次 -
A_DoIP_Diagnostic_Message
這是指指DoIP節點在接收到DoIP診斷報文的最后一個字節之后,到發送確認ACK或NACK之間的時間間隔。
該參數有兩層含義:
(1)對DoIP節點來說,它是對性能的要求,要求DoIP節點要在50ms內做出相應;**性能時間:50 ms
(2)對診斷設備來說,它是發送完診斷報文后的等待時間,超時時間為2s,超時后仍未收到診斷響應報文的話,應該重復發送該診斷報文。 -
T_TCP_General_Inactivity
該參數指DoIP節點在收到路由激活報文后,且沒有進行TCP數據交互的情況下,保持TCP連接的最長時間,超時時間為5min,超時后仍沒有任何TCP數據交互的話將關閉TCP連接。 -
T_TCP_Initial_Inactivity
此超時時間規定了在TCP_DATA套接字建立后,允許的最大無活動時間。如果在指定時間內(超時時間:2S)沒有路由激活,DoIP實體將關閉該TCP_DATA套接字。Timeout: 2 s -
T_TCP_Alive_Check
該參數指DoIP節點在發送了一個診斷設備在線檢查請求報文后等待響應的時間,超時時間為500ms,如果超時后未收到響應,則DoIP節點判斷診斷設備已離線,關閉TCP連接。注意,當DoIP節點向TCP socket發送請求失敗時也應該啟動該定時器,應為這意味著診斷設備通信失敗,可能已經離線。 Timeout: 500 ms -
A_Processing_Time:這個超時時間定義為從外部測試設備發送不需要響應報文(例如禁止肯定響應位為TRUE)但可能需要一些時間進行處理的時間間隔。因此,外部測試設備必須等待至少A_Processing_Time(處理時間)才能向同一個DoIP實體發送另一個請求。Timeout: 2 s
-
A_Vehicle_Discovery_Timer
該參數是指留給車上DoIP節點做GID同步的時間,診斷設備只有在收到的車輛信息響應報文或車輛聲明報文中帶有**有效的 VIN/GID 且 VIN/GID sync. status 為 “incomplete(0x10)”**時,才會啟動該定時器,等待車上的DoIP節點進行GID同步。Timeout: 5 s
2.2 參數示例
我們把這些時間參數放在通訊流程中,能更加清晰直觀地看出各參數的作用:
3 DoIP節點內部狀態機
DoIP實體通過TCP的五元組(源IP地址、目的IP地址、源端口號、目的端口號、協議類型)加邏輯地址來識別唯一的DoIP連接。因此,除了TCP socket連接狀態外,還維護著一個DoIP邏輯連接狀態,狀態轉換示意圖如下圖所示:
圖中各個事件詳解:
-
Connection state -: Listen
邏輯連接的初始狀態為Listen,表示節點正在等待與外部實體的連接。
(1)Listen狀態是DoIP節點在初始化完成并準備好接收連接請求時進入的狀態。
(2)在該狀態下,節點會監聽來自外部實體的TCP連接請求(通常是診斷客戶端或其他DoIP節點)。
(3)如果節點是服務器角色(例如ECU),它會持續監聽來自客戶端的連接請求。
(4)如果節點是客戶端角色(例如診斷工具),它可能會主動發起連接請求。 -
當TCP連接建立并進入ESTABLISHED狀態后,邏輯連接跳轉至Initialized狀態并啟動Initial inactivity timer;
注:Initial inactivity timer,當DoIP邏輯連接處于Initialized狀態時,如未收到有效的路由激活報文,當Initial inactivity timer超時后,DoIP實體會主動關閉此類無效的初始連接。ISO 13400中建議其初始值為2秒。 -
當接收到診斷儀發送的正確的路由激活報文后,跳轉至Registered [pending for authentication] 狀態,停止Initial inactivity timer并開啟General inactivity timer;
注:General inactivity timer,當DoIP邏輯連接處于Registered狀態時,如一段時間之內沒有數據的收發行為發生,當General inactivity timer超時后,DoIP實體會主動關閉此類不活躍連接。ISO 13400中建議其初始值為5分鐘,計時器在每一次數據收發時均會被重置為初始值。 -
Registered [pending for authentication] 狀態下,如認證完成或無需認證,跳轉至Registered [pending for confirmation];如果認證失敗、General inactivity timer超時或Alive check報文無響應,會跳轉至Finalize狀態;
-
Registered [pending for confirmation] 狀態下,如確認完成或無需確認,跳轉至 Registered [routing active],到此狀態,DoIP邏輯連接激活完成,可以開始進行診斷會話。如果確認失敗、General inactivity timer超時或Alive check報文無響應,會跳轉至Finalize狀態。
狀態機中認證(Authentication)和確認(Confirmation)的方法在ISO 13400中并無定義,如果有需求,可使用路由激活報文中的Activation type和Reserved for OEM-specific use字段來實現。
4 UDSonIP概述
ISO 14229-5 是 統一診斷服務(UDS) 標準的一部分,具體規定了 UDS over Internet Protocol (UDSonIP) 的實現方式。UDSonIP 是一種將 UDS 協議應用于基于 IP 網絡的診斷通信的方式,主要用于現代車輛中支持以太網通信的電子控制單元(ECU)。
1.UDS服務的特殊規定:
部分UDS服務在應用于DoIP的時候,由于以太網通信的特性,會有下文所述的一些特殊規則。
(1)DiagnosticSessionControl (0x10) service
診斷會話控制切換會導致TCP連接中斷,在再次開始診斷前要重新建立TCP連接,并發送路由激活報文。
(2)ECUReset (0x11) service
ECU復位會同樣會導致TCP連接斷開,路由激活失效,在再次開始診斷前也要重新建立TCP連接,并發送路由激活報文(針對所有相關DoIP節點)。
(3)ReadDataByPeriodicIdentifier (0x2A) service
這個服務我覺得其實沒啥影響,只是服務原語和CAN有所不同,涉及到的具體章節是ISO 14229-5-6.5,我也沒有仔細研究,大家用到的時候可以詳細查查標準原文。
2. 時間參數:
ISO 14229-2中定義的有關UDS會話層的時間參數,UDSonIP中常用的時間參數如下:
(1)P6
P6的概念和P2很像,都是發送方等待接收方的響應的時間,不同之處在于P2是剛開始接收到響應即停止,P6是響應完全接收完畢才停止。車載以太網因為本身實時性就不如CAN這一類的網絡,還可能涉及到路由轉發,所以網絡延遲可能比較長,所以有時候需要考慮P6。
(2)P4Server
P4Server這個時間參數其實不只是UDSonIP用到,UDSonCAN也可能用到,但用的比較少。它的含義是ECU接收到診斷請求后到最終的診斷肯定響應或否定響應(不包含NRC 0x78)的時間間隔,它是對ECU性能的要求,目的是防止ECU長時間返回NRC 0x78的否定響應。
當P4Server_max與P2Server_max相同的時候,就意味著不允許ECU返回NRC 0x78的否定響應。
標準中還規定,連續返回NRC 0x78時,時間間隔不能小于0.3 * P2*Server_max,以避免網絡中存在過多不必要的否定響應。
以上就是有關UDSonIP的內容,UDSonIP在其他方面與UDSonCAN沒有太大的不同。
5 總結
以上是對DOIP協議所有內容的介紹,希望能對大家學習DOIP協議所有幫助!