關於汽車診斷OBD的理解(ISO15031-5)

本篇文章主要從以下幾個方面進行講解

1.OBD用來做什麼
2.OBD和UDS的區別
3.OBD硬件接口簡介
4.OBD的9大模式介紹

OBD(On-Board Diagnostic)指的是在線診斷系統,是汽車上的一種用於監控車輛狀況以及控制排放的一種在線診斷系統。本篇文章主要圍繞OBD的九種模式進行介紹,當然也會輔助介紹一些OBD相關的內容。

 

1.OBD用來做什麼

對於一般的車主,可能有接觸過OBD口,可以用它來查看一些車內的參數等等,但是OBD它到底用來做什麼用呢?

還是以一貫的思路,進行分點說明

a.用於監控車輛基本參數,例如監控里程、車速、油門踏板位置、冷卻液溫度等等的一些參數;

b.用於監控排放相關的參數,這是OBD很核心的一個功能,比如各種尾氣的含量,氧含量等等,以此來保證滿足各國的標準;

c.用於車輛故障的診斷,例如我們車故障燈亮了,送到維修店後,維修人員就會拿出診斷儀,請求發生的故障內容,以及故障時刻的凍結幀數據,以此來方便故障排查;

d.當然還有小部分會使用OBD進行一些控制功能,這部分在中國是沒有的。

2.OBD和UDS的區別

大家看過我前面的文章的話,也有對UDS進行介紹,那麼UDS和OBD都是車上診斷的標準,他們有什麼區別呢?

首先從適用對象來說,OBD出現的更早,那麼它主要針對傳統燃油車,並且OBD主要是用於排放相關的診斷,而UDS是統一診斷系統,那麼它的適用性則更廣一點,它囊括了非排放相關的車身上所有ECU的診斷。可以簡單的理解OBD就是用於排放相關的ECU,如發送機控制單元,減速器控制器等;而UDS則包含了車身上幾乎所有ECU的診斷,例如VCU BCM DCDC等等。

第二點:也是因爲他們適用對象的不同,所以他們支持的服務是不一樣的,這點看標準就知道了。

稍微總結一下就是OBD主要用於與排放相關的ECU的診斷,而UDS則是排放除外的其他ECU的統一診斷標準。OBD的使用對象主要是傳統燃油車中排放相關的ECU,而UDS使用對象既可以是燃油車中的ECU也可以是混動純電動中的ECU。一般傳統燃油或混動車中與排放相關的ECU既要支持OBD也要支持UDS,而其他的ECU一般僅僅需要支持UDS。

3.OBD的硬件接口簡介

從圖中我們也知道,各個引腳之間的關係,那麼這個端口也是通過國際標準進行定義的OBD-II端口,在使用時,我們需要買對應的端口來進行與汽車診斷端口進行通信。

一般汽車這個診斷端口在我們的方向盤下面,油門踏板上面(不同廠家可能不一致)。


4.OBD的9大模式(服務)介紹

爲了能夠快速的瞭解OBD的各個模式,以下針對每個模式從2方面進行介紹;

1).模式的作用(使用場景)

2),模式如何使用

a.模式1-請求動力系統當前數據

1).模式的作用

從這個定義我們就瞭解到,通過該模式我們可以去請求車輛上動力系統的一些數據,但是這些數據都是需要預先定義好的,如何進行定義呢,那麼ISO標準規定了一些參數標識符即PID(parameter Identifiers),每個PID代表一個變量參數,但是呢在CAN上傳輸怎麼去識別這個參數呢,其實就是頂一個8bit的數據來代表這個參數,比如PID 0x01 表示DTC清除後的監控狀態,比如PID 0x05 表示電機冷卻液的溫度 ,那麼ISO15031-5它定義了很多這樣的PID參數,這樣定義是很有意義的,因爲這可以保證所有廠家的OBD可以儘可能的統一,從而方便通用。

我們稍微總結一下,模式1的作用就是 通過預先標準定義好的一些PID參數,去請求動力系統當前的一些數據(如速度、里程、溫度等),以此來了解當前車輛的一些狀態。

2).模式如何使用

ISO其實定義了很多PID參數,但是並不要求所有的主機廠把這些參數都實現,也就是說PID參數是可以選擇支持的。那麼我們怎麼知道這個廠家支持哪一些參數呢?其實模式1中它有一些PID 0x00\0x20\0x40\0x60\0x80等就是用來查詢到底支持哪些服務的。具體如何使用如下:

PID 0x00 用於查詢(0x01~0x20)之間支持的PID參數

