UDS与DoIp整理
UDS與Doip 知識(shí)框架整理
UDS(Unified Diagnostic Service)
1、概念
由ISO14229協(xié)議規(guī)定,使用診斷測(cè)試儀(客戶端)控制車載電子單元(ECU,服務(wù)端),實(shí)現(xiàn)電子噴油噴射、自動(dòng)變速和防抱死制動(dòng)系統(tǒng)工作等等。
簡(jiǎn)單的意思就是外部設(shè)備與ECU的通信協(xié)議,可以與ECU進(jìn)行交互,但是不是傳輸數(shù)據(jù)的鏈路,傳輸數(shù)據(jù)的協(xié)議由ISO15765協(xié)議規(guī)定。
下文中服務(wù)器指下位機(jī)或者ECU。
- 診斷數(shù)據(jù):
測(cè)試人員修改可以位于電子控制單元存儲(chǔ)器中的數(shù)據(jù),診斷數(shù)據(jù)包括模擬輸入和輸出,數(shù)字輸入和輸出,中間值和各種狀態(tài)信息。診斷數(shù)據(jù)示例包括車速、油門角度、后視鏡位置、系統(tǒng)狀態(tài)等。
三種類型為診斷數(shù)據(jù)定義的值:
1、電流值:電子控制單元正常操作當(dāng)前使用的值;
2、存儲(chǔ)值:在特定時(shí)刻(例如,當(dāng)故障發(fā)生或
定期);本副本在電子控制單元的控制下制作;
3、靜態(tài)值:例如VIN。
服務(wù)器不保留診斷數(shù)據(jù),測(cè)試人員可以只保留請(qǐng)求的當(dāng)前值。
- 診斷程序:
它是一種嵌入在電子單元內(nèi)部的一種程序,通過客戶端的請(qǐng)求可以開啟相應(yīng)的服務(wù)。
- 診斷服務(wù):
客戶端請(qǐng)求服務(wù)器進(jìn)行信息交換,目的是需要從服務(wù)器獲取診斷數(shù)據(jù),或者對(duì)服務(wù)器進(jìn)行某種操作,
- 診斷會(huì)話:
服務(wù)器中的狀態(tài),其中啟用了一組特定的診斷服務(wù)和功能。意思就是某種特定的診斷操作需要進(jìn)入特定的會(huì)話才能正確執(zhí)行,否則就會(huì)出現(xiàn)該會(huì)話模式不支持該操作的提示。
比如常見的刷APP程序,需要在編程會(huì)話模式中才可以執(zhí)行,要不然隨便一刷就刷掉原始代碼了,不安全。刷APP代碼需要在Boot Software中進(jìn)行。
Boot Software:在ECU上電或復(fù)位后立即執(zhí)行,其主要目的是以檢查有效的應(yīng)用程序是否可用以執(zhí)行,而不是將控件轉(zhuǎn)移到重編程軟件,意思就是如果重編程軟件(也成為APP程序)不可以執(zhí)行,則直接不進(jìn)行跳轉(zhuǎn),只在Boot軟件中。
在一些NXP的芯片中,自帶固件,會(huì)掃描一些區(qū)域是否有可執(zhí)行文件,會(huì)跳到相應(yīng)的區(qū)域去執(zhí)行。比如可以執(zhí)行不帶Boot軟件的APP程序。
- 診斷故障代碼:DTC(diagnoise trouble Code)
由車載診斷系統(tǒng)識(shí)別的故障狀態(tài)的數(shù)字通用標(biāo)識(shí)符,就是車載故障的編碼。
- ECU:電子控制單元,一個(gè)功能模塊的控制器,比如車門ECU、車窗ECU、調(diào)速ECU。
2、UDS框架圖
-
可以通過多種通訊手段進(jìn)行診斷(數(shù)據(jù)交互),比如CAN、IP和Lin等,DoCAN即Diagnosis on CAN,不同的通訊協(xié)議對(duì)應(yīng)著不同的定義說明,在不同14229協(xié)議中比如14229-5,定義了車載以太網(wǎng),即diagnosis on internet
-
應(yīng)用層服務(wù)通常被稱為診斷服務(wù)。應(yīng)用層服務(wù)是用于基于客戶機(jī)-服務(wù)器的系統(tǒng),在車輛車載服務(wù)器執(zhí)行測(cè)試、檢查、監(jiān)視或診斷等功能。客戶端(通常稱為外部測(cè)試設(shè)備)使用應(yīng)用層
請(qǐng)求在一個(gè)或多個(gè)服務(wù)器上執(zhí)行診斷功能。服務(wù)器,通常是一個(gè)功能,它是ECU的一部分,使用應(yīng)用層服務(wù)提供診斷服務(wù)的響應(yīng)數(shù)據(jù)返回到客戶端。 -
客戶端通常是一個(gè)外部測(cè)試人員,在同一車輛系統(tǒng)中可能有多個(gè)客戶端。診斷應(yīng)用層的服務(wù)訪問點(diǎn)提供許多服務(wù),這些服務(wù)都具有相同的一般結(jié)構(gòu)。
-
服務(wù)標(biāo)識(shí)符:Service Identifier(SI)
0x10-0x3E、0x83-0x88、0xBA-0xBE 請(qǐng)求服務(wù)
0x50-0x7E、0xC3-0xC8、0xFA-0xFE 積極響應(yīng) -
7F 否定響應(yīng)服務(wù)標(biāo)識(shí)符
-
請(qǐng)求分為物理請(qǐng)求和功能請(qǐng)求,物理請(qǐng)求像單個(gè)設(shè)備請(qǐng)求診斷,功能請(qǐng)求類似廣播請(qǐng)求。
-
功能請(qǐng)求不回復(fù)部分否定響應(yīng)。
-
否定響應(yīng)分為:SNS(不支持該服務(wù))、SNSIS(該會(huì)話不支持該服務(wù))、SFNS(不支持該子函數(shù))、SFNSIAS(在該會(huì)話不支持該子函數(shù)功能)和ROOR(請(qǐng)求超出范圍)
注意:否定響應(yīng)中 78表示等待。比如 0x7F 0x27 0x78
-
通用服務(wù)器響應(yīng)流程
首先進(jìn)行多個(gè)否定響應(yīng)的判斷
0x21:服務(wù)器忙
0x11:不支持該服務(wù)
0x7F:在該會(huì)話模式不支持該服務(wù)
0x33:在服務(wù)器未解鎖的狀態(tài)訪問,
0x31:不支持該服務(wù)的子功能
然后正確解析服務(wù),并執(zhí)行操作
3、接下來介紹具體的服務(wù)
3.1、診斷以及通信管理功能
3.1.1 診斷會(huì)話模式:0x10
診斷會(huì)話在服務(wù)器中啟用一組特定的診斷服務(wù)或功能。服務(wù)器始終僅存在一個(gè)活動(dòng)的診斷會(huì)話。服務(wù)器應(yīng)始終啟動(dòng)默認(rèn)值開機(jī)時(shí)進(jìn)行診斷會(huì)話。如果沒有啟動(dòng)其他診斷會(huì)話,則默認(rèn)診斷只要服務(wù)器通電,會(huì)話就應(yīng)該一直在運(yùn)行。
在不同的會(huì)話模式,可以進(jìn)行特定的診斷功能,比如在擴(kuò)展會(huì)話模式,可以禁止通訊,其他模式下就不可以。
-
子功能服務(wù)標(biāo)識(shí)符:01 默認(rèn)會(huì)話
服務(wù)器中的默認(rèn)診斷會(huì)話,并且不支持任何診斷應(yīng)用程序超時(shí)處理規(guī)定(例如,不需要TesterPresent服務(wù)來保持該會(huì)話處于活動(dòng)狀態(tài))。
服務(wù)器在發(fā)送DiagnosticSessionControl肯定響應(yīng)消息后,應(yīng)停止當(dāng)前診斷會(huì)話,并在此后啟動(dòng)新請(qǐng)求的診斷會(huì)話。 -
子功能服務(wù)標(biāo)識(shí)符:02 編程會(huì)話
此diagnosticSession主要的功能就是對(duì)下位機(jī)進(jìn)行編程,俗稱刷APP程序
如果服務(wù)器在引導(dǎo)軟件中運(yùn)行programmingSession,則只能通過ECUReset(0x11)服務(wù)保留programmingSession。
如果服務(wù)器在APP中運(yùn)行編程會(huì)話,則服務(wù)器會(huì)復(fù)位,然后在引導(dǎo)程序中運(yùn)行編程會(huì)話。
可以執(zhí)行擦除代碼,刷寫代碼等服務(wù)(0x31 0x34 0x36)
- 子功能服務(wù)標(biāo)識(shí)符:03 擴(kuò)展會(huì)話
該DiagnosticSession可用于啟用支持功能調(diào)整所需的所有診斷服務(wù)。 它也可以用于啟用診斷服務(wù),這些服務(wù)不專門與功能調(diào)整相關(guān)。
- 子功能服務(wù)標(biāo)識(shí)復(fù):04 安全系統(tǒng)診斷會(huì)話
可以執(zhí)行所有與診斷相關(guān)的服務(wù)功能函數(shù)。
診斷儀發(fā)送10 03,然后服務(wù)器返回50 03 ,代表成功進(jìn)入擴(kuò)展模式,可以進(jìn)行一些操作,比如安全訪問,禁止DTC,禁止通信等。
CAN通訊一次只能發(fā)送8個(gè)字節(jié),第一個(gè)字節(jié)代表有效字節(jié)數(shù),00 32 01 F4 需要看具體的參數(shù)意義。
其否定響應(yīng)碼主要有 12 13 22
12:不支持該子函數(shù),比如在默認(rèn)會(huì)話模式 就不支持直接跳轉(zhuǎn)到編程會(huì)話,否則返回否定響應(yīng)
13:消息長度錯(cuò)誤
22:當(dāng)前狀態(tài)不支持該會(huì)話模式,比如在無BootLoader的APP程序中,執(zhí)行10 02,就會(huì)返回22。
如果執(zhí)行該指令需要的時(shí)間較長,則下位機(jī)(服務(wù)器)就會(huì)先返回78,讓診斷儀等待,然后再返回正確的響應(yīng)數(shù)據(jù)。
3.1.2 0x11 ECU復(fù)位
3.1.3 0x27 安全訪問服務(wù)
3.1.4 0x28 通信控制服務(wù)
3.1.5 0x3E
3.1.6 0x85 控制DTC設(shè)置服務(wù)
二、數(shù)據(jù)傳輸功能單元
三、存儲(chǔ)數(shù)據(jù)傳輸單元
四、協(xié)程功能單元
五、上傳下載功能單元
DoIP
總結(jié)
以上是生活随笔為你收集整理的UDS与DoIp整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.Python的不堪一击到初学乍练(列
- 下一篇: 大数据实验报告总结体会_建设大数据中台架