1.OBD用來做什么
2.OBD和UDS的區(qū)別
3.OBD硬件接口簡介
4.OBD的9大模式介紹
OBD(On-Board Diagnostic)指的是在線診斷系統(tǒng),是汽車上的一種用于監(jiān)控車輛狀況以及控制排放的一種在線診斷系統(tǒng)。本篇文章主要圍繞OBD的九種模式進行介紹,當(dāng)然也會輔助介紹一些OBD相關(guān)的內(nèi)容。
1.OBD用來做什么
對于一般的車主,可能有接觸過OBD口,可以用它來查看一些車內(nèi)的參數(shù)等等,但是OBD它到底用來做什么用呢?
還是以一貫的思路,進行分點說明
a.用于監(jiān)控車輛基本參數(shù),例如監(jiān)控里程、車速、油門踏板位置、冷卻液溫度等等的一些參數(shù);
b.用于監(jiān)控排放相關(guān)的參數(shù),這是OBD很核心的一個功能,比如各種尾氣的含量,氧含量等等,以此來保證滿足各國的標(biāo)準(zhǔn);
c.用于車輛故障的診斷,例如我們車故障燈亮了,送到維修店后,維修人員就會拿出診斷儀,請求發(fā)生的故障內(nèi)容,以及故障時刻的凍結(jié)幀數(shù)據(jù),以此來方便故障排查;
d.當(dāng)然還有小部分會使用OBD進行一些控制功能,這部分在中國是沒有的。
2.OBD和UDS的區(qū)別
大家看過我前面的文章的話,也有對UDS進行介紹,那么UDS和OBD都是車上診斷的標(biāo)準(zhǔn),他們有什么區(qū)別呢?
首先從適用對象來說,OBD出現(xiàn)的更早,那么它主要針對傳統(tǒng)燃油車,并且OBD主要是用于排放相關(guān)的診斷,而UDS是統(tǒng)一診斷系統(tǒng),那么它的適用性則更廣一點,它囊括了非排放相關(guān)的車身上所有ECU的診斷??梢院唵蔚睦斫釵BD就是用于排放相關(guān)的ECU,如發(fā)送機控制單元,減速器控制器等;而UDS則包含了車身上幾乎所有ECU的診斷,例如VCU BCM DCDC等等。
第二點:也是因為他們適用對象的不同,所以他們支持的服務(wù)是不一樣的,這點看標(biāo)準(zhǔn)就知道了。
稍微總結(jié)一下就是OBD主要用于與排放相關(guān)的ECU的診斷,而UDS則是排放除外的其他ECU的統(tǒng)一診斷標(biāo)準(zhǔn)。OBD的使用對象主要是傳統(tǒng)燃油車中排放相關(guān)的ECU,而UDS使用對象既可以是燃油車中的ECU也可以是混動純電動中的ECU。一般傳統(tǒng)燃油或混動車中與排放相關(guān)的ECU既要支持OBD也要支持UDS,而其他的ECU一般僅僅需要支持UDS。
3.OBD的硬件接口簡介
從圖中我們也知道,各個引腳之間的關(guān)系,那么這個端口也是通過國際標(biāo)準(zhǔn)進行定義的OBD-II端口,在使用時,我們需要買對應(yīng)的端口來進行與汽車診斷端口進行通信。
一般汽車這個診斷端口在我們的方向盤下面,油門踏板上面(不同廠家可能不一致)。
4.OBD的9大模式(服務(wù))介紹
為了能夠快速的了解OBD的各個模式,以下針對每個模式從2方面進行介紹;
1).模式的作用(使用場景)
2),模式如何使用
a.模式1-請求動力系統(tǒng)當(dāng)前數(shù)據(jù)
1).模式的作用
從這個定義我們就了解到,通過該模式我們可以去請求車輛上動力系統(tǒng)的一些數(shù)據(jù),但是這些數(shù)據(jù)都是需要預(yù)先定義好的,如何進行定義呢,那么ISO標(biāo)準(zhǔn)規(guī)定了一些參數(shù)標(biāo)識符即PID(parameter Identifiers),每個PID代表一個變量參數(shù),但是呢在CAN上傳輸怎么去識別這個參數(shù)呢,其實就是頂一個8bit的數(shù)據(jù)來代表這個參數(shù),比如PID 0x01 表示DTC清除后的監(jiān)控狀態(tài),比如PID 0x05 表示電機冷卻液的溫度 ,那么ISO15031-5它定義了很多這樣的PID參數(shù),這樣定義是很有意義的,因為這可以保證所有廠家的OBD可以盡可能的統(tǒng)一,從而方便通用。
我們稍微總結(jié)一下,模式1的作用就是 通過預(yù)先標(biāo)準(zhǔn)定義好的一些PID參數(shù),去請求動力系統(tǒng)當(dāng)前的一些數(shù)據(jù)(如速度、里程、溫度等),以此來了解當(dāng)前車輛的一些狀態(tài)。
2).模式如何使用
ISO其實定義了很多PID參數(shù),但是并不要求所有的主機廠把這些參數(shù)都實現(xiàn),也就是說PID參數(shù)是可以選擇支持的。那么我們怎么知道這個廠家支持哪一些參數(shù)呢?其實模式1中它有一些PID 0x00\0x20\0x40\0x60\0x80等就是用來查詢到底支持哪些服務(wù)的。具體如何使用如下:
PID 0x00 用于查詢(0x01~0x20)之間支持的PID參數(shù)
PID 0x20 用于查詢(0x21~0x40)之間支持的PID參數(shù)
PID 0x40 用于查詢 (0x41~0x60)之間支持的PID參數(shù)
以此類推后面的0x60 0x80
使用第一步:查詢支持的PID參數(shù)(req表示請求(request),res表示答復(fù)(response))
req:01 00
res:41 00 xx xx xx xx
左起第一個xx表示0x01~0x08之間的PID支持情況 將xx轉(zhuǎn)為2進制 如xx=0x65 ->xx=0110 0101 從左往右 那么表示支持PID 0x02 0x03 0x06 0x08
左起第二個xx表示0x09~0x10之間的PID支持情況 按照同樣的轉(zhuǎn)化方式
左起第三個xx表示0x11~0x18之間的PID 支持情況 按照同樣的轉(zhuǎn)化方式
左起第四個xx表示0x19~0x20之間的PID支持情況 按照同樣的轉(zhuǎn)化方式
是不是0x00就是查詢0x01~0x20之間支持的PID情況?
同理對0x20 0x40等進行查詢
使用第二步:就可以讀取相關(guān)支持的PID參數(shù)的值了,假如支持PID 0x04 0x05 0x0d
req:01 04 05 0c
res:41 04 xx xx 05 xx 0d xx
其中xx表示支持的PID的值了,比如0d表示當(dāng)前的車速,0d后面的xx的值是64,及對應(yīng)的是100KM/h,即請求到的車速為當(dāng)前100km/h
多說幾句就是我們可以每次只請求一個PID,也可以一次請求多個,最多6個,而答復(fù)的話可能不會按照順序來,如果在CAN上,答復(fù)的數(shù)據(jù)超過8個byte的話,那么它就會分出幾個幀來進行答復(fù)。
b.模式2-請求凍結(jié)幀數(shù)據(jù)
1).模式的作用
首先解釋一下凍結(jié)幀,所謂的凍結(jié)幀你可以理解為故障發(fā)生時刻的一些環(huán)境數(shù)據(jù),凍結(jié)幀的存在就是為了盡可能了解故障發(fā)生時的一些參數(shù),以此來方便分析故障。
因此我們可以這樣說模式2的作用就是為了快速方便的了解,故障發(fā)生時刻的一個狀態(tài),以此來分析、排查以及定位故障,從而能夠有效的提高售后維護的效率。
2).模式的使用
使用第一步:和模式1一樣,先要查詢支持的凍結(jié)幀的PID參數(shù),格式也和模式1類似。
使用第二步:因為凍結(jié)幀是因為故障發(fā)生導(dǎo)致存儲的,因此我們先要知道導(dǎo)致存儲的凍結(jié)幀的故障碼是什么。
req:02 02 xx //這里xx表示幀序號
res:42 0x xx xx xx //左起 第一個xx表示幀序號,第二個xx 表示DTC(故障碼)高字節(jié) 第三個xx 表示DTC(故障碼)低字節(jié)
使用第三步:請求相應(yīng)的凍結(jié)幀數(shù)據(jù),比如支持PID 0x0C(速度) 0x05(溫度)參數(shù) ,請求frame 00
req:02 0c 00 05 00 //這里00表示frame 00
res:43 0c 00 xx xx 05 00 xx 這里左起前兩個xx表示速度 后面的xx表示溫度
c.模式3-請求排放相關(guān)的故障碼
1).模式的作用
首先我們了解一下故障碼,所謂的故障碼就是代表某一種故障的代碼,比如氧氣傳感器短路的故障碼為P0130 那么這些故障碼在IDS15031-6中都有定義,對應(yīng)can報文上兩個字節(jié)DTC_H 和DTC_L 例如這里的P0130 對應(yīng)的DTC_H = 0x01 DTC_L=0x30。
那么模式3的作用就是請求當(dāng)前確認(rèn)的故障(Comfirmed DTC)的故障碼,以此就可以了解車輛發(fā)生故障時,是哪個故障導(dǎo)致的,進而就可以根據(jù)該故障的機理來分析故障,維修車輛。
2).模式的使用
req:03
res:43 03 01 41 01 45 01 48 // 03表示DTC的個數(shù),后面三對顏色表示三個故障碼P0141 P0145 P0148
如果沒有故障則會回復(fù) 00 00...
d.模式4-清除排放相關(guān)的故障信息
1).模式的作用
為啥要清除故障信息呢,因為車子在出廠后,我們不能讓車故障燈亮著就出廠吧,這是其一,其二就是每次維修好之后,有必要將故障清除掉,表示該故障已經(jīng)解決,還有就是可以騰出內(nèi)存空間,以便后續(xù)發(fā)生的故障進行存儲。
2).模式的使用
該模式的使用比較簡單;
req:04
res:44
就算沒有故障,也會返回正響應(yīng);注意這里清除的數(shù)據(jù)比較多,包括故障碼、凍結(jié)幀、測試數(shù)據(jù)等等排放相關(guān)的內(nèi)存數(shù)據(jù)都會清除掉。
e.模式5-請求氧傳感器的檢測結(jié)果
1).模式的作用
顯然根據(jù)名字我們就可以知道,這個模式的作用就是監(jiān)控氧傳感器的測試結(jié)果,因為氧氣的濃度對燃燒過程有著重要的影響,因此對排放也有著重大的影響,因此有必要進行測試監(jiān)控。一般支持模式6的話也可以通過模式6來代替模式5的功能。
2)模式的使用
使用第一步:查詢支持的氧傳感器支持的測試表示符TID(Test Identifiers),這是TID也在IDS15031-5的附錄中有定義。如模式1和2查詢PID一樣,模式5查詢TID也是類似使用0x00...來查詢;
使用第二步:通過PID 0x13 0x1D來查詢氧傳感器的位置,因為動力系統(tǒng)模塊中,可能多個地方都有O2傳感器,如圖定義了字節(jié)信息對應(yīng)傳感器的位置
使用第三步:查詢氧傳感器的測試結(jié)果,
根據(jù)第一步獲得的TID 如0x05 和第二步獲得的O2傳感器位置0x01,那么就可以進行獲取氧傳感器的測試結(jié)果。
req:05 05 01
res:45 05 01 12 00 19 //這里的12表示測試結(jié)果,00表示測試結(jié)果范圍的最小值,19表示測試結(jié)果范圍的最大值。
f.模式6-請求指定監(jiān)控系統(tǒng)的測試結(jié)果
1).模式的作用
車上不僅僅氧傳感器的結(jié)果需要監(jiān)控,還有其他很多的地方需要結(jié)構(gòu),比如催化劑、蒸發(fā)系統(tǒng)等等,那么可以通過模式6來進行監(jiān)控。
那么主機廠也可以根據(jù)需要去定義監(jiān)控各個系統(tǒng)模塊ID以及需要進行測試的參數(shù)TID。
2).模式的使用
使用第一步:也是查詢支持的TID
使用第二步:查詢支持的組件ID(若有的話)
使用第三步:請求測試結(jié)果 比如 TID 0x11 模塊ID 0x01
req:06 11
res:46 11 01 xx xx xx xx //左起前兩個xx表示測試結(jié)果,后兩個xx表示測試值的限制值,意思就是表示測試結(jié)果是否在范圍內(nèi)。
g.模式7-請求當(dāng)前或上一驅(qū)動周期檢測到的排放相關(guān)的故障碼
1).模式的作用
為啥有了03請求故障碼,還需要07模式呢,我們可以看到,03模式主要請求的是確認(rèn)的故障碼(比如一個故障發(fā)生后,需要連續(xù)3個驅(qū)動周期才能發(fā)展為確認(rèn)的故障),而這里07模式表示的是當(dāng)前的或上一驅(qū)動周期發(fā)生的故障(這里強調(diào)的是上一驅(qū)動周期或當(dāng)前驅(qū)動周期發(fā)生的,意思是pending),以上是他們請求的故障碼的區(qū)別。那么需要請求pending類的故障呢?這是因為,每次維修人員修理完之后,會清理故障,為了了解這個故障是不是真正解決了,就需要重新試一下,然后看這個故障是不是又會出現(xiàn),如果是通過模式3去了解,則至少需要三個操作循環(huán),而模式7則可當(dāng)前操作循環(huán)就可以知道。
總結(jié)一下可以這么說07模式就是幫助技術(shù)員快速了解故障問題是否解決。
2)模式的使用
同03模式,可參考03模式。
h.模式8-請求控制在線系統(tǒng)或組件
1).模式的作用
因為這個模式使用的比較少,比如我國的所有OBD是不支持08模式的,以下對其進行簡單的介紹。
這個模式就是通過定義測試標(biāo)識符TID以及測試數(shù)據(jù),去操作ECU進行測試。
2).模式的使用
如定義了TID 0x01 測試數(shù)據(jù) 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碼,也就是車輛標(biāo)識碼,這個碼可是這輛車的“身份證”,那么我們怎么讀這個身份證信息呢,這就需要我們使用09模式了。
此外還包括一些標(biāo)定ID 標(biāo)定校驗ID ECU名稱 IPT等信息可以通過09模式來讀取。
2)模式的使用
和前面提到的PID TID一樣,這里定義了一個叫InfoType的,你可以理解為消息類型,其實也同樣是用一個byte來表示某個信息,比如infoType = 0x02表示VIN碼這個信息。
使用第一步:類似查詢支持的PID TID一樣,這里第一步也是查詢支持的InfoType;
使用第二步:根據(jù)支持的InfoType來請求其對應(yīng)的值,如請求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 //這里標(biāo)紅部分就是VIN的內(nèi)容,如果是CAN的話會采用多幀傳輸,這里僅僅是示意。
以上主要針對OBD進行說明,更多具有價值的是讀者去體會和使用其中提到的PID TID以及InfoType,經(jīng)過幾次使用之后會對這個協(xié)議會有更深的理解。
---------------------
作者:AgingMoon
來源:CSDN
原文:https://blog.csdn.net/agingmoon/article/details/78225200
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
聯(lián)系客服