PID 0x20 用於查詢(0x21~0x40)之間支持的PID參數

PID 0x40 用於查詢 (0x41~0x60)之間支持的PID參數

以此類推後面的0x60 0x80

使用第一步:查詢支持的PID參數(req表示請求(request),res表示答覆(response))

req:01 00 

res:41 00 xx xx xx xx

左起第一個xx表示0x01~0x08之間的PID支持情況 將xx轉爲2進制 如xx=0x65  ->xx=0110 0101 從左往右 那麼表示支持PID 0x02 0x03 0x06 0x08 

左起第二個xx表示0x09~0x10之間的PID支持情況 按照同樣的轉化方式

左起第三個xx表示0x11~0x18之間的PID 支持情況 按照同樣的轉化方式

左起第四個xx表示0x19~0x20之間的PID支持情況 按照同樣的轉化方式

是不是0x00就是查詢0x01~0x20之間支持的PID情況? 

同理對0x20 0x40等進行查詢

使用第二步:就可以讀取相關支持的PID參數的值了,假如支持PID 0x04  0x05  0x0d

req:01 04 05 0c

res:41 04 xx xx 05 xx 0d xx 

其中xx表示支持的PID的值了,比如0d表示當前的車速,0d後面的xx的值是64,及對應的是100KM/h,即請求到的車速爲當前100km/h

多說幾句就是我們可以每次只請求一個PID,也可以一次請求多個,最多6個,而答覆的話可能不會按照順序來,如果在CAN上,答覆的數據超過8個byte的話,那麼它就會分出幾個幀來進行答覆。

b.模式2-請求凍結幀數據

1).模式的作用

首先解釋一下凍結幀,所謂的凍結幀你可以理解爲故障發生時刻的一些環境數據,凍結幀的存在就是爲了儘可能瞭解故障發生時的一些參數,以此來方便分析故障。

因此我們可以這樣說模式2的作用就是爲了快速方便的瞭解,故障發生時刻的一個狀態,以此來分析、排查以及定位故障,從而能夠有效的提高售後維護的效率。

2).模式的使用

使用第一步:和模式1一樣,先要查詢支持的凍結幀的PID參數,格式也和模式1類似。

使用第二步:因爲凍結幀是因爲故障發生導致存儲的,因此我們先要知道導致存儲的凍結幀的故障碼是什麼。

req:02 02 xx                 //這裏xx表示幀序號

res:42 0x xx xx xx        //左起 第一個xx表示幀序號,第二個xx 表示DTC(故障碼)高字節 第三個xx 表示DTC(故障碼)低字節

使用第三步:請求相應的凍結幀數據,比如支持PID 0x0C(速度) 0x05(溫度)參數 ,請求frame 00

req:02 0c 00 05 00   //這裏00表示frame 00 

res:43 0c 00 xx xx 05 00 xx   這裏左起前兩個xx表示速度  後面的xx表示溫度

c.模式3-請求排放相關的故障碼

1).模式的作用

首先我們瞭解一下故障碼,所謂的故障碼就是代表某一種故障的代碼,比如氧氣傳感器短路的故障碼爲P0130 那麼這些故障碼在IDS15031-6中都有定義,對應can報文上兩個字節DTC_H 和DTC_L  例如這裏的P0130 對應的DTC_H = 0x01 DTC_L=0x30。

那麼模式3的作用就是請求當前確認的故障(Comfirmed DTC)的故障碼,以此就可以瞭解車輛發生故障時,是哪個故障導致的,進而就可以根據該故障的機理來分析故障,維修車輛。

2).模式的使用

req:03

res:43 03 01 41 01 45 01 48  // 03表示DTC的個數,後面三對顏色表示三個故障碼P0141 P0145 P0148

如果沒有故障則會回覆 00 00...

d.模式4-清除排放相關的故障信息

1).模式的作用

爲啥要清除故障信息呢,因爲車子在出廠後,我們不能讓車故障燈亮着就出廠吧,這是其一,其二就是每次維修好之後,有必要將故障清除掉,表示該故障已經解決,還有就是可以騰出內存空間,以便後續發生的故障進行存儲。

2).模式的使用

該模式的使用比較簡單;

req:04

res:44

就算沒有故障,也會返回正響應;注意這裏清除的數據比較多,包括故障碼、凍結幀、測試數據等等排放相關的內存數據都會清除掉。

e.模式5-請求氧傳感器的檢測結果

1).模式的作用

