基於CAN匯流排的汽車診斷協議(包括UDS診斷)

2021-10-17 03:53:33 字數 3105 閱讀 6983

10 02、10 03模式切換,s3 client開始診斷報文超時計時(3e80保持會話)

cantp層 client 發36首幀10,server回流控30 08,client發8幀連續幀20-2f(500k,1ms發4幀)。

flowcontrol第一位元組的高4bit為0011,低4bit為fs,即flowstatus,第二個位元組為bs(blocksize),第三個位元組為stmin(seperatetime)

cs時間仲裁(id小優先順序高)

1、診斷會話控制0x10服務

2、會話訪問0x27服務

3、用於讀/寫的did的0x22/0x2e服務

4、 故障儲存相關的0x19和0x14服務

這個是會話狀態的乙個狀態機,狀態機之間可以互相跳轉,狀態機自身也能跳轉,我們把除了缺省會話之外的會話狀態,都叫做非缺省會話狀態。當ecu一上電的時候是處於缺省會話的,我們通過10,比如說10 03,10 02來將會話狀態由缺省會話跳轉到非缺省會話。由非缺省會話執行10 01跳轉至缺省會話。當ecu處於非缺省會話的時候,s3 time這個時間超時,ecu也會從非缺省會話跳轉到缺省會話。為了防止ecu從非缺省會話跳轉至缺省會話,我們要求tester端週期傳送3e服務tester present,讓ecu一直維持在非缺省會話。

tester端會利用s3client週期傳送tester present給ecu,ecu收到tester present比如說3e 00,3e 80的服務請求,會讓ecu維持在非缺省會話,如果tester端s3server這個時間內,比如說5000毫秒時間內,都沒有給ecu傳送任何診斷請求報文,那麼ecu就會從非缺省會話跳轉到缺省會話;如果ecu處於解鎖狀態,也會從解鎖狀態跳轉到鎖定狀態。通常s3cleint時間小於s3server的時間,比如說閘道器延時的一些情況。

在很多國際標準裡面都定義了dtc的格式。比如說uds裡定義dtc由3個位元組組成,而iso 15031-6裡定義了dtc格式由「兩個位元組根基+乙個位元組的故障型別」組成。那麼我們常用的uds服務裡面dtc格式用的是哪一種呢?有95%用到的dtc格式都是iso 15031-6裡定義的dtc的故障型別和格式。

iso 15031-6定義的dtc格式什麼樣的呢?兩個位元組的根位元組來定義dtc,

左邊第3~4位反應的是,dtc到底是由iso,sae,這些標準組織所定義的故障,還是由整車廠來定義命名的故障;

左邊第5~8反應的是車輛系統的區域;

右邊8位,這個位元組具體的編碼,就是dtc的編碼。

在14229-1中定義的19服務讀取dtc資訊裡,定義28個subfunction,根據不同的subfunction來獲取不同的診斷資訊,在這裡我們介紹4個不同的subfunction,這4個subfunction也是在規範中常用的,他們分別是02;04;06;0a。

剛才我們提到了dtc狀態位元組,這個dtc狀態由8個位組成的乙個位元組。這8個位分別代表不同的含義,具體這8個位代表的含義,包括這8個位初始值是什麼,它什麼時候被置1,什麼時候又被清0,它在什麼情況下用,怎樣用,在14229-1 2013版附錄d有詳細的定義。大家如果想具體了解這8個位的定義,可以參看附錄d。

這裡要提醒大家的是除了bit4和bit6以外,其它所有位的初始值都應該為0,而bit4和bit6的初始值位1。常用的有比如說bit0和bit3.bit0當檢測到這個故障,發生錯誤的時候被置1;

bit3 confirmeddtc根據具體dtc的應用邏輯,這個dtc被檢測到了多次,這個次數由具體的ecu規範定義,那麼這一位也應該被置1。

我們通過19 02讀取dtc的時候,會用到3個不同型別的dtc status,那麼這3個不同的dtc有什麼區別呢:

我們來看具體的請求和響應格式,首先看19 02。19 02後面跟乙個位元組的status mask,第0位和第3位被置1,而這乙個位元組mask,是在ecu診斷規範定義的,所以 59 02 +乙個位元組的mask+具體的dtc+dtc後面的跟的dtc status。

如果有多個dtc,後面會重複dtc的格式:3個位元組的dtc+dtc status。

通過19 0a讀取ecu支援的所有dtc,請求格式是兩個位元組「19 + 0a」;肯定響應格式「59 + 0a+乙個位元組的mask+後面跟ecu支援的所有dtc」

當診斷故障資訊被儲存了以後,我還需要,問題我們已經通過維修的方式解決了,我們用什麼樣的方法將這個dtc清除呢?

用到14服務清除診斷資訊,14服務格式很簡單,請求格式是「14 + 3個位元組數值」,這3個位元組的數值可以是針對單個dtc清除,也可以是按組來清除dtc,也可以是清除全部dtc。當3個位元組都為ff時,表示將ecu裡產生的所有dtc清除。

那我能不能按照組來清除dtc,比如說清除和車身有關的dtc,就按照車身這個組的數值,將它新增到請求報文格式裡;

那我能不能單獨清除,只針對某乙個dtc,清除這個dtc,也是可以的。只需將這個dtc的具體數值放在請求報文,那麼的肯定響應格式是乙個位元組54。

這個**在14229中也有描述,大家可以具體參看。

can例程 ecu 基於CAN匯流排的ECU設計

龍源期刊網 基於can 匯流排的ecu 設計于玲年第期 摘要 為了組建基於 can匯流排的控制單元,本文設計了一款相容標準 核心的mcu 提出總體設計方案,分層去實現各模組的功能。利用流水線的設計技術,對 mcu標準 核進行了精簡和優化,從而提高了產品的綜合處理速度,並減少了成品的設計面積。按照自上...

基於CAN匯流排智慧型建築監控系統的通訊協議設計

現代智慧型建築監控系統廣泛採用了現場匯流排技術。現場匯流排的種類目前有40多種,但適合智慧型建築且在我國推廣的主要有兩種 can control area network 匯流排和lonworks匯流排。can匯流排技術以其可靠性高,結構簡單,傳輸距離長和成本低而具有巨大的應用潛力。控制區域網can...

pci匯流排定時協議 汽車匯流排測試的「解憂雜貨店」

我的回答之所以發揮了作用,原因不是別的,是因為大家自己很努力。東野圭吾 解憂雜貨店 相信很多讀者都看過東野圭吾的書 解憂雜貨店 或者同名電影,裡面有不同的諮詢者通過寫信投入解憂雜貨店的信箱,後面都會得到相應的解答,中間採用了超越時空的解答方式也讓不少讀者津津樂道。本文結合不同 諮詢者 共同關注的汽車...