如果我們說uds診斷服務是實現人或裝置與ecu控制器交流的一種語言,那麼診斷服務的響應規則就如同是語法,而sid(service id)定義就如同詞彙。因此了解響應規則和sid的意義就基本能了解與ecu溝通的方法和含義。本文先來介紹一下響應規則。
1.定址方式
在匯流排上往往有著眾多ecu裝置,作為診斷裝置既可以與所有的ecu一起溝通,也可以指定某乙個ecu單獨溝通。所以定址方式就有功能定址(functionally addressed)和物理定址(physically addressed)兩種。
物理定址
功能定址可以廣播診斷請求request,同時等待匯流排上的ecu給與響應。
物理定址
物理定址指定傳送特定診斷請求request,等待指定ecu給與響應。
因此我們的診斷報文一般會有三個can id,其中diagrequest(診斷物理請求報文)和diagstate(診斷功能請求報文)是ecu接收來自client的報文,而diagrespone(診斷響應報文)是ecu反饋的報文。
例如下圖的0x7ff和0x731分別是功能請求報文和物理請求報文,而0x7b1則是診斷響應報文。
2.請求和響應格式
診斷請求request
uds服務中共定義了26個服務請求sid(service id),每個sid代表了一類指令。由於有些服務請求還需要表達具體的功能型別,比如是開啟還是關閉,是讀取還是修改等,因此uds中還定義了sub-function來補充sid的意圖。另外服務請求有時候還需要告知ecu具體的引數資訊parameter,例如計數資訊。因此診斷請求的格式基本上是sid + sub-function + parameter三部分組成的,其中sid乙個byte,sub-function乙個byte(其中最高位是禁止肯定響應指示位,0則表示需要肯定響應,1則表示禁止肯定響應),parameter根據具體情況定義。
肯定響應postive response
收到client的診斷請求後,ecu可能反饋肯定響應或者否定響應。肯定響應在診斷請求的sid上+0x40表示確認。例如診斷請求sid為0x10,則肯定響應反饋0x50。
否定響應negative response
當ecu反饋為否應響應時格式為,nr_si(否定響應服務碼0x7f) + sid(否定的請求服務sid)+ nrc(否定響應碼,表示否定的理由)。
常見的否定響應碼如:
80%
uds幀格式 UDS診斷幀
uds診斷服務通常是通過can匯流排實現。對於can診斷幀有兩種不同的分類方式,按照定址方式可以分為物理定址 功能定址,按照幀類別可以分為單幀 首幀 流控幀 連續幀。定址方式 在匯流排上往往連著眾多ecu裝置 如圖1所示 作為診斷裝置既可以單獨與某一ecu進行通訊,也可以同時與所有匯流排上的ecu裝...
UDS請求和響應的資料幀格式
其實診斷通訊的機制很簡單,可以模擬client server通訊方式,即客戶端傳送request,伺服器收到request之後進行處理,然後向客戶端傳送response。但是,診斷協議有自己的特色,它規定了在request和response的格式,在收到request的時候要做格式的檢查。同時由於定...
UDS診斷入門學習資料
uds診斷入門學習資料學習資料 1.統一診斷服務 unified diagnostic services uds 一 2.統一診斷服務 unified diagnostic services uds 二 3.統一診斷服務 unified diagnostic services uds 三 4.統一診...