顯然根據名字我們就可以知道,這個模式的作用就是監控氧傳感器的測試結果,因爲氧氣的濃度對燃燒過程有着重要的影響,因此對排放也有着重大的影響,因此有必要進行測試監控。一般支持模式6的話也可以通過模式6來代替模式5的功能。

2)模式的使用

使用第一步:查詢支持的氧傳感器支持的測試表示符TID(Test Identifiers),這是TID也在IDS15031-5的附錄中有定義。如模式1和2查詢PID一樣,模式5查詢TID也是類似使用0x00...來查詢;

使用第二步:通過PID 0x13  0x1D來查詢氧傳感器的位置,因爲動力系統模塊中,可能多個地方都有O2傳感器,如圖定義了字節信息對應傳感器的位置

使用第三步:查詢氧傳感器的測試結果,

根據第一步獲得的TID 如0x05 和第二步獲得的O2傳感器位置0x01,那麼就可以進行獲取氧傳感器的測試結果。

req:05 05 01

res:45 05 01 12  00 19 //這裏的12表示測試結果,00表示測試結果範圍的最小值,19表示測試結果範圍的最大值。

f.模式6-請求指定監控系統的測試結果

1).模式的作用

車上不僅僅氧傳感器的結果需要監控,還有其他很多的地方需要結構,比如催化劑、蒸發系統等等,那麼可以通過模式6來進行監控。

那麼主機廠也可以根據需要去定義監控各個系統模塊ID以及需要進行測試的參數TID。

2).模式的使用

使用第一步:也是查詢支持的TID

使用第二步:查詢支持的組件ID(若有的話)

使用第三步:請求測試結果 比如 TID 0x11  模塊ID 0x01

req:06 11

res:46 11 01 xx  xx  xx  xx //左起前兩個xx表示測試結果,後兩個xx表示測試值的限制值,意思就是表示測試結果是否在範圍內。

g.模式7-請求當前或上一驅動週期檢測到的排放相關的故障碼

1).模式的作用

爲啥有了03請求故障碼,還需要07模式呢,我們可以看到,03模式主要請求的是確認的故障碼(比如一個故障發生後,需要連續3個驅動週期才能發展爲確認的故障),而這裏07模式表示的是當前的或上一驅動週期發生的故障(這裏強調的是上一驅動週期或當前驅動週期發生的,意思是pending),以上是他們請求的故障碼的區別。那麼需要請求pending類的故障呢?這是因爲,每次維修人員修理完之後,會清理故障,爲了瞭解這個故障是不是真正解決了,就需要重新試一下,然後看這個故障是不是又會出現,如果是通過模式3去了解,則至少需要三個操作循環,而模式7則可當前操作循環就可以知道。

總結一下可以這麼說07模式就是幫助技術員快速瞭解故障問題是否解決。

2)模式的使用

同03模式,可參考03模式。

h.模式8-請求控制在線系統或組件

1).模式的作用

因爲這個模式使用的比較少,比如我國的所有OBD是不支持08模式的,以下對其進行簡單的介紹。

這個模式就是通過定義測試標識符TID以及測試數據,去操作ECU進行測試。

2).模式的使用

如定義了TID 0x01 測試數據 00 00 00 00 00

req:08 01 00 00 00 00 00

res:48 01 00 00 00 00 00

i.模式9-請求整車信息

1)模式的作用

大家知道車輛中,有一個很重要的信息就是VIN碼,也就是車輛標識碼,這個碼可是這輛車的“身份證”,那麼我們怎麼讀這個身份證信息呢,這就需要我們使用09模式了。

此外還包括一些標定ID 標定校驗ID ECU名稱 IPT等信息可以通過09模式來讀取。

2)模式的使用

和前面提到的PID TID一樣,這裏定義了一個叫InfoType的,你可以理解爲消息類型,其實也同樣是用一個byte來表示某個信息,比如infoType = 0x02表示VIN碼這個信息。

使用第一步:類似查詢支持的PID TID一樣,這裏第一步也是查詢支持的InfoType;

使用第二步:根據支持的InfoType來請求其對應的值,如請求VIN碼 0x02爲例

req:09 02

res:49 02  32  31 47 53 78 98 27 18 38 38  85 92 92 82 71 82  92 //這裏標紅部分就是VIN的內容,如果是CAN的話會採用多幀傳輸,這裏僅僅是示意。

 

 

 

以上主要針對OBD進行說明,更多具有價值的是讀者去體會和使用其中提到的PID TID以及InfoType,經過幾次使用之後會對這個協議會有更深的理解。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章