1 摘要
本文繼續對ISO 13400-2定義的節點管理報文進行介紹,主要對路由激活請求/響應報文以及在線檢查請求/響應報文的作用、幀結構以及示例進行介紹。
上文回顧:
車載以太網網絡測試-19【傳輸層-DOIP協議-2】
在進行詳細介紹之前,還是先回顧一下DOIP診斷通信流程的示意圖,如下圖:
原文鏈接:
車載網絡測試-DOIP診斷通信流程分析
2 0x0005:Routing activation request報文
在車輛發現階段結束后,外部診斷儀已經知道了對哪臺車以及哪個DoIP節點進行診斷,也獲取了必要的信息,這時就需要發送路由激活請求報文,在診斷設備和被診斷的DoIP節點間建立起TCP連接,以便于發送診斷數據(診斷報文都是用TCP來發送的)。
2.1 Routing activation request報文的作用
DOIP(Diagnostics over Internet Protocol)協議中的 Routing Activation Request 報文是用于在車輛診斷通信中激活診斷通信路徑的重要報文。
它的主要作用如下:
-
激活通信路徑:
在DOIP協議中,診斷通信的雙方(如診斷工具和車輛ECU)需要建立一個邏輯連接,才能進行后續的診斷數據傳輸。
Routing Activation Request 報文用于請求激活某個特定的通信路徑,使診斷工具能夠與目標ECU建立連接。 -
工作流程:
- 診斷工具向目標ECU發送 Routing Activation Request 報文。
- 目標ECU接收到請求后,檢查自身狀態和請求參數。
- 如果請求有效,ECU會回復 Routing Activation Response 報文,確認通信路徑已激活。
- 診斷工具收到確認后,即可開始發送診斷請求(如讀取故障碼、寫入數據等)。
Routing Activation Request 報文是DOIP協議中用于建立診斷通信連接的關鍵報文。它確保了診斷工具與目標ECU之間的通信路徑被正確激活,為后續的診斷操作提供了基礎。
2.2 Routing Activation Request 報文幀結構
報文的數據格式如下:
DOIP協議的Routing Activation Request報文幀結構如下:
字段 | 長度(字節) | 描述 |
---|---|---|
Source Address(SA) | 2 | 發送方的邏輯地址 |
Activation Type | 1 | 激活類型,表示請求的路由激活類型 |
Reserved by this document | 4 | 保留字段,通常為 0x00000000 |
Reserved for VM-specific use | 4 | 保留字段,通常為 0x00000000 |
數據共11字節,包含以下內容:
1.源地址(SourceAddress):
外部診斷設備的邏輯地址。這個邏輯地址用于對某個特定的DoIP節點進行尋址,與UDSonCAN中的CAN ID是類似的概念,是在網絡架構設計階段就分配好的。
標準中的范圍劃分如下圖所示:
其中:
- 紅色框內的范圍用于診斷設備的邏輯地址,0x0E00-0x0E7F用于OBD診斷,0x0E80-0x0EFF用于增強型診斷。
- 藍色框內的邏輯地址用于DoIP節點,與UDSonCAN類似,節點的邏輯地址有兩個,一個是物理邏輯地址,在0x0001-0x0DFF或0x1000-0x7FFF范圍內,另一個是功能尋址,是0xE000。
2. 激活類型(activation type):
用于診斷設備通知被診斷DoIP節點進入哪種類型的診斷狀態。定義如下:
- 表示請求的路由激活類型,常見的值包括:
0x00
:默認激活類型,用于常規診斷通信。0x01
:用于全球統一的車輛診斷(World Wide Harmonized On-Board Diagnostics)。0xE0
:用于中央安全相關的診斷通信。
2.3示例報文
流程如下圖所示,先與DoIP實體通過TCP建立連接:
然后測試儀發送負載類型為0x0005的路由激活請求,Doip實體響應負載類型為0x0006的激活響應報文。
3 0x0006:Routing activation response報文
3.1 Routing activation response報文的作用
在DoIP協議中,Routing activation response報文的作用是確認診斷請求的激活狀態。
具體來說,Routing activation response報文的作用包括:
-
確認激活請求:當診斷工具發送Routing activation request報文請求激活某個通信通道時,車輛中的DoIP實體(如ECU)會通過Routing activation response報文來確認該請求是否成功。
-
返回激活狀態:Routing activation response報文中包含一個狀態碼,用于指示激活請求的結果。例如,狀態碼可以表示成功激活、激活失敗或激活被拒絕等。
-
提供附加信息:除了狀態碼外,Routing activation response報文還可能包含其他相關信息,如激活的通信通道的詳細信息或錯誤描述。
-
確保通信準備就緒:通過發送Routing activation response報文,車輛中的DoIP實體通知診斷工具通信通道已準備好進行后續的診斷數據傳輸。
總結來說,Routing activation response報文的主要作用是確認診斷請求的激活狀態,并確保診斷工具和車輛之間的通信通道已成功建立,為后續的診斷數據傳輸做好準備。
3.2 Routing activation response報文幀結構
路由激活響應報文主要是對上面路由激活請求報文的響應,的數據格式如下:
響應中的參數定義如下:
- 診斷設備邏輯地址(Logical address of the external test equipment):診斷儀的邏輯地址。
- DoIP節點邏輯地址(Logical address of the responding DoIP entity):DoIP節點物理邏輯地址。
ISO 13400-2 是診斷通信標準的一部分,主要涉及基于IP的診斷通信(DoIP,Diagnostics over Internet Protocol)。在DoIP協議中,路由激活響應碼(Routing Activation Response Code)是一個關鍵參數,用于指示路由激活請求的處理結果。
- 路由激活響應碼(Routing activation response code):1字節,它由DoIP實體(如車輛中的DoIP網關或ECU)發送,以告知請求方(如診斷工具)路由激活請求的處理狀態。它確保了診斷通信的可靠性和高效性,并提供了明確的錯誤處理機制。通過理解和使用路由激活響應碼,診斷工具可以更好地管理與車輛ECU的通信。比如:用來表示TCP連接建立是否成功,以及不成功的原因。
定義如下表所示,Required Action欄展示了DoIP節點在返回響應后應該采取的操作。
- 其余字段為預留或自定義字段,不常用。
3.3 常見Routing activation response code示例
- 路由激活成功(10)
- 不支持的SA地址(0x00)
如下圖, 0x0101是DoIP實體不支持的SA地址,所以DoIP實體響應了0x00 狀態碼。
- 已經激活的TCP連接上使用不同的SA地址(0x02)
如下圖,在已經激活的TCP連接上,使用了不同的SA地主,DoIP實體報0x02狀態碼
- 不同的TCP連接上使用相同的SA地址(0x03)
如下圖,在不同的TCP連接上,不可以使用相同的SA地址,否則Doip實體報0x03狀態碼
4 0x0007:Alive check request與0x0008:Alive check response報文
在ISO 13400-2標準中,0x0007:Alive Check Request 報文用于診斷通信中的連接保持機制。它的主要作用是確認通信雙方(客戶端與服務器)之間的連接是否仍然活躍。
4.1 Alive check request與Alive check response報文作用
-
檢測連接狀態
客戶端(如診斷工具)向服務器(如車輛ECU)發送Alive Check Request報文,以確認服務器是否仍然在線并能夠響應請求。 -
保持會話活躍
在某些診斷協議中,會話可能會因為長時間無通信而超時關閉。通過定期發送Alive Check Request報文,可以防止會話超時,保持會話的活躍狀態。 -
網絡健康檢查
通過發送Alive Check Request報文,可以檢測網絡通信是否正常,是否存在丟包或延遲等問題。
應用場景:
- 在長時間診斷過程中,定期發送Alive Check Request以保持會話。
- 在網絡通信不穩定時,檢測連接是否正常。
- 在測試或調試過程中,驗證診斷通信的可靠性。
不攜帶DoIP數據,報文中只有DoIP報頭。
4.2 Alive check request與Alive check response報文示例
前提:已經建立了TCP連接,測試儀再次發送路由激活請求的時候,DoIP實體才會發出在線檢測請求報文。
- 情況1:
如下圖日志,在第二次TCP連接后,發送路由激活請求后,DoIP實體發送負載類型為0x0007的在線檢測報文,這里測試儀給了邏輯地址為0x0008的響應報文,并且Soure address參數為0E80,告訴DoIP實體,SA地址為0E80的診斷儀仍然在線。
- 情況2:
Doip實體發出在線檢測報文后,診斷設備沒有在超時時間(T_TCP_Alive_Check )內給出響應,Doip節點會主動斷開TCP連接,并且給出路由激活肯定響應報文。
注意,TCP斷開連接的端口是第一次TCP連接時的端口。
4.3 0x0008:Alive check response
診斷設備收到DoIP節點Alive check request報文后,發送Alive check response報文,數據中攜帶兩字節的診斷設備邏輯地址:
此外,診斷設備也可以在沒有收到請求報文的情況下向DoIP節點發送該響應報文,以通知DoIP節點診斷設備仍然在線,類似于CAN總線的3E 00/80報文。
5 總結
上個專題與本文對ISO 13400-2定義的所有節點管理報文的作用、幀結構以及示例進行了詳細介紹。希望能對大家理解DOIP協議所有幫助!