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