標籤:

UDS診斷入門

UDS診斷入門

來自專欄汽車CAN匯流排

UDS(Unified Diagnostic Services,統一的診斷服務)診斷協議是ISO 15765 和ISO 14229 定義的一種汽車通用診斷協議,位於OSI模型中的應用層,它可在不同的汽車匯流排(例如CAN, LIN, Flexray, Internet 和K-line)上實現,其中關於CAN匯流排UDS協議的定義是ISO 14229-3,關於LIN 匯流排UDS協議的定義是2015 年發布的ISO 14229-7,目前大部分汽車廠商均採用UDS 診斷協議。

UDS本質上是一系列的服務,共包含6大類26種。每種服務都有自己獨立的ID,即SID。

SID:Service Identifier,診斷服務ID。UDS本質上是一種定向的通信,是一種交互協議(Request/Response),即診斷方給ECU發送指定的請求數據(Request),這條數據中需要包含SID。如果是肯定的響應(Positive Response),回復[SID+0x40],就是請求10,響應50;請求22,響應62,回復的是一組數據。如果是否定的響應(Negative Response),回復7F+SID+NRC,回復的是一個聲明。

肯定響應和否定響應的形式一定要熟記。

UDS的26種服務中,有7種很重要。它們分別是:$10 Diagnostic Session Control(診斷會話),$14 Clear Diagnostic Information(清除診斷信息),$19 Read DTC Information,$22 Read Data By Identifier(通過ID讀數據),$27 Security Access(安全訪問),$2E Write Data By Identifier(通過ID寫數據),$3E Tester Present(待機握手)。下面對這7個服務進行解讀。

$10診斷會話

$10包含3個子功能,01 Default,02 Programming,03 Extended,ECU上電時,進入的是默認會話(Default)。如果您進入了一個非默認會話的狀態,一個定時器會運轉,如果一段時間內沒有請求,那麼到時間後,診斷退回到默認會話01。當然,我們有一個$3E的服務,可以使診斷保持在非默認的狀態。

UDS包含4種類型,即SID,SID+SF(Sub-function),SID+DID(Data Identifier)(讀寫用),SID+SF+DID。

NRC:Negative Response Code(否定響應碼)。如果ECU拒絕了一個請求,它會回應一個NRC。不同的NRC有不同的含義。

單詞:Consult(查閱) Session(會話) DTC (diagnostic trouble code)Handling(處理) Conditions(條件) restricted(受限的) Concept(概念)SA(source address 源地址) TA(目標地址)

例子:以CAN匯流排網路舉例。八個幀數據位元組,第一位元組是數據長度,

請求(Request):02 10 02 xx xx xx xx xx ; 02是後面有2個位元組,10是SID,02是子功能。

肯定響應:02 50 02 xx xx xx xx xx;02同上,10+40表示對SID的肯定回復,02是子功能。

否定響應:03 7F 10 22 xx xx xx xx;03同上,7F表否定響應,10是SID,22是NRC。

$3E待機握手

$3E服務用於向伺服器指示診斷儀仍然連接在網路上,之前已經激活的診斷服務功能可以仍然保持激活狀態。

$27安全訪問

$27安全訪問:ECU當中有很多數據,是整車廠獨有的,它不希望開放給所有客戶,它需要做一個保密的設定。我們在讀取一些特殊數據的時候,要先進行一個安全解鎖ECU上電之後是一個鎖定的狀態(Locked),我們通過$27服務,加上一個子服務,再加上一個鑰匙,這樣的服務請求可以進行解鎖。比如下面的例子,2n-1是一個子服務,通過首輪種子的請求,首輪ECU會返回67+01+AA+BB+CC+DD,AA~DD就是種子了。之後第二輪,診斷端會利用種子進行運算(利用整車廠的演算法),生成k1(不一定是1個位元組),那麼發送請求,27+02+[k1]。ECU同樣也會通過種子算出k2。當k1和k2匹配時,解鎖(Unlocked)成功。

當然,$27安全訪問 服務的NRC(否定響應碼)是很多的。還記得剛才否定響應的格式嗎?7F+27+NRC。

$22讀數據

$22讀數據,Request(請求):22+DID(Data Identifier,通常是兩個位元組)

Response(響應):62+DID+Data

DID有一部分已經被ISO 14229-1規定了。比如0xF186就是Active Diagnostic Session Data Identifier(當前診斷會話數據標識符),0xF187就是Vehicle Manufacturer Spare Part Number Data Identifier(車廠備件號數據標識符),0xF188就是Vehicle Manufacturer ECU Software Number Data Identifier(車廠ECU軟體號碼數據ID),0xF1889就是Vehicle Manufacturer ECU Software Version Number Data Identifier。

$2E寫數據

$22寫數據,Request(請求):2E+DID+Data

