UDS协议入门之10服务
前言
ISO-14229中按各服務的功能將uds協議劃分為六大類:
其中,10(DiagnosticSessionControl)服務屬于第一類,主要作用就是客戶端向服務器請求控制診斷會話。
簡介
10服務用于控制ECU在不同的診斷會話(session)間進行切換。診斷會話(session)可以看作是軟件所處的一種狀態,在不同會話下可以支持不同的診斷服務或功能。
正常情況下,ECU始終只有一個診斷會話處于活動狀態,在ECU上電啟動時,應自動進入默認診斷會話,如果運行期間沒有啟用其他診斷會話的話,就會一直處于默認會話。
服務格式
請求格式
DiagnosticSessionControl這個服務的SID是0x10,request固定為2個byte,第一個byte是SID,第二個byte的低7bit是sub-function,用于指示ECU將進入的session。
其中sub-function 值含義如下:
| 0x00 | ISOSAEReserved(保留) |
| 0x01 | defaultSession |
| 0x02 | ProgrammingSession |
| 0x03 | extendedDiagnosticSession |
| 0x04 | safetySystemDiagnosticSession |
| 0x05 – 0x3F | ISOSAEReserved(保留) |
| 0x40 – 0x5F | vehicleManufacturerSpecific(由整車廠自定義使用) |
ECU上電之后,默認處在defaultSession中,在這個session中很多診斷服務不可以執行,很多診斷相關的數據不能讀取或寫入。ProgrammingSession 編程會話通常只有bootloader去使用。
一般的診斷儀啟動之后,會給ECU發送10 03,即讓ECU進入 extendedDiagnosticSession(擴展會話)中,在這個session中有很多可執行的診斷服務。而如果要讓ECU保持在non-defaultSession中,則需要診斷儀每隔固定的時間發送0x3E服務,ECU才會知道診斷儀有和自己通信的需求,從而保持在non-defaultSession中。
響應格式
肯定響應
第一個BYTE:對請求的echo,為SID+0x40
第二個BYTE:對請求的echo,為sub-function
后面幾個BYTE為診斷會話參數,長度一般是四個字節,其具體含義如下:
前兩個字節代表P2Server_max,即ECU在應用層上對診斷命令的默認響應時間,后兩個字節代表P2*Server_max,即ECU在暫時無法處理當前診斷命令(具體表現為發送了NRC 0X78),在應用層上對診斷命令響應的最長時間。
否定響應
第一個BYTE:固定為0x7F
第二個BYTE:對請求的echo,為SID+0x40
第二個BYTE:NRC。
總結
以上是生活随笔為你收集整理的UDS协议入门之10服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代制造工程课堂笔记07——应力应变分析
- 下一篇: redis:Invalid input