DoIP(四)—— 时间参数
1. 參數列表
下表為標準中定義的DoIP時間參數:
2. 參數示意圖
我們把這些時間參數放在通訊流程中,能更加清晰直觀地看出各參數的作用:
3. 參數詳解
我們按照上圖中的順序依次看一下各個參數。
(1)A_DoIP_Announce_Wait
這個時間參數應用場景有兩個:
- DoIP節點在獲取IP地址成功到發送第一個車輛聲明報文的時間間隔
- DoIP節點在收到診斷設備發送的車輛信息請求報文后發送車輛信息響應報文的時間間隔
該參數是0-500ms的一個隨機值,之所以設置為隨機值是為了避免所有DoIP節點同時發送車輛聲明報文或車輛信息響應報文,造成網絡堵塞。
(2)A_DoIP_Announce_Interval
該參數是指三條車輛聲明報文之間的時間間隔,為500ms。
(3)A_DoIP_Announce_Num
這個參數不是時間參數,是指DoIP節點發送車輛聲明報文的次數,標準定義為3次。
(4)A_DoIP_Ctrl
該參數值診斷設備發送完上一個UDP報文后的等待響應的最長等待時間,注意兩點:
(5)A_Vehicle_Discovery_Timer
該參數是指留給車上DoIP節點做GID同步的時間,診斷設備只有在收到的車輛信息響應報文或車輛聲明報文中帶有**有效的 VIN/GID 且 VIN/GID sync. status 為 “incomplete(0x10)”**時,才會啟動該定時器,等待車上的DoIP節點進行GID同步。該定時器超時時間為5s,超時后診斷設備可再次請求車輛信息。該參數的示意圖如下圖所示:
(6)T_TCP_Initial_Inactivity
該參數指DoIP節點在建立TCP連接后等待路由激活報文的最長等待時間,超時時間為2s,如果2S后仍沒有收到路由激活報文,DoIP節點將關閉TCP連接。
(7)T_TCP_General_Inactivity
該參數指DoIP節點在收到路由激活報文后,且沒有進行TCP數據交互的情況下,保持TCP連接的最長時間,超時時間為5min,超時后仍沒有任何TCP數據交互的話將關閉TCP連接。
(8)A_DoIP_Diagnostic_Message
該參數指DoIP節點在診斷報文接收完成后,到發送診斷ACK/NACK的時間間隔,該參數有兩層含義,對DoIP節點來說,它是對性能的要求,要求DoIP節點要在50ms內做出相應;對診斷設備來說,它是發送完診斷報文后的等待時間,超時時間為2s,超時后仍未收到診斷響應報文的話,應該重復發送該診斷報文。
(9)A_Processing_Time
有些UDS診斷請求是不需要診斷響應的(例如禁止肯定響應位為TRUE),診斷設備在發送完一個不需要響應的診斷報文后,應等待一段時間再發送下一個診斷請求,給ECU預留一段時間進行處理。A_Processing_Time就是指這個間隔時間。
(10)T_TCP_Alive_Check
該參數指DoIP節點在發送了一個診斷設備在線檢查請求報文后等待響應的時間,超時時間為500ms,如果超時后未收到響應,則DoIP節點判斷診斷設備已離線,關閉TCP連接。注意,當DoIP節點向TCP socket發送請求失敗時也應該啟動該定時器,應為這意味著診斷設備通信失敗,可能已經離線。
4. DoIP節點內部狀態機
DoIP節點在不同時刻處于不同的狀態,其內部除了TCP socket連接狀態外,還維護著一個DoIP邏輯連接狀態,狀態轉換示意圖如下圖所示:
圖中各個事件詳解:
[DoIP-127]
當一個新的套接字建立,邏輯連接的狀態就從“listen”跳轉到“socket initialized”,同時啟動定時器T_TCP_Initial_Inactivity。
[DoIP-128]
當DoIP節點接收到診斷設備發來的一個路由激活報文并被正確處理后,邏輯連接的狀態就從“socket initialized”跳轉到“Registered [Pending for Authentication]” ,此時定時器T_TCP_Initial_Inactivity被停止,啟動T_TCP_General_Inactivity定時器。
[DoIP-129]
在完成Authentication之后,邏輯連接的狀態就從“Registered [Pending for Authentication]”跳轉到“Registered [Pending for Confirmation]” 。
[DoIP-130]
在完成Confrmation之后,邏輯連接的狀態就從“Registered [Pending for Confirmation]”跳轉到“Registered [Routing Active] ” 。
[DoIP-131]
當DoIP節點進入Registered [Routing Active] 狀態前,除了路由激活報文、Authentication報文以及Confrmation報文,其余報文都不應該被處理和路由。
[DoIP-132]
如果T_TCP_Initial_Inactivity或T_TCP_General_Inactivity超時后仍沒收到后續請求,或者authentication 和 confrmation 被拒絕了,又或者外部測試設備對alive check 消息沒有響應,則邏輯連接進入“Finalize”狀態。
[DoIP-133]
當DoIP節點返回“Finalize”狀態后,此時TCP套接字將被關閉,并重新回到“listen”狀態,相應的資源被釋放,等待新的TCP連接。
總結
以上是生活随笔為你收集整理的DoIP(四)—— 时间参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL保留2位小数
- 下一篇: 麒麟810处理器_麒麟810性能实测:对