作為一個汽車產品人,不可避免的會接觸到各種車端通信協定,其中的UDS(Unified Diagnostic Services)診斷協定,廣泛應用於汽車電子系統的診斷和維護。這篇文章,我們來學習一下。
ECU( Electronic Control Unit)電子控制單元,車上搭載著許多ECU,用來監控和控制車輛的各個系統,如變速器控制單元(TCU)、電子穩定程式控制單元(ESP)、動力電池管理模組(BMS)等。各ECU根據各種感測器提供的信號,按照預先編寫的程式進行計算和判斷,從而控制執行器工作,以實現對汽車各系統的精確控制。
當我們身體的某個部位不舒服時,我們可以去醫院看醫生,這個時候醫生會詢問我們的感受,開具一些檢查來了解情況。同樣的,當車輛某個系統或部件有問題時,我們也需要通過某種手段獲取車輛的數據資訊,以更好的進行治療。UDS診斷協定就是我們和車輛ECU進行診斷溝通的一個通用手段。
UDS(Unified Diagnostic Services,統一診斷服務)診斷協定是一種廣泛應用於汽車電子控制系統中的標準化診斷協定,基於ISO 14229標準。它為汽車電子控制單元(ECU)之間的診斷通信提供了一套統一的框架和服務。這使得不同品牌的汽車和不同製造商的ECU可以使用相同的診斷工具進行診斷,大大提高了診斷的便利性和效率。
UDS診斷提供的能力包括
SID:UDS診斷協議定義了26種診斷服務,這些服務被分為6大類,每種服務都有一個唯一的服務標識符(SID)。
Sub-function:每個診斷服務下的子功能,有的診斷服務不需要指定子功能。Sub-function共有8個bit。
UDS診斷協議針對每一個服務,都詳細介紹了服務的功能範圍、給出了請求消息的定義要求、肯定回應消息的定義要求、受支援的否定響應代碼(NRC),以及消息流示例。
下面介紹幾個車聯網產品經理需要瞭解的常用服務
10服務用於啟用ECU中的不同診斷會話。不同的診斷會話支援的服務許可權不同。
請求消息
diagnosticSessionTypes診斷會話類型,第7位為正回應抑制位,第6至0位定義診斷會話類型。
肯定回應消息
sessionParameterRecord會話參數記錄定義如下,其中
P2Server_max:表示ECU在應用層上對診斷命令的回應時間。如果ECU在該時間內未能回應,可以認為通信超時。
P2*Server_max:表示ECU在強化模式下對診斷命令的回應時間。強化模式通常用於ECU暫時無法處理當前診斷命令的情況,ECU會發送一個NRC 0x78(RequestCorrectlyReceivedResponsePending)回應,表示請求已接收但回應待定。P2*Server_max定義了伺服器在這種情況下可以等待的最長時間。
19服務支援讀取故障碼(DTC,全稱Diagnostic Trouble Code)資訊。故障碼由製造商預先定義,可以簡單理解為給車輛的每個故障一個代號。當我們讀到DTC時,根據代號就知道發生了什麼故障。
19服務比較複雜,其下有27個子功能,常用的子功能包括:(Sub-function第7位為正回應抑制位,第6至0位定義具體子功能。)
1901(讀取DTC數量)
比如我們要獲取ECU中已確認DTC的數量。獲取DTC數量需要使用19 01服務,我們先看下01服務的
請求消息的定義要求、肯定回應消息的定義要求。
請求消息
DTCStatusMask(DTC狀態掩碼):
狀態掩碼共有8個狀態位,通過狀態掩碼,我們可以精確地獲取特定狀態的DTC資訊。比如我們請求消息的狀態掩碼的某一位設置為1,如果DTC的實際狀態位中的這一位也為1(即請求掩碼與DTC的實際狀態進行位邏輯AND運算,並且結果不為零),那麼認為DTC的狀態與狀態掩碼是匹配的。
肯定回應消息
DTC狀態可用性掩碼:用於指示ECU支援的DTC狀態位。比如某個ECU的DTC狀態可用性掩碼為0x09,表示僅支援以下狀態位:Bit 0:Test Failed(測試結果是失敗)、Bit 3:Confirmed DTC(確認的DTC)。
DTCFormatIdentifier(DTC格式識別碼):定義了ECU所報告DTC的格式
DTCCount(DTC計數):DTC數量
示例
現在我們獲取ECU中已確認DTC的數量,請求消息中的狀態掩碼應設置為0x08,所以請求消息為
若收到回應消息如下,說明該ECU支持的DTC狀態可用性掩碼為0x2F,DTC格式為14229,DTC數量為1。
22服務支援讀取ECU中通過一個或多個DID所識別的數據記錄值。
DID(Data Identifier)數據識別碼。DID的編碼範圍為16位(0x0000–0xFFFF),其具體含義和用途根據標準化定義或車輛製造商自定義而有所不同。由UDS協議進行標準化定義的DID中常用的有
請求消息
肯定回應消息
示例
比如我們想讀取VIN,VIN的DID為F190,所以請求消息
回應消息如下,VIN的數據格式為17位元組,ASCII編碼。
遠程診斷與OTA
基於UDS診斷協定,再結合車聯網技術,把原先通過線下診斷工具排查解決車輛問題的過程放到線上雲端,就有了遠端的車輛診斷。遠程診斷可以實現車輛故障的高效診斷與快速回應,降低維修成本,提升用戶體驗。同樣的,把原先通過線下刷寫工具刷寫軟體放到線上雲端,就有了OTA遠端更新。
本文由 @violetic 原創發佈於人人都是產品經理。未經作者許可,禁止轉載
題圖來自Unsplash,基於CC0協定
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供資訊存儲空間服務