UDS协议入门
UDS協議入門簡介
UDS簡介
UDS全稱為:Unified Diagnostic Services即統一診斷服務,因為各汽車廠的產品、型號、功能可能各不相同,為了方便管理和診斷測試,OSI制定了UDS通信協議,對通信的格式,內容定義等等作了規范,其中ISO-14229主要涉及到應用層,ISO-15765主要涉及到網絡層的內容,大家有興趣的話可以在網上自行搜索。
UDS服務分類
Diagnostic and Communication Management (診斷和通信管理)
Data Transmission (數據傳輸)
Stored Data Transmission (存儲數據傳輸,用于操作DTC)
InputOutput Control (IO控制)
Routine Control (遠程控制)
Upload Download (上傳下載)
UDS的部分術語
下面簡單列舉一些uds協議的常用到的術語,可能不是很全,后面慢慢再補充。
UDS的通信過程
診斷通信的過程,簡單來說就是診斷儀發送診斷請求(request),ECU給出診斷響應(response),而UDS就是為不同的診斷功能的request和response定義了統一的內容和格式。從AUTOSAR的整體架構來說就是從CAN->CAN Drv->CAN IF->CAN TP->PDUR->DCM->RTE->APPL,具體詳細的內容過多暫不展開講解。
Diagnostic request格式
Diagnostic request的格式可以分為兩類:一類是擁有sub-function的,另一類是沒有sub-function的,如下面所示。
擁有sub-function的診斷請求:
無sub-function的診斷請求:
其實sub-function嚴格來說是7個bit,而不是1個byte,因為它的最高位bit被用于抑制正響應(suppress positive response,SPR),如果這個bit被置1,則ECU不會給出正響應(positive response); 如果這個bit被置0,則ECU會給出正響應。這樣做的目的是可以告訴ECU不要發不必要的response,從而節約通信資源。
Diagnostic response格式
Diagnostic response分為positive和negative兩類。positive response意味著診斷儀發過來的診斷請求被執行了,而negative response則意味著ECU因為某種原因無法執行診斷儀發過來的診斷請求,而無法執行的原因則存在于negative response的報文中。
肯定響應(Positive response):
否定響應(Negative response):
NRC碼
下面這張圖列舉了部分原因代碼,比如,如果ECU給出7F 2F 33這個negative response,則說明2F這個服務因為診斷請求因為安全權限不足無法執行。
最后
因為在工作中用到了UDS,所以在此總結下學習所得,可能理解有誤或者有不足的地方,歡迎大家指正,后續會展開寫下UDS中的各項服務。
總結
- 上一篇: java处理url中的特殊字符%等
- 下一篇: 2019年1月16日【第三天学习】