Response(響應):6E+DID

注意,比如0xF186這個DID不支持直接寫入數據,需要用$10來進行會話轉換。也就是說,對於寫數據的請求,一般來說需要在一個非默認會話,和解鎖的狀態下才能進行。

$19 讀DTC

DTC(diagnostic trouble code):如果系統檢測到了一個錯誤,它將存儲為DTC。DTC可表現為:一個顯而易見的故障;通訊信號的丟失(不會使故障燈亮起);排放相關的故障;安全相關的錯誤等。DTC可以揭示錯誤的位置和錯誤類型。通常DTC佔用3個位元組,OBD II佔用兩個位元組。圖中FTB為Fault Type Byte。

$19擁有28個子服務(Sub-Function)。常用的子服務有02(通過DTC狀態掩碼讀取DTC),04(讀取快照信息),06(讀取擴展信息),0A(讀ECU支持的所有DTC數據)。

一個DTC除了它自己的3個位元組,還有一個位元組專門用於表達DTC的狀態。這個狀態位元組每個位的含義可以查詢ISO 14229-1。注意,並不是所有的DTC狀態都是支持的。下圖是Request/Response。括弧標識循環,可以讀出很多DTC。

$14清除DTC

清除(複位)DTC格式,它可以改變DTC的狀態。3個FF代表清除所有DTC。

Request:14+FF+FF+FF;

Response:54 。

我們剛才學完了7種重要的服務,SID。除此之外,在CAN匯流排中,Addressing information定址信息通過CAN幀ID體現出來。

通訊的模式分兩種,一種是物理定址點對點),根據物理地址的不同進行訪問,但只能訪問單個ECU節點,Test為SA源地址,ECUX作為TA目標地址;對應的,另一種是功能定址廣播),根據功能的不同進行訪問,它能訪問多個ECU節點。

每一個ECU都有2個CAN幀ID,分別對應收和發的物理定址

以上只是一些粗淺的理解。對26種服務更詳細的解讀請拉到屏幕下方參考張老師的8篇文章。張老師也開通了微信公眾號,可以了解一下。

UDS應用的設備

在UDS 診斷產品中知名度最高,應用最廣泛的是德國Vector公司的CAN case 配合其CANoe 軟體,Vector 產品功能齊全,適合系統級汽車匯流排開發,被大部分汽車廠商採用。Vector 產品因不開放API,不能做二次開發且價格昂貴,不適用於硬體開發團隊和生產線的自動化測試。目前市面上有很多CAN 廠商(如Kvaser, ZLG 等)能提供低成本、體積小、驅動簡單、開放API 的設備,很適合進行二次開發。

雜記

變速器控制單元TCU和防抱死系統ABS是CAN車載網路上的兩大電子控制單元, 這2個ECU要通過CAN網路進行大量的信息交互。但是由於電磁干擾、串擾、靜電等外界干擾或電控單元本身控制策略引起的通信停止等原因, 2個控制單元之間可能會出現通信丟失的現象。控制系統需要將故障信息(例如通信丟失故障信息) 診斷出來, 以處理通信被破壞時出現丟失幀的故障現象, 並記錄為DTC (diagnostic trouble code)。

ECU的輸入信號主要有4種形式: ①模擬信號(水溫、油壓、蓄電池電壓等); ②數字信號(各種開關信號等); ③PWM信號(脈衝信號、頻率信號等); ④網路信號(CAN、LIN上傳輸的信號)。微控制器可以通過監測這些信號來判別輸入電路的工作狀況。輸出的信號往往用作控制電磁閥、指示燈、步進電機等, 大多數為數字信號。

學習資料:

1.統一診斷服務 (Unified diagnostic services , UDS) (一)

2.統一診斷服務 (Unified diagnostic services , UDS) (二)

3.統一診斷服務 (Unified diagnostic services , UDS) (三)

4.統一診斷服務 (Unified diagnostic services , UDS) (四)

5.統一診斷服務 (Unified diagnostic services , UDS) (五)

6.統一診斷服務 (Unified diagnostic services , UDS) (六)

7.統一診斷服務 (Unified diagnostic services , UDS) (七)

8.基於CAN匯流排實現的UDS診斷(DoCAN)

9.【圖文】UDS診斷服務_百度文庫

10.CAN診斷基礎-上部分_圖文_百度文庫

11.CAN診斷-下_已讀_圖文_百度文庫

12.ISO 14229+統一診斷服務

13.帳號登錄

14.ISO 15031-5-2015


推薦閱讀:

汽車CAN匯流排基礎介紹
如何理解ISO15765-4協議——一個OBD診斷協議
為什麼CAN能取代RS485?
基於CAN匯流排實現的UDS診斷(DoCAN)

TAG:CAN匯流排 |