詳解UDS CAN診斷:什么是UDS(ISO 14229)診斷?
1
UDS診斷概念
UDS(Unified Diagnostic Services,統一的診斷服務)診斷協議是在汽車電子ECU環境下的一種診斷通信協議。簡單來說,可以理解為UDS診斷協議就是ISO 14229協議,在ISO 14229協議中定義了UDS服務用法、服務格式等信息。
UDS診斷最主要目的是為了能夠快速準確判斷車輛或者某個控制器的故障以及故障原因,從而為維修提供可靠的依據。
2
UDS診斷組成部分
截止到2020年,UDS診斷由以下8個部分組成:
ISO 14229-1-2020:規范和要求;
ISO 14229-2-2013:會話層服務;
ISO 14229-3-2012:CAN實現的統一診斷服務(UDSonCAN) ;
ISO 14229-4-2012:FlexRay實現的統一診斷服務(UDSonFR) ;
ISO 14229-5-2013:Internet協議實現的統一診斷服務(UDSonIP);
ISO 14229-6-2013:K線實現的統一診斷服務(UDSonK-Line) ;
ISO 14229-7-2015:本地互聯網絡實現的統一診斷服務(UDSonLIN);
ISO 14229-8-2020:時鐘擴展外圍接口實現的統一診斷服務(UDSonCXPI)。
在開放系統互連(OSI)基本參考模型中規定了各類物理層通信對應部分的UDS診斷協議。例如,CAN通信(ISO 11898-1、ISO 11898-2和ISO 11898-3)在應用層的UDS診斷協議是ISO 14229-1和ISO 14229-3。
3
UDS診斷服務
UDS診斷是一種定向通信的交互協議(Request/Response),診斷方(Tester)發送服務請求,ECU返回響應(肯定響應/否定響應)。


UDS診斷包括6大類,26種服務,每種服務都有自己獨立的ID,即SID(Service Identifier)。

UDS診斷服務的通信協議基本相似,但又有所區別。
以診斷和通信管理功能單元(Diagnostic and Communication Management functional unit )為例,服務請求和響應有兩類:一類是具有Subfunction(子功能),另一類是不具有Subfunction(子功能)。
不具有Subfunction(子功能)的UDS診斷服務請求和響應機制如下圖所示:

診斷方(Tester)向ECU發送指定的請求數據(Request),這條數據中需要包含SID,且SID處于該應用層數據的第一個字節。
ECU接收到請求數據(Request)后會返回響應,可返回肯定響應或者否定響應。
肯定響應(Positive Response)格式為:(SID+0X40)+數據。例如,請求0X10服務,肯定響應第1個字節為0X50;請求0X22服務,肯定響應第1個字節為0X62。
否定響應(Negative Response)格式為:0X7F+SID+NRC。例如,請求0X10服務,否定響應第1個字節為固定的0X7F,第2個字節為0X10,第3個字節為NRC。NRC是否定響應碼,可以根據返回的NRC判斷是什么原因導致的否定響應。
具有Subfunction(子功能)的UDS診斷服務請求和響應機制如下圖所示:

診斷方(Tester)向ECU發送指定的請求數據(Request),這條數據中需要包含SID,且SID處于該應用層數據的第一個字節。
ECU接收到請求數據(Request)后會返回響應,可返回肯定響應或者否定響應。
肯定響應(Positive Response)格式為:(SID+0X40)+Subfunction(子功能)+數據。例如,請求0X10服務,Subfunction(子功能)為0X02,肯定響應第1個字節為0X50,第2個字節為0X02。
否定響應(Negative Response)格式為:0X7F+SID+NRC。例如,請求0X10服務,否定響應第1個字節為固定的0X7F,第2個字節為0X10,第3個字節為NRC。NRC是否定響應碼,可以根據返回的NRC判斷是什么原因導致的否定響應。
本篇博文不再贅述UDS服務所有類型的協議格式,在之后的博文中會詳細講解每種類型每個ID服務的協議和功能。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。