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