最近因為項目上的需求,接觸了OBD診斷協議(整理一下筆記,以免忘記),從協議上說整體和UDS類似,關系如下圖所示:
OBD用來做什么
UDS是通用診斷協議,OBD是偏向于排放標準,前者的使用范圍更廣一些,大家對于OBD接觸會少一些,從我的理解,OBD主要用于如下事情:
1、用于監控整車基本信息參數,例如監控里程,車速,油門踏板位置等
2、用于監控排放相關參數,比如氧傳感器等,以保證滿足標準
3、用于故障DTC讀取,以及DTC發生時的凍結幀信息(相當于UDS快照)
4、OBD控制,這部分中國似乎不涉及
OBD服務
OBD協議服務介紹
SID
Description
服務描述
0x01
Request current powertrain diagnostic data
請求動力系統當前的數據(具體單個定義傳感器的狀態;發動機轉速;動力域DTC數量;故障指示燈是否亮起等)
格式:SID + PID(Parameter ID),ISO 15031定義了部分PID內容,也做了相應預留
因為該協議具有法規效應,OBD協議定義了眾多PID,實際應用中,PID分為兩類:
1、用于表征具體的數據;
2、用于指出該ECU支持哪些PID(PID分別為0x00,0x20,0x40。。。讀取其中一個PID后ECU返回4個字節結果,從返回的4個字節中每個bit表示其所對應的PID是否被支持。)
a) PID 0x00用于查詢(0x01 -0x20)之間所支持的PID的參數;
b) PID 0x20用于查詢(0x21 -0x40)之間所支持的PID的參數,以此類推;
舉例:
Req:01 04 05 0d(每次可以請求一個,也可以請求多個,最多6個)
Res:41 04 xx xx 05 xx 0d xx(其中xx表示支持的PID的值,比如0d表示當前的車速,0d后面的xx的值是64,就對應的是100km/h)
0x02
Request powertrain freeze frame data
請求凍結數據幀
概述:對車車輛ECU出現并界定出某個故障,會將這個故障被Confirm時的相關狀態信息“凍結”下來(UDS協議中叫快照信息) ,也就是行業內所謂的凍結幀,這些狀態信息對車輛故障的確定非常重要,因為它們記錄了車輛發生故障時的很多相關信息,凍結幀的載體同樣是PID。
在ISO 15031協議中,Service02與Service 01命令的使用方法相同。只不過02讀取的是故障發生時的數據,而01讀取的當前數據,數據格式和含義都是相同的。與01命令不同的是02命令中多了一個frame字節:
需要注意的是在OBD協議中,用frame = 0x00來代表讀取凍結幀。如果主機廠想自己再定義些什么其他的幀,或者多定義幾個凍結幀,則可以給frame分配上其他的編號。OBD只規定了ECU需要為一個DTC存儲凍結幀,當ECU中同時存在多個DTC時,就要根據優先級來判定存儲誰的凍結幀了。模式2的作用就是為了快速方便的了解,故障發生時刻的一個狀態,以此來分析、排查以及定位故障,從而能夠有效地提高售后維護的效率。
0x03
Request emission-related diagnostic trouble code
用于讀取存儲在ECU中的與排放相關的“confirmed”DTC
請求當前確認的故障(Comfirmed DTC) 的故障碼,因此就可以了解車輛發生故障時,是哪個故障導致的,進而就可以根據該故障的機理來分析故障,維修車輛。
0x04
clear/Reset emission-related diagnostic information
清除ECU中存儲的與排放相關的DTC故障信息。同時清除包括故障碼、凍結幀、測試數據等排放相關的內存數據。
該服務格式請求是一個字節的04,響應是一個字節的44。只有在發動機沒有運轉的時候才可以執行這個服務,否則ECU應該給出NRC Ox22 (條件不滿足)來拒絕該服務。
0x05
Request oxygen sensor monitoring test results
請求讀取氧傳感器的檢測結果,監控氧傳感器的測試結果。
因為氧氣的濃度對燃燒過程有著重要的影響,因此對排放也有著重大的影響,因此有必要進行測試監控。一般支持模式6的話也可以通過模式6來代替模式5的功能(對于OBDonCAN來說不支持該服務).
0x06
Request On-board monitoring test results for specific monitored systems
請求指定監控系統的測試結果
車上不僅僅氧傳感器需要監控,還有其他很多的地方需要監控,比如催化劑,蒸發系統等,都可以通過Service 06來進行監控
主機廠也可以根據需要去定義監控各個系統模塊ID以及需要進行測試的參數TID。該服務用于請求對特定被監測系統的監測結果。OBD中定義了一個MID(Monitor ID)的表格,來標識被監測系統。一個ECU不一定需要支持所有的MID,獲知具體支持哪些MID的方法與01和02服務所使用的方法相同。
06服務的response中,針對某一個MID,可能有多個TID (Test ID) ,因為針對一個系統可能有多個測試項目。TID表格也在OBD中定義。06服務的response格式固定,每個MID的每個TID由6部分組成,具體如下:
a) MID;
b) TID;
c) Unit And Scaling ID,用于標識這個TID的測試內容是什么,比如電壓、時間、計數器之類的;
d) Test Value,實際測量值
e) Min.Test Value,這個測量值的最小值:
f) Max.Test Value,這個測量值的最大值;
0x07
Request emission-related diagnostic
trouble code during current or last completed driving
請求當前或上一駕駛循環檢測到的排放相關的故障碼
Service 07也是獲取DTC,但是它和03服務區別在于,它用于獲取在當前以及上一個駕駛循環中出現的處于
“pending”狀態的DTC,而Service 03則獲取的是confirmend DTC。
每次維修人員修理完之后,會清理故障,為了了解這個故障是不是真正解決了,就需要重新試一下,然后看這個故障是不是又會出現,如果是通過模式3去了解,則至少需要三個操作循環,而模式7則根據當前操作循環就可以知道。
0x08
Request control of on-board system, test, or component
請求控制在線系統或組件
用于對系統進行控制,進行元器件測試操作,它相當于UDS中的2F和31服務。
格式:SID + TID,注意這里TID與05和06服務的TID不同,在OBD中有一個專門給08服務使用的TID表格。
0x09
Request vehicle information
請求整車信息,比如VIN碼,標定ID 標定校驗ID ECU名稱IPT等信息
格式:SID + InfoType(InfoType在OBD標準中有定義,并不是所有的InfoType都需要被支持,具體哪些InfoType被支持,可以采用和01服務相同的方法。)
0x0A
Request emission-related diagnostic trouble code with permanent status
請求排放相關的永久DTC
OBD的DTC
ISO15031-6里定義了DTC的相關信息,不同于UDS的是,OBD的DTC是2 bytes,一些由ISO法規直接定義,一些是OEM自己定義。
DTC的三個狀態:
confirmed DTC,
經過了三個操作周期
pending DTC,
未到三個操作周期
permanent DTC,
永久存在的DTC
OBD口的定義
引腳Pin
描述Description
1
自由選擇Reserved
2
(SAE J1850總線的正線)(BUS positive line of SAE J1850)
3
自由選擇Reserved
4
底盤地Chassis ground
5
信號地Signal ground
6
CAN_H Can總線High
7
K線 K line
8
自由選擇Reserved
9
自由選擇Reserved
10
(SAE J1850總線的負線)(BUS negative line of SAE J1850)
11
自由選擇Reserved
12 ?
自由選擇Reserved
13
自由選擇Reserved
14
CAN_L Can總線Low
15 ?
L線 L line
16
電池電壓(terminal 30)Battery voltage( terminal 30 )
來自龐輝 埃泰克攻城獅公眾號
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.