日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UDS诊断协议规范与要求

發(fā)布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UDS诊断协议规范与要求 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.UDS簡介

1.1標準介紹

國際標準ISO 14229,基于OSI基本模型實現(xiàn)。如下所示:
應(yīng)用層(第7層),ISO 14229-1,ISO 14229-3 UDSonCAN,ISO 14229-4 UDSonFR,ISO 14229-5 UDSonIP,ISO 14229-6 UDSonK-Line,ISO 14229-7中規(guī)定的統(tǒng)一診斷服務(wù)UDSonLIN,進一步補充了ISO 27145-3 WWH-OBD。
表示層(第6層),特定車輛制造商,ISO 27145-2 WWH-OBD。
會話層(第5層),在ISO 14229-2中做了描述。
傳輸層(第4層),在ISO 15765-2 DoCAN中做了描述,包括FlexRay上的ISO 10681-2通信,ISO 13400-2 DoIP,ISO 17987-2 LIN,ISO 27145-4 WWH-OBD。
網(wǎng)絡(luò)層(第3層), 在ISO 15765-2 DoCAN中做了描述,在FlexRay上的ISO 10681-2通信,ISO 13400-2 DoIP,ISO 17987-2 LIN,ISO 27145-4 WWH-OBD。
數(shù)據(jù)鏈路層(第2層),在ISO 11898-1,ISO 11898-2,ISO 17458-2,ISO 13400-3,IEEE 802.3,ISO 14230-2,ISO 17987-3 LIN和其他標準ISO 27145- 4 WWH-OBD中做了描述。
物理層(第1層),在ISO 11898-1,ISO 11898-2,ISO 17458-4,ISO 13400-3,IEEE 802.3,ISO 14230-1,ISO 17987-4 LIN和其他標準ISO 27145-4中對 WWH-OBD做了描述。

ISO 14229由以下部分組成,總標題為道路車輛 - 統(tǒng)一診斷服務(wù)(UDS):
第1部分:規(guī)范和要求
第2部分:會話層服務(wù)
第3部分:CAN實施的統(tǒng)一診斷服務(wù)(UDSonCAN)
第4部分:FlexRay實現(xiàn)的統(tǒng)一診斷服務(wù)(UDSonFR)
第5部分:Internet協(xié)議實施的統(tǒng)一診斷服務(wù)(UDSonIP)
第6部分:K線實施的統(tǒng)一診斷服務(wù)(UDSonK-Line)
第7部分:本地互聯(lián)網(wǎng)絡(luò)實施(UDSonLIN)上的統(tǒng)一診斷服務(wù)
第n部分:統(tǒng)一診斷服務(wù)在…實施(UDSon …)
其中ISO-14229 包括ISO 14229-1和ISO 14229-2(會話層服務(wù))兩部分。
診斷測試儀(客戶端)和電子控制單元(ECU,服務(wù)器)基于該協(xié)議進行通訊。
OSI診斷模型

1.2使用介紹

1.2.1 常見名詞解釋

診斷故障碼DTC:識別故障狀態(tài)的數(shù)字通用標識碼;
永久性DTC:執(zhí)行DTC清除請求所無法清除的故障信息,存儲在非易失性存儲器,知道滿足特定指令或達到特定標準(如監(jiān)管);
重新編程軟件:部分啟動軟件允許重新編程ECU;

1.2.2診斷數(shù)據(jù)類型

常見診斷數(shù)據(jù)有車速、車門控制、系統(tǒng)狀態(tài)、鏡像位置等。數(shù)據(jù)類型分類如下所示:

  • 當前值/實時值;
  • 存儲值,如故障狀態(tài)下存儲的信息;
  • 靜態(tài)值,如VIN;
  • 2.診斷報文格式

    2.1診斷請求報文


    spr=1,ECU不給出正響應(yīng);
    spr=0,ECU給出正響應(yīng);
    目的:告訴ECU是否需要發(fā)送響應(yīng)數(shù)據(jù);

    2.2診斷應(yīng)答報文


    正響應(yīng)報文:

    byte1:response service id = service id + 0x40;

    負響應(yīng)報文:

    byte1:response service id = 0x7F; byte2:spr + sub-function = service id; byte3:NRC,診斷指令執(zhí)行失敗錯誤碼; eg:7F 22 13 ;7F代表負響應(yīng),22代表服務(wù)類型,其中13代表請求消息錯誤。

    否定響應(yīng)碼(NRC):

    0x01- 0x0F:暫保留; 0x10:未知錯誤,服務(wù)被拒絕; 0x11:不支持該服務(wù)請求; 0x12:不支持子功能; 0x13:消息長度或格式錯誤; 0x14:請求信息長度超出; 0x15 - 0x20:暫保留; 0x21:服務(wù)端正忙; 0x22:條件不滿足; 0x23:暫保留; 0x24:請求順序錯誤; 0x25:指令已經(jīng)被接收,但是未被執(zhí)行; 0x26:失敗的操作導(dǎo)致當前操作無法執(zhí)行; 0x27- 0x30:暫保留; 0x31:參數(shù)錯誤; 0x32:暫保留; 0x33:安全校驗未通過; 0x34:暫保留; 0x35:秘鑰不匹配; 0x36:已達到解鎖最大錯誤次數(shù); 0x37:超時時間未到; 0x38 - 0x4F:由擴展數(shù)據(jù)鏈路安全性保留; 0x50 - 0x6F:暫保留; 0x70:不允許上傳下載; 0x71:數(shù)據(jù)傳輸中斷; 0x72:擦除或燒寫內(nèi)存錯誤; 0x73:塊序列計數(shù)錯誤; 0x74 - 0x77:暫保留; 0x78:收到請求,延遲響應(yīng); 0x79 - 0x7D:暫保留; 0x7E:當前會話下子功能不支持; 0x7F:當前會話下服務(wù)不支持; 0x80:暫保留; 0x81:RPM太高; 0x82:RPM太低; 0x83:當前引擎正運行; 0x84:當前引擎為運行; 0x85:截止當前時間引擎運行時間太短; 0x86:溫度過高; 0x87:溫度過低; 0x88:車速過高; 0x89:車速過低; 0x8A:油門/踏板過高(超過了當前要求的最大閾值); 0x8B:油門/踏板過低; 0x8C:變速器檔位不在空檔; 0x8D:變速器檔位不在排檔; 0x8E:暫保留; 0x8F:制動開關(guān)沒有關(guān)閉; 0x90:換檔桿不在駐車檔; 0x91:變矩器離合器鎖定; 0x92:電壓過高; 0x93:電壓過低; 0x94 - 0xEF:暫保留(特定條件下); 0xF0 - 0XFE:為汽車制造商保留; 0xFF:暫保留;

    會話狀態(tài)

    3.診斷服務(wù)類型

    3.1服務(wù)類型簡述

    1.診斷與通信管理;
    2.數(shù)據(jù)傳輸;
    3.存儲數(shù)據(jù)傳輸,用于操作DTC;
    4.IO控制;
    5.調(diào)用ECU內(nèi)部預(yù)置函數(shù);
    6.上傳與下載;

    3.2服務(wù)類型詳解

    3.2.1 診斷與通信管理

    3.2.1.1. 0x10 - DiagnosticSessionControl(診斷通信控制)

    解釋:請求控制與ECU的診斷會話。 格式:0x10|SessionTypeSessionType-請求消息子功能定義:0x00 ISOSAEReserved(保留)0x01 defaultSession(ECU上電后的默認狀態(tài))0x02 ProgrammingSession(進行軟件刷寫相關(guān)的服務(wù))用于解鎖BootLoader相關(guān)的診斷服務(wù),即程序燒寫;0x03 extendedDiagnosticSession(診斷啟動后接收到10 03轉(zhuǎn)為該狀態(tài))用于解鎖高權(quán)限診斷服務(wù),如寫入數(shù)據(jù)、參數(shù)、讀寫診斷碼;0x04 safetySystemDiagnosticSession0x05 – 0x3F ISOSAEReserved(保留)0x40 – 0x5F vehicleManufacturerSpecific(由整車廠自定義使用)0x60 – 0x7E systemSupplierSpecific(由ECU供應(yīng)商自定義使用)0x7F - ISOSAEReserved(保留)肯定響應(yīng):0x50|SessionType|SessionParameterRecord....... 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度錯誤;0x22:不滿足請求標準/條件;

    3.2.1.2. 0x11 - ECUReset

    強制對ECU進行重置。 格式:0x11|resetTyperesetType - 請求消息子功能定義0x00:保留;0x01:再次初始化,恢復(fù)為上電狀態(tài);0x02:模擬斷電重置;0x03:軟件重置,重新啟動應(yīng)用程序;0x04:進入休眠狀態(tài);0x05:禁止啟用“快速關(guān)閉電源”功能;0x06-0x5F:整車廠商自定義0x7F:保留肯定響應(yīng):0x51|resetType(0x00-0x7F)|powerDownTime(0x00-0xFF)powerDownTime:0x00 - 0xFE 254s; 0xFF 表示失敗或者時間不可用 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度錯誤;0x22:不滿足請求標準;0x33:ECU未被解鎖,請求重置受到了保護;

    3.2.1.3. 0x27 - SecurityAccess

    請求解鎖安全服務(wù),常用見交互流程:1.客戶端請求種子;2.服務(wù)端發(fā)送種子;3.客戶端發(fā)送秘鑰;4.服務(wù)端驗證秘鑰有效性,進行解鎖與應(yīng)答; 5.服務(wù)端清除上電/復(fù)位延遲計數(shù)器的內(nèi)部提示信息;備注:1.服務(wù)端需要支持延遲計數(shù)器,當服務(wù)器加電/復(fù)位時被鎖定時需要延遲,整車廠商選擇是否支持延時定時器。2.requestseed參數(shù)值應(yīng)時鐘為奇數(shù),相同安全等級的sendkey參數(shù)值=requestseed參數(shù)值+1。3.任何時候,只有一個安全級別處于活動狀態(tài)。如requestseed 0x03處于活動狀態(tài),Tester端當前與requestseed 0X01安全級別解鎖成功,那么Tester只可以與requestseed 0x01關(guān)聯(lián)的安全功能才可以被解鎖,requestseed 0x03關(guān)聯(lián)的安全功能將會被關(guān)閉(其中安全級別的變編號是任意的)。4.嘗試安全性訪問時,不應(yīng)該阻礙汽車的正常通信與其他診斷通訊。5.服務(wù)器鎖定時請求安全服務(wù),安全服務(wù)器應(yīng)支持拒絕。格式:0x27| requestseed( 0x01/0x03/0x05/0x07-0x7D)| Data.....0x27| sendkey (0x02/0x04/0x06/0x08-0x7E)| Data.....子功能定義:requestseed與sendkey具有一定的固定關(guān)系:requestseed = 0x01 - sendkey = 0x02requestseed = 0x03 - sendkey = 0x04數(shù)據(jù)參數(shù):securityKey:由算法依據(jù)seed生成的;securityAccessDataRecord:傳輸?shù)椒?wù)端的seed信息;肯定響應(yīng):0x67| securityAccessType(0x00-0x7F)| Data..... 否定響應(yīng):0x12:不支持功能參數(shù);0x13:消息長度錯誤;0x22:不滿足請求標準;0x24:應(yīng)該先發(fā)送seed數(shù)據(jù),而不是先發(fā)送key數(shù)據(jù);0x31:Data為無效數(shù)據(jù);0x35:key比對不成功,校驗不通過;0x36:超過最大試錯次數(shù);0x37:當前服務(wù)器處于延時狀態(tài); 展示案例: 1. 服務(wù)端(ECU)處于“鎖定”狀態(tài)(1)請求種子requestseed : 0x27|0x01service seed : 0x67|0x01|0x36 0x57(2)發(fā)送秘鑰sendkey : 0x27|0x02|0xC9 0xA9response : 0x67|0x02 2.服務(wù)端處于“解鎖”狀態(tài)(1)請求種子requestseed:0x27|0x01service seed:0x67|0x01|0x00 0x00

    3.2.1.4. 0x28 - CommunicationControl

    打開/關(guān)閉某些消息的接收與發(fā)送; 格式:0x28| controlType(0x00 - 0xFF)| communicationType(0x00 - 0xFF)| nodeIdentificationNumber......controlType:子功能:0x00:指定的通信類型未啟用數(shù)據(jù)的接收與傳輸;0x01:應(yīng)啟用消息接收,禁用指定通信類型的數(shù)據(jù)傳輸;0x02:應(yīng)禁用消息接收,啟用指定通信類型的數(shù)據(jù)傳輸;0x03:應(yīng)禁用指定通信類型的數(shù)據(jù)接收與傳輸;0x04:應(yīng)將尋址總線主機相關(guān)的子總線切換到診斷模式;0x05:應(yīng)將尋址總線主機相關(guān)的子總線切換到程序調(diào)度模式;0x06-0x3F:保留;0x40-0x5F:整車廠商自定義;0x60-0x7E:系統(tǒng)供應(yīng)商自定義;0x7F:保留;communicationType:應(yīng)用的控制通信類型,允許同時控制多種通信類型。nodeIdentificationNumber:用于識別車輛子網(wǎng)絡(luò)節(jié)點。肯定響應(yīng):0x68| controlType(0x00 - 0x7F) 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度錯誤;0x22:禁用/啟用請求失敗(服務(wù)器正常模式下使用);0x31:參數(shù)錯誤;展示案例:1.禁用傳輸網(wǎng)絡(luò)管理消息請求(當)0x28| 0x01(第7位為0)| 0x02(網(wǎng)絡(luò)管理)0x68| 0x012.將遠程網(wǎng)絡(luò)地址為0x000A節(jié)點連接到僅診斷調(diào)度模式0x28| 0x04| 0x01| 0x00 0x0A0x68| 0x043.切換到具有增強地址信息的應(yīng)用程序調(diào)度模式,連接到子網(wǎng)絡(luò)節(jié)點0x000A0x28| 0x05| 0x01 0x00 0x0A0x68| 0x05

    3.2.1.5. 0x3E - TesterPresent

    使ECU保持連接狀態(tài),并將已機會的診斷服務(wù)或者通信保持現(xiàn)有狀態(tài)。可防止服務(wù)端恢復(fù)為默認狀態(tài)。 格式:0x3E| subFunction(0x00-0x80) subFunction:0x00:不支持suppressPosRspMsgIndicationBit子函數(shù)值; 0x01 - 0x7F:值保留;肯定響應(yīng):0X7E| 0X00 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度錯誤;展示案例:1.請求消息流程案例0x3E| 0x000x7E| 0x002.可定響應(yīng)消息流程0x3E| 0x80無響應(yīng)由服務(wù)器發(fā)送

    3.2.1.6. 0x83 - AccessTimingParameter

    讀取/修改活動通信時間參數(shù),此功能取決于ECU能力支持和數(shù)據(jù)鏈路拓撲結(jié)構(gòu)。每個爭端會話只支持一個擴展時序參數(shù)集。因ECU支持的時序參數(shù)集不用,通常僅考慮用于物理尋址。 改服務(wù)提供四種模式:1.擴展時間參數(shù)設(shè)置;2.默認時間參數(shù)設(shè)置;3.當前時間參數(shù)獲取;4.指定時間參數(shù)設(shè)置; 格式:0x83| timingParameterAccessType(0x00 - 0xFF)| timingparameterrequestRecord......timingParameterAccessType:0x00:保留;0x01:讀取服務(wù)端擴展時序參數(shù)集(當前服務(wù)器支持值);0x02:更改服務(wù)端所有定時參數(shù)為默認值;0x03:讀取當前使用的定時參數(shù);0x04:更改定時參數(shù)值;0x05 - 0xFF:保留;肯定響應(yīng):0xC3| 0x00-0x7F| Data ..... 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度或格式錯誤;0x22:條件不滿足;0x31:無效參數(shù);展示案例:1. 時序參數(shù)設(shè)置為默認值0x83| 0x02 0xC3|0x02

    3.2.1.7. 0x84 - SecuredDataTransmission

    執(zhí)行擴展數(shù)據(jù)鏈接安全性數(shù)據(jù)傳輸; 常見診斷服務(wù)數(shù)據(jù)傳輸方法:1.不安全的數(shù)據(jù)傳輸模式2.安全的數(shù)據(jù)傳輸模式注:如下服務(wù)不可在安全模式下執(zhí)行:a.0x86/0x2A/0x3E 格式:0x84| Data.....肯定響應(yīng):0xC4| Data..... 否定響應(yīng):0x13:數(shù)據(jù)長度錯誤;0x38 - 0x4F:保留;

    3.2.1.8. 0x85 - ControlDTCSetting

    控制(開關(guān))ECU中DTC狀態(tài)位存儲; 格式: 0x85| Data.....DTCSettingType:0x00:保留;0x01:請先恢復(fù)更新診斷故障碼狀態(tài)位;0x03-0x3F:保留;0x40-0x5F:整車廠商自定義;0x60-0x7E:系統(tǒng)供應(yīng)商自定義;0x7F:保留;肯定響應(yīng):0xC5| 0x00 - 0x7F 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度或格式錯誤;0x22:條件不滿足;0x31:無效參數(shù);展示案例: 1.請求消息流程1.00x85| 0x020xC5| 0X02 2.請求消息流程2.00x85| 0x010xC5| 0x01

    3.2.1.9. 0x86 - ResponseOnEvent

    命令ECU自主上報DTC及相關(guān)的環(huán)境數(shù)據(jù),關(guān)閉也是使用該指令(一般用于開發(fā)前期)。 注:1.該服務(wù)可以在任何會話中設(shè)置與激活;2.當診斷服務(wù)正在執(zhí)行任務(wù)時,將會被推遲執(zhí)行;3.多個事件發(fā)生一個事件正執(zhí)行,多個事件處理應(yīng)整車廠商定義事件;4.當事件將被執(zhí)行時,服務(wù)器應(yīng)執(zhí)行對應(yīng)響應(yīng)服務(wù)中包含的服務(wù);5.該服務(wù)啟動后,服務(wù)器將會對客戶端做出響應(yīng),知道服務(wù)結(jié)束;6.移動非默認控制通信會話時,應(yīng)先請求停止該服務(wù)。在返回默認狀態(tài)下處于活動狀態(tài)下的所有該服務(wù)應(yīng)該被重新激活;7.多個該服務(wù)可以與不同的需求同時啟動和停止診斷服務(wù);8.設(shè)置該服務(wù)應(yīng)適用如下內(nèi)容:a.若eventtype第六位為0(不存儲事件),服務(wù)斷電時,應(yīng)終止服務(wù)器進行復(fù)位;b..若eventtype第六位為1(存儲事件),應(yīng)根據(jù)服務(wù)器重新啟動并繼續(xù)執(zhí)行;9.抑制響應(yīng)位打開后,客戶端將用于控制該服務(wù)的停止、啟動、清除;10.若設(shè)置有限窗口時間過時,將有最終響應(yīng),若有限時間窗口結(jié)束前ROE被停止,則不發(fā)送最終響應(yīng);11.為使得各響應(yīng)之間更好的隔離,該服務(wù)更適合應(yīng)用于瞬時狀態(tài)時間。每次時間都有對應(yīng)的響應(yīng)。 格式:0x86| eventType(0x00-0xFF)| eventWindowTime...| serviceToRespondToRecord .....eventType(功能位6):0x000x01 子功能參數(shù):0x00:停止服務(wù)端繼續(xù)發(fā)送響應(yīng);0x01:檢測到當前任務(wù)匹配的新的DTC;0x02:定時器中斷;0x03:將事件表示為新的內(nèi)部數(shù)據(jù)記錄;0x04:在肯定響應(yīng)中的所有事件都已經(jīng)報告在服務(wù)端使用;0x05:激活服務(wù)端;0x06:清除服務(wù)端設(shè)置邏輯;0x07:***0x08-0x1F:保留;0x20-0x02F:整車廠商自定義;0x30-0x3E:系統(tǒng)供應(yīng)商自定義;0x3F:保留;肯定響應(yīng):0xC6| eventType(0x00-0x7F)| numberOfIdentifiedEvents(0x00 - 0xFF ....)|響應(yīng)附加參數(shù)| 服務(wù)請求響應(yīng)所需附加服務(wù)參數(shù) 否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度或格式錯誤;0x22:條件不滿足;0x31:事件類型參數(shù)錯誤、事件窗口時間無效、DID不支持、有限事件窗口與存儲狀態(tài)為請求事件;展示案例:1.請求消息流程示例1.00x86| 0x01| 0x08| 0x01| 0x19 0x01 0x010xC6| 0x01| 0x00| 0x08| 0x01(testFailed)| 0x19 0x01 0x012.請求消息流程示例2.00x86| 0x05| 0x080xC6| 0x01| 0x00| 0x083.請求消息流程示例3.00x86| 0x05| 0x080xC6| 0x01| 0x00| 0x08readDTCInformation:更多查看P128

    3.2.1.10. 0x87 - LinkControl

    調(diào)整ECU數(shù)據(jù)鏈路層和物理層狀態(tài),如控制通信波特率(帶寬),調(diào)整步驟:1.客戶端驗證是否可以執(zhí)行轉(zhuǎn)換;2.客戶發(fā)送執(zhí)行請求;(1) 判斷ECU是否支持將要調(diào)整的目標波特率;(2) 讓ECU數(shù)據(jù)鏈路層和物理層轉(zhuǎn)到目標波特率的通信狀態(tài); 格式:0x87| linkControlType(0x01)| linkControlModeldentifier(0x00 - 0xFF) 子功能參數(shù):0x00:保留;0x01:驗證是否可以執(zhí)行指定預(yù)定義參數(shù)的轉(zhuǎn)換;0x02:驗證是否可以執(zhí)行特定定義參數(shù)轉(zhuǎn)換;0x03:請求服務(wù)端將數(shù)據(jù)鏈路轉(zhuǎn)換為當前驗證信息中的請求模式;0x04-0x3F:保留;0x40-0x5F:整車廠商自定義;0x60-0x7E:系統(tǒng)供應(yīng)商自定義;0x7F:保留;肯定響應(yīng):0xC7| 0x00 - 0x7Ff否定響應(yīng):0x12:不支持子功能參數(shù);0x13:消息長度或格式錯誤;0x22:條件不滿足;0x24:0x31:參數(shù)錯誤;展示案例:1.請求格式:0x87| 0x02| Data....2.請求格式:0x87| 0x033.設(shè)置波特率0x87| 0x01| 0x05(115200kBit/s)0xC7| 0x01轉(zhuǎn)換波特率0x87| 0x83無響應(yīng)應(yīng)答4.轉(zhuǎn)換波特率為特定值0x87| 0x02| 0x02 0x49 0xF0 (249F0 - 150000)0xC7| 0x02 轉(zhuǎn)換波特率0x87| 0x83無響應(yīng)應(yīng)答5.驗證是否滿足轉(zhuǎn)換條件0x87| 0x01| 0x200xC7| 0x01轉(zhuǎn)換到編程調(diào)度器0x87| 0x83

    3.2.2 數(shù)據(jù)傳輸單元

    3.2.2.1. 0x22 - ReadDataByIdentifier

    客戶端請求包含一個或者多個字節(jié)的診斷數(shù)據(jù),用于表示服務(wù)器維護記錄。數(shù)據(jù)的格式由整車制造商或系統(tǒng)供應(yīng)商定義。 格式:0x22| dataIdentifier(0x00-0xFF...) |......肯定響應(yīng):0x62| dataIdentifier(0x00-0xFF...)|....... 否定響應(yīng):0x13:消息長度或格式錯誤;0x14:0x22:條件不滿足;0x31:參數(shù)錯誤;0x33:安全校驗未通過;展示案例:1.讀取VIN碼數(shù)據(jù)0x22| 0xF1 0x900x62| 0xF1 0x90| 0x57 0x30 0x4C 0x30 0x30 0x30 0x30 0x34 0x33 0x4D 0x42 0x35 0x34 0x31 0x33 0x32 0x362.讀取多個數(shù)據(jù)(0x010A和0x0110)0x22| 0x01 0x0A| 0x01 0x10 0x62| 0x01 0x0A| 0xA6 * * * * * * * * * | 0X01(MSB) 0X10(LSB)| 0x8C

    3.2.2.2. 0x23 - ReadMemoryByAddress

    允許客戶通過提供起始地址和讀取內(nèi)存大小向服務(wù)器請求內(nèi)存數(shù)據(jù)。 格式:0x23| addressAndLengthFormatIdentifier(0x00-0xFF)| 起始地址參數(shù)| 內(nèi)存大小參數(shù) 肯定響應(yīng):0x63| dataRecord (0x00=0xFF)....... 否定響應(yīng):0x13:消息長度或格式錯誤;0x22:條件不滿足;0x31:參數(shù)錯誤;0x33:服務(wù)器被鎖定;展示案例:1.4字節(jié)尋址(從0x2048 1392地址開始讀取4字節(jié))0x23| 0x24| 0x20 0x48 0x13 0x92| 0x01 0x030x63| 0x00 ..... 0x8C(260個字節(jié)長度)2.2字節(jié)尋址(從0x4813地址開始讀取2字節(jié))0x23| 0x12| 0x48 0x13 0x050x63| 0x43 0x2A 0x07 0x2A 0x553.3字節(jié)尋址0x23| 0x23| 0x20 0x48 0x13| 0x00 0x030x63| 0x00 0x01 0x8C

    3.2.2.3. 0x24 - ReadScalingDataByIdentifier

    請求數(shù)據(jù)信息。 格式:0x24| Data .....肯定響應(yīng):0x64| dataidentifier(0x00 MSB|0x00 LSB)|scalingByte(0x00)| scalingByteExtension(0X00 ....)| scalingByte(0x00)| scalingByteExtension(0X00 ....) 否定響應(yīng):0x13:參數(shù)長度錯誤;0x22:服務(wù)不支持;0x31:請求不支持;0x33:安全檢查未通過;展示案例:1.請求消息流程示例0x24| 0xF1 0x900x64| 0xF1 0x90 | 0x6F | 0X622.請求車速(0x0105)0x24| 0x01 0x050x64| 0x01 0x05| 0x01(無符號數(shù)字,1byte)| 0x95(公式,5byte)| 0x00(公式標識符) 0xE0 0x4B(c0=75*10p-2p) 0X00 0X1E(c1=30*10p0p)| 0xA1(單位,1byte)| 0x30(unit id,km/h)車速=(0.75*x + 30)km/h3.請求數(shù)據(jù)(0x0967)示例數(shù)據(jù)定義見表1710x24| 0x09 0x670x64| 0x09 0x67| 0x22(2個數(shù)據(jù)字節(jié))| 0x03 0x43

    3.2.2.4. 0x2A - ReadDataByPeriodicIdentifier

    請求服務(wù)端周期性傳輸數(shù)據(jù)。 格式:0x2A| TransmissionMode(0x0000xFF)| Data ..... 肯定響應(yīng):0x6A定期數(shù)據(jù)響應(yīng):periodicDataIdentifier (0x00-0xFF)| Data..... 否定響應(yīng):0x13:參數(shù)長度錯誤;0x22:條件不滿足;0x31:請求不支持;0x33:安全檢查未通過;展示案例:1.讀取0xE3 0x24數(shù)據(jù)E3包含冷卻液溫度、節(jié)氣門溫度、發(fā)動機轉(zhuǎn)速、車速傳感器;0x24包含電池正極電壓、氣管絕對值眼里、質(zhì)量控制流量、車輛氣壓、負載值;發(fā)出數(shù)據(jù)傳輸請求:0x2A| 0x02| 0xE3| 0x240x6A0xE3| 0xA6 0x66 0x07 0x50 0x000x24| 0x8C 0x20 0x1A 0x63 0x4A發(fā)出數(shù)據(jù)停止傳輸請求:0x2A| 0x04| 0xE30x6A

    3.2.2.5. 0x2C - DynamicallyDefineDataIdentifier

    通過內(nèi)存地址和內(nèi)存大小,在服務(wù)端定義一個數(shù)據(jù)標識。 格式:1.difinitionType=defineByIdentifier(0x01)0x2C| 0x01| difinitionType(0x00)| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00))| sourceDataIdentifier(MSB(0X00) LSB(0X00))| positioninSourceDataRecord(0x00)| mqmorySize(0x00)| .....2.difinitionType=defineByMemoryAddress(0x02)0x2C| 0x02| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00))| addressAndLengthFormatIdentifier(0x00)| memoryAddress...| memorySize ....| ....3.difinitionType=clearDynamicallyDefinedDataIdentifier(0x03)0x2C| 0X03| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00))4. difinitionType=0X00保留5. 0x00-0x7F保留 肯定響應(yīng):0x6C| difinitionType(0x00-0x7F)| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00)) 否定響應(yīng):0x12:子功能不支持;0x13:消息長度或格式錯誤;0x22:條件不滿足;0x31:參數(shù)錯誤;0x33:安全校驗不通過;展示案例:見UDS翻譯文檔P2131.生成單個數(shù)據(jù)信息(2字節(jié)標識符)0x22| 0xF3 0x010x6C| 0xF3 0x01| 0x4C 0X36 0X4D 0x49 0x21 0x00 0x17 2.生成多個數(shù)據(jù)信息的組合數(shù)據(jù)塊0x2C| 0x01| 0xF3 0x02| 0x01 0x0A| 0x02(發(fā)動機冷卻液溫度)| 0x01| 0x01 0x0A| 0x04(發(fā)動機轉(zhuǎn)速)| 0x02| 0x01 0x0A| 0x0B(怠速空氣控制)| 0x01| 0x05 0x0B| 0x02(爆震傳感器)| 0x010x6C| 0x01| 0xF3 0X02-----請求消息0x22| 0xF3 0x020X6C| 0xF3 0x02| 0xA6 0x07 0x50 0x82 0x913.發(fā)送依據(jù)內(nèi)存地址構(gòu)建的數(shù)據(jù)標識符的數(shù)據(jù)請求(動態(tài)數(shù)據(jù)請求)0x2C| 0x02 0xF3 0x02| 0x14| 0x21 0x09(發(fā)動機溫度)| 0x19 0x69| 0x01| 0x21 0x09 0x19 0x6B(發(fā)動機轉(zhuǎn)速)| 0x02| 0x013 0x10 0x19 0x95(爆震傳感器)| 0x010x6C| 0x02| 0xF3 0x02------請求消息0x22| 0xF3 0x020X6C| 0xF3 0x02| 0xA6 0x07 0x50 0x914.動態(tài)構(gòu)建數(shù)據(jù)標識符,并依據(jù)標識符請求服務(wù)端定期發(fā)送數(shù)據(jù)生成包含發(fā)動機冷卻液0x010A、發(fā)動機轉(zhuǎn)速0x010A、保準傳感器0x050B的動態(tài)數(shù)據(jù)標識符0xF2E7。0x2C| 0x01| 0xF2 0xE7| 0x01 0x0A| 0x02(發(fā)動機冷卻溫度)| 0x01 0x0A| 0x04(發(fā)動機轉(zhuǎn)速)| 0x02| 0x05 0x0B| 0x02(震爆傳感器)| 0x010x6C| 0x01| 0xF2 0xE7------請求消息0x2A| 0x04| 0xE70x6A| 0xE7| 0xA6 0x07 0x50 0x91 0xE7| 0xA6 0x07 0x55 0x98(周期性發(fā)送數(shù)據(jù))5.刪除動態(tài)定義的數(shù)據(jù)標識符請求清除0xF303消息0x2C| 0x03| 0xF3 0x030x6C| 0x03| 0xF3 0x036.使用兩種定義類型建立一個動態(tài)數(shù)據(jù)標識符a.發(fā)動機油溫和環(huán)境空氣溫度2字節(jié)DID引用;b.內(nèi)存地址引用的發(fā)動機冷卻液溫度和發(fā)動機轉(zhuǎn)速;c.發(fā)動機油位由2字節(jié)DID引用;0x2c| 0x01| 0xF3 0x01| 0x12 0x34(發(fā)動機油溫)| 0x01 0x02| 0x56 0x78(環(huán)境空氣溫度)| 0x01| 0x010x6C| 0x01| 0xF3 0x01-----0x2C| 0x02| 0xF3 0x01| 0x14| 0x21 0x09 0x19 0x69| 0x01(發(fā)動機冷卻液溫度)| 0x21 0x09 0x19 0x6B(發(fā)動機轉(zhuǎn)速)| 0x020x6C| 0x02| 0xF3 0x01------0x2C| 0x01| 0xF3 0x01| 0x9A 0xBC(發(fā)動機油位)| 0x01| 0x040x6C| 0x01| 0xF3 0x01-------0x22| 0xF3 0x010x62| 0xF3 0x01| 0x4C 0x36 0x4D 0xA6 0x07 0x50 0x49 0x21 0x00 0x17------0x2C| 0x03| 0xF3 0x010x6C| 0x03| 0xF3 0x01

    3.2.2.6. 0x2E - WriteDataByIdentifier

    客戶端向指定內(nèi)存地址寫入數(shù)據(jù),如配置信息VIM碼寫入、清除非易失性存儲器數(shù)據(jù)、重置參數(shù)、設(shè)置選項等。 格式:0x2E| 0x00 0x00(地址)| 0x00 0x00(數(shù)據(jù))......肯定響應(yīng): 0x6E| 0x00 0x00(響應(yīng)的2字節(jié)數(shù)據(jù)) 否定響應(yīng):0x130x220x310x72:寫入內(nèi)存錯誤; 展示按理:0x2E| 0xF1 0x90| 00x57 0x30 0x4C 0x30 0x30 0x30 0x30 0x34 0x33 0x4D 0x42 0x35 0x34 0x31 0x33 0x32 0x36 0x6E| 0xF1 0x90

    3.2.2.7. 0x3D - WriteMemoryByAddress

    允許客戶端在一個或多個連續(xù)內(nèi)存位置將信息寫入服務(wù)器,如清除存儲器數(shù)據(jù)、修改校驗值。 格式:0x3D| addressAndLengthFormatIdenfitier(0x00)| 0x00 0x00.......| 0x00 0x00 ......| 0x00 0x00 肯定響應(yīng):0x7D| 0x00| 0x00 0x00 ......| 0x00 0x00 ..... 否定響應(yīng):0x13:消息長度或格式錯誤;0x22:條件不滿足;0x31:參數(shù)錯誤;0x33:安全校驗不通過;0x72:擦除或刷寫內(nèi)存時發(fā)生錯誤; 展示案例:1.將數(shù)據(jù)字節(jié)寫入服務(wù)內(nèi)存(2字節(jié)尋址)0x3D| 0x12| 0x20 0x48(memoryAddress)| 0x02(memorySize)| 0x00 0x8C0x7D| 0x12| 0x20 0x48| 0x022.將數(shù)據(jù)字節(jié)寫入服務(wù)內(nèi)存(3字節(jié)尋址)0x3D| 0X13| 0x20 0x48 0x13| 0x03| 0x00 0x01 0x8C0x7D| 0x13| 0x20 0x48 0x13| 0x033.’將數(shù)據(jù)字節(jié)寫入服務(wù)內(nèi)存(4字節(jié)尋址)0x3D| 0x14| 0x20 0x48 0x13 0x13 0x09| 0x05| 0x00 0x01 0x8C 0x09 0xAF0x7D| 0x14| 0x20 0x48 0x13 0x09| 0x05

    3.2.3 存儲數(shù)據(jù)傳輸單元

    3.2.3.1.0x14 - ClearDiagnoticInformation

    允許客戶端清除服務(wù)端診斷信息。 可通過該服務(wù)重置/清除DTC信息,如DTC狀態(tài)信息、DTC快照數(shù)據(jù)、DTC擴展數(shù)據(jù)、DTC其他相關(guān)數(shù)據(jù)。 格式:0x14| 0x00 0x00 0x00注意:0XFF 0XFF 0XFF時,代表所有種類的DTC肯定響應(yīng):0x54 否定響應(yīng):0x13:消息長度或格式錯誤;0x22:條件錯誤;0x31:參數(shù)錯誤;0x72:擦除或刷寫內(nèi)存時發(fā)生錯誤;展示案例:1.請求排放系統(tǒng)信息0x14| 0xFF 0xFF 0x330x54

    3.2.3.2.0x19 - ReadDTCInformatioon

    允許客戶端向服務(wù)端請求各種診斷信息。 檢索與客戶定義的DTC數(shù)量、DTC列表、特定功能DTX列表、永久性狀態(tài)的DTC、凍結(jié)幀、DTC計數(shù)器信息、DTC發(fā)生器、DTC老化計數(shù)器、OBD特定計數(shù)器(如無故障模式下的架勢循環(huán)次數(shù))、最后發(fā)生時間、測試失敗計數(shù)器、未完成計數(shù)器、客戶定義嚴重性的DTC列表、客戶定義嚴重性的DTC信息、服務(wù)器支持DTC狀態(tài)、失敗的第一個DTC、最近失敗的DTC、確認的第一個DTC、最近確認的DTC、DTC鏡像內(nèi)存中與客戶定義DTC狀態(tài)碼匹配的DTC了列表、DTC鏡像內(nèi)存中檢索DTC掩碼和DTC擴展數(shù)據(jù)、DTC鏡像內(nèi)存中檢索DTC數(shù)量、檢索特定信息的DTC數(shù)據(jù)或相關(guān)信息、檢索目前為“待定”、“已確認”的DTC類型、從DTC內(nèi)存中檢索客戶定義的關(guān)聯(lián)數(shù)據(jù)、從客戶定義DTC存儲器中檢索匹配列表、用戶定義DTC鏡像內(nèi)存中檢索DTC列表和擴展數(shù)據(jù)、DTC內(nèi)存中檢索快照數(shù)據(jù)確定請求所屬類型等 0x01 - 檢索與客戶端定義狀態(tài)掩碼相匹配的DTC數(shù)量 0x02 - 檢索與客戶端定義狀態(tài)掩碼相匹配的DTC列表 0x03 - 檢索DTC快照記錄標識 0x04 - 檢索客戶端定義DTC掩碼的快照數(shù)據(jù) 0x05 - 檢索客戶端定義記錄號的DTC存儲數(shù)據(jù) 0x06 - 檢索客戶端定的DTC掩碼和擴展數(shù)據(jù)記錄號的擴展數(shù)據(jù) 0x07 - 檢索與客戶端定義嚴重性質(zhì)掩碼匹配的DTC數(shù)量 0x08 - 檢索與客戶機定義嚴重性掩碼記錄匹配信息的嚴重性和功能單元信息列表 0x09 - 檢索客戶定義的DTC嚴重程度和功能單元信息 0x0A - 檢索服務(wù)器支持的DTC狀態(tài) 0x0C - 檢索第一個/最近的確認DTC 0x0D - 檢索第一個/最近的故障DTC 0x0E - 要求ECU上報最近的一條被置為confirm的DTC 0x0F - 從服務(wù)端DTC鏡像內(nèi)存中檢索與客戶端定義狀態(tài)掩碼匹配的DTC列表 0x10 - 檢索鏡像內(nèi)存DCE中客戶定義的DTC掩碼和DTC擴展數(shù)據(jù)記錄編號的數(shù)據(jù)記錄 0x11 - 檢索與客戶端定義狀態(tài)掩碼匹配的鏡像內(nèi)存DTC數(shù)量 0x12 - 檢索與客戶端定義狀態(tài)掩碼匹配的“唯一與排放相關(guān)的OBD”的DTC數(shù)量 0x13 - 檢索與客戶端定義狀態(tài)掩碼匹配的“唯一與排放相關(guān)的OBD”的DTC列表 0x14 - 檢索“預(yù)先故障” 的DTC狀態(tài)列表 0x15 - 檢索具有“永久性DTC”狀態(tài)的DTC列表 0x16 - 檢索客戶端定義DTC擴展數(shù)據(jù)記錄號的DTC擴展數(shù)據(jù) 0x17 - 檢索服務(wù)端用戶定義DTC存儲區(qū)中與客戶端定義DTC狀態(tài)掩碼匹配的DTC列表 0x18 - 檢索服務(wù)端用戶定義存儲器中的DTC快照數(shù)據(jù)(用于客戶端定義的DTC掩碼和DTC快照編號) 0x19 - 檢索與客戶端用戶定義內(nèi)存的DTC擴展數(shù)據(jù)(用于客戶機定義DTC掩碼和客戶機定義DCE中的DTC擴展數(shù)據(jù)編號) 0x1A-0x41:保留 0x42 - 檢索與客戶端定義狀態(tài)掩碼匹配的WWH-OBD DTC列表 0x43-0x54:保留 0x55 - 檢索具有“永久性”狀態(tài)的WWH-OBD DTC列表 0x56-0x7F:保留格式: 1.請求定義子功能信息0x19| 0x01 0x02 0x0F 0x11 0x12 0x13| DTCStatusMask(0x00) 2.請求定義子功能信息0x19| 0x03 0x04| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00) 3.請求DTC存儲數(shù)據(jù)0x19| 0x05| DTCSnapshotRecordNumber(0x00) 4.請求DTC擴展數(shù)據(jù)0x19| 0x06 0x10| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCExtDataRecordNumber(0x00) 5.請求DTC嚴重性掩碼和信息0x19| 0x07 0x08| DTCSeverityMask(0x00) DTCStatusMask(0x00) 6.請求DTC嚴重信息0x19| 0x09| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) 7.請求特定DTC信息0x19| 0x0A 0x0B 0x0C 0x0D 0x0E 0x14 0x15 8.按記錄編號請求DTC信息0x19| 0x16| DTCExtDataRecordNumber(0x00) 9.通過任務(wù)狀態(tài)請求用戶定義內(nèi)存DTC信息0x19| 0x17| DTCStatusMask(0x00) MemorySelection(0x00) 10.通過DTC編號請求用戶定義內(nèi)存快照數(shù)據(jù)0x19| 0x18| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00)| MemorySelection(0x00) 11.通過DTC編號請求用戶定義內(nèi)存擴展數(shù)據(jù)0x19| 0x19| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCExtDataRecordNumber(0x00)| MemorySelection(0x00) 12.通過任務(wù)記錄請求WWHOBD信息0x19| 0x42| FunctionalGroupIdentifier(0x00)| DTCStatusMask(0x00) DTCSeverityMask(0x00) 13.請求WWHOBD參數(shù)狀態(tài)0x19| 0x55| FunctionalGroupIdentifier(0x00)肯定響應(yīng):0x59| 0x01 0x07 0x11 0x12| DTCStatusAvailabilityMask(0x00)| 0x00 0x01 0x02 0x03 0x04| DTCCount(0x00 0x00)0x59| 0x02 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x13 0x15| DTCStatusAvailabilityMask(0x00)|Data .....0x59| 0x03| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00)| ... |...|...0x59| 0x04| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00)| DTCSnapshotRecordNumberOfIdentifiers(0x00)| ...| ...| ...0x59| 0x05| DTCStoredDataRecordNumber(0x00)| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) statusOfDTC(0x00)| DTCStoredDataRecordNumberOfIdentifiers(0x00)| ...| ...0x59| 0x06 0x10| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) statusOfDTC(0x00)| DTCExtDataRecordNumber(0x00)| ...| ...0x59| 0x08 0x09| DTCStatusAvailabilityMask(0x00)| ...0x59| 0x14| ...0x59| 0x16| DTCExtDataRecordNumber(0x00)| ...| ...0x59| 0x17| MemorySelection(0x00)| DTCStatusAvailabilityMask(0x00)| ...| ...0x59| 0x18| MemorySelection(0x00)| 0x00 0x00 x00 0x00| DTCSnapshotRecordNumber(0x00)| DTCSnapshotRecordNumberOfIdentifiers(0x00)| ...| ...0x59| 0x19| MemorySelection(0x00)| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) statusOfDTC(0x00)| DTCExtDataRecordNumber(0x00)| ...| ...0x59| 0x42| FunctionalGroupIdentifier(0x00)| DTCStatusAvailabilityMask(0x00)| DTCSeverityAvailabilityMask(0x00)| DTCFormatIdentifier(0x04 0x02)| ...0x59| 0x55| FunctionalGroupIdentifier(0x00)| DTCStatusAvailabilityMask(0x00)| DTCFormatIdentifier(0x04 0x02)| ... 否定響應(yīng):0x12:不支持此功能參數(shù);0x13:消息長度錯誤;0x31:無法識別的DTXMaskRecord、無效的counter/DTCSnapshotRecordNumber、無法識別的FunctionalGroupIdentifier、無法識別的MemorySelection。注意:1.DTCStatusMask/DTCSeverityMask解析與定義7~5:DTC嚴重性信息(可選)7:是否立即檢查,0-否,1-是6:是否在下次停車時檢查車輛故障,0-否,1-是5:是否將故障請求僅維護,0-無維護,1-有維護4~0:DTC類別信息2.DTCFormatIdentifier0x00 - 標識參考ISO 15031-6中定義的DTC格式0x01 - 依據(jù)DTCAndStatusRecord標識服務(wù)器報告DTC格式0x02 - 標識參考SAE J1939-73中定義的DTC格式0x03 - 標識參考SAE J11992-4中定義的DTC格式0x04 -標識參考ISO 27145-2中定義的DTC格式0x05-0xFF:保留3.FunctionalGroupIdentifier作用:a.用于請求UDS版本號來識別協(xié)議b.請求車輛DTC狀態(tài)信息c.清除車輛DTC信息定義:0x00 - 0x32:保留0x33:排放系統(tǒng)組0x34-0xCF:ISO/SAE保留使用0xD0:安全系統(tǒng)組0xD1-0xDF:立法只讀組0xE0-0xFD:ISO/SAE保留使用0xFE:VOBD系統(tǒng)0xFF:所有系統(tǒng)組展示案例:1.離合位置傳感器-對地短路0x080511,DTC為0x24;2.混合電池溫度傳感-電路電壓高于閾值0x0A9B17,DTC為0x26;3.間歇電路0x25221F,0x2F;4.請求狀態(tài)掩碼為0x08的數(shù)據(jù)信息0x19| 0x01| 0x080x59| 0x01| 0x2F| 0x01| 0x00 0x015.請求與狀態(tài)掩碼匹配的信息0x19| 0x02| 0x840x59| 0x02| 0x7F| 0x0A 0x9B 0x17 0x24| 0x08 0x05 0x11 0x2F---0x19| 0x02| 0x010x59| 0x02| 0x7F---6.返回三個快照數(shù)據(jù)0x19| 0x030x59| 0x03| 0x12 0x34 0x56 0x01| 0x12 0x34 0x56 0x02| 0x7 0x9A 0xBC 0x01發(fā)動機冷卻液溫度:0xA6 0x66 0x07 0x50 0x207.返回一個快照數(shù)據(jù) 0x19| 0x04 | 0x12 0x34 0x56| 0x020x59| 0x04| 0x12 0x34 0x56 0x24| 0x02| 0x01| 0x47 0x11| 0xA6 0x66 0x07 0x50 0x20 8.返回DTC存儲數(shù)據(jù)0x19| 0x05| 0x020x59| 0x05| 0x02| 0x12 0x34 0x56 0x24 0x01| 0x47 0x11| 0xA6 0x66 0x07 0x50 0x209.返回DTC擴展數(shù)據(jù)編號預(yù)熱循環(huán)計數(shù)器-0x05->0x17DTC故障檢測計數(shù)器-0x10->0x790x19| 0x06|0x12 0x34 0x56| 0xFF0x59| 0x06| 0x12 0x34 0x56 0x24| 0x05| 0x17| 0x10| 0x7910.報告所有的DTC擴展記錄0x19| 0x06| 0x12 0x34 0x56| 0xFF0x59| 0x06| 0x12 0x34 0x56 0x24| 0x05| 0x17| 0x10| 0x7911.P314(其他案例此處暫時省略)

    3.2.4 輸入輸出控制單元

    3.2.4.1.0x2F - InputOutputControlByIdentifier

    用于簡單的輸入替換輸出控制。 格式:0x2F| 0x00 0x00| 0x00 0x00 ...| 0x00 0x00 ... 肯定響應(yīng):0x6F| 0x00 0x00| 0x00 0x00 ... 否定響應(yīng):0x13:長度錯誤;0x22:條件不滿足;0x31:參數(shù)無效;0x33:安全檢查未通過;注意:InputOutputControlParameter0x00:結(jié)束控制0x01:將所有輸入信號、內(nèi)部參數(shù)、輸出信號重置為默認狀態(tài)0x02:請求凍結(jié)輸入信號的當前狀態(tài)0x03:將RAM中dataIdentifier引用的輸入信號、內(nèi)部參數(shù)、受控輸出信號調(diào)整為控制選項中包含的值0x04-0xFF:保留展示案例:1.讀取進氣門位置的當前狀態(tài)、數(shù)據(jù)查詢狀態(tài):0x22| 0x9B 0x00(進氣門位置)0x62| 0x9B 0x00| 0x0A(當前位置為10%)---獲取數(shù)據(jù):0x2F| 0x9B 0x00| 0x03 0x3C(調(diào)整到60%)0X6F| 0x9B 0x00| 0x03 0x0C(當前位置12%)---查詢狀態(tài):0x22| 0x8B 0x000x62| 0x9B 0x00| 0x3C(60->60%,說明當前位置已到了60%)---查詢數(shù)據(jù):0x2F| 0x9B 0x00| 0x000X6F| 0x9B 0x00| 0x00| 0x3A(接收請求,58->58%,說明當前位置已到了58%)---0x2F| 0x9B 0x00| 0x020X6F| 0x9B 0x00| 0x02 0x32(50%)2.僅控制IAC Pintle位置0x2F| 0x01 0x55| 0x03 0x07 0x0XX 0xXX 0xYZ 0xXX| 0x800x6F| 0x01 0x55| 0x03 0x07 0x02 0xEE 0x12 0x59 ---僅控制RPM0x2F| 0x01 0x55| 0x03 0xXX 0x03 0xE8 0xYZ 0xXX| 0x400x6F| 0x01 0x55| 0x03 0x09 0x03 0xB6 0x12 0x59---控制踏板位置A和EGR占空比0x2F| 0x01 0x55| 0x03 0xXX 0xXX 0xXX 0x3Z 0x72| 0x280x6F| 0x01 0x55| 0x03 0x07 0x03 0x52 0x32 0x69---將所有參數(shù)的控制返回給ECU0x2F| 0x01 0x55| 0x00| 0xFF0x6F| 0x01 0x55| 0x00 0x09 0x03 0x52 0x12 0x59

    3.2.4 常規(guī)功能單元

    3.2.4.1.0x31 - RoutineControl

    執(zhí)行已定義的步驟序列并獲取任何相關(guān)結(jié)果。如內(nèi)存擦除、重置、學(xué)習(xí)自適應(yīng)數(shù)據(jù)、運行內(nèi)檢、覆蓋正常服務(wù)器控制決策、控制服務(wù)值隨時間變化等。 常見步驟:1.開始一個歷程;2.停止一個歷程;3.請求例行結(jié)果; 格式:0x31| routineControlType(0x00)| routineIdentifier(0x00 0x00)| routineControlOptionRecord(0x00 ... 0x00)子函數(shù)參數(shù):0x00:保留;0x01:啟動指定歷程;0x02:停止指定歷程;0x03:返回指定歷程結(jié)果值;0x04-0x7F:保留;肯定響應(yīng):0x71| 0x00-0x7F| 0x00 0x00| 0x00| 0x00 0x00 ... 否定響應(yīng):0x12:子功能不支持;0x13:消息長度錯誤;0x22:未按標準進行請求;0x24:未在正常狀態(tài)下執(zhí)行操作;0x31:參數(shù)錯誤;0x33:安全訪問被拒絕;0x72:在訪問服務(wù)段內(nèi)部存儲器例程時檢測到錯誤;注意:routineIdentifier - RID0x0000-0x00FF:保留;0x0100-0x01FF:保留,用于表示行駛記錄儀測試結(jié)果;0x0200-0xDFFF:保留,整車制造商自定義;0xE000-0xE1FF:保留,用于用于表示OBD/EOBD;0xE200:啟動先前選擇的點火回路的部署;0xE201-0xE2FF:保留,用于安全系統(tǒng)實現(xiàn);0xE300-0xEFFF:保留;0xF000-0xFEFF:保留,系統(tǒng)供應(yīng)商自定義;0xFF00:用于啟動服務(wù)端內(nèi)存擦除;0xFF01:用于檢查服務(wù)端內(nèi)存編程依賴;0xFF02:用于擦除服務(wù)端鏡像內(nèi)存DTC;0xFF03-0xFFFF:保留; 展示案例:1.基于測試條件:已點火、未打開發(fā)動機、速度為0進行測試,進行啟動測試。0x31| 0x01| 0x02 0x010x71| 0x01| 0x02 0x01 0x322.基于測試條件:已點火、未打開發(fā)動機、速度為0進行測試,進行停止測試。0x31| 0x02| 0x02 0x010x71| 0x02| 0x02 0x01 0x303.檢測結(jié)果值0x31| 0x03| 0x02 0x010x71| 0x03| 0x02 0x01 0x30 0x33 ... 0x8F4.在規(guī)定條件下,啟動例程0x31| 0x01| 0x02 0x02| 0x06 0x010x71| 0x01|0x02 0x02| 0x32 0x33 ....0x8F

    3.2.5 下載上傳功能單元

    3.2.5.1.0x34 - RequestDownload

    格式:0x34| dataFormatIdentifier(0x00)| addressAndLengthFormatIdentifier(0x00)| 0x00 0x00 ...| 0x00 0x00 ... 肯定響應(yīng):0x74| LengthFormatIdentifier(0x00)| 0x00 0x00 ... 否定響應(yīng):0x13:消息長度錯誤;0x22:服務(wù)端與客戶端之間的數(shù)據(jù)大小不匹配;0x31:參數(shù)無效;0x33:安全校驗失敗;0x70:下載到服務(wù)端內(nèi)存失敗;

    3.2.5.2.0x35 - RequestUpload

    從服務(wù)端到客戶端進行數(shù)據(jù)傳輸。 格式:0x35| dataFormIdentifier(0x00)| addressAndLengthFormatIdentifier(0x00)| 0x00 ... 0x00| 0x00 ... 0x00肯定響應(yīng):0x75| LengthFormatIdentifier(0x00)| maxNumberOfBlockLength(0x00 ... 0x00) 否定響應(yīng):0x13:消息長度錯誤;0x22:服務(wù)端與客戶端之間的數(shù)據(jù)大小不匹配;0x31:參數(shù)無效;0x33:安全校驗失敗;0x70:下載到服務(wù)端內(nèi)存失敗;

    3.2.5.3.0x36 - TransferData

    用于服務(wù)端與客戶端之間的數(shù)據(jù)傳輸。 格式:0x36| blockSequenceCounter(0x00)| 0x00 ... 0x00肯定響應(yīng):0x76| 0x00| 0x00 ... 0x00 否定響應(yīng):0x13:消息長度錯誤;0x24:請求錯誤(帶有blockSequenceCounter的該傳輸服務(wù)請求消息必須等于前一個請求傳輸消息中包含的請求消息);0x31:不符合規(guī)范的請求;0x71:下載模塊長度與服務(wù)端給的內(nèi)存大小不符合;0x72:服務(wù)端下載數(shù)據(jù)時數(shù)據(jù)被擦除;0x73:blockSequenceCounter錯誤;0x92/0x93:服務(wù)端主電源應(yīng)交測量電壓超出了將數(shù)據(jù)下載到服務(wù)器的可接受范圍;

    3.2.5.4.0x37 - RequestTransferExit

    終止客戶端與服務(wù)端之間的數(shù)據(jù)傳輸。 格式:0x37|transferRequestParameterRecord(0x00 .. 0x00)肯定響應(yīng):0x77| transferResponsetParameterRecord(0x00 .. 0x00) 否定響應(yīng):0x13:消息長度錯誤;0x24:收到請求時編程過程未完成;傳輸服務(wù)已停止;0x31:無效數(shù)據(jù);0x72:服務(wù)端下載數(shù)據(jù)時數(shù)據(jù)被擦除;展示案例:1.客戶端從服務(wù)端下載數(shù)據(jù)。memoryaddress 0x602000dataFormatIdentifier:0x11memorySize:0x00FFFFtransferResponseParameter:0x0081---請求下載:0x34| 0x11| 0x33| 0x60 0x20 0x00| 0x00 0xFF 0xFF0x74| 0x20| 0x00 0x81---傳輸數(shù)據(jù):0x36| 0x01| 0x00 ...0x000x76| 0x010x36| 0x05| 0xXX ...0xXX0x76 0x05 ---移除出口(停止傳輸):0x370x771.客戶端向服務(wù)端上傳數(shù)據(jù)。memoryaddress 0x201000dataFormatIdentifier:0x11memorySize:0x0001FFtransferResponseParameter:0x0081---請求上傳:0x35| 0x11| 0x33| 0x20 0x10 0x00| 0x00 0x01 0xFF0x75| 0x20| 0x00 0x81---傳輸數(shù)據(jù):0x36| 0x010x76| 0x01| 0xXX ... 0xXX0x36| 0x050x76| 0x05| 0xXX ... 0xXX---移除出口(停止傳輸):0x370x77

    3.2.5.5.0x38 - RequestFileTransfer

    啟動客戶端與服務(wù)端之間的數(shù)據(jù)傳輸。 格式:0x38| Transfermode(0x01 - 0x05)| filePathAndNameLength(0x00 0x00)| filePathAndName(0x00 ...)| dataFormatIdentifier(0x00)| fileSizeParameterLength(0x00)| fileSzieUnCompressed(0x00 ...)| fileSizeCompressed(0x00 ...)Transfermode:0x01:AddfilepathAndName0x02:DeletefilepathAndName0x03:Replacefile0x04:Readfile0x05:ReadDir注意:1.當Transfermode為0x02/0x04/0x05時,沒有 dataFormatIdentifier(0x00)| fileSizeParameterLength(0x00)| fileSzieUnCompressed(0x00 ...)| fileSizeCompressed(0x00 ...)參數(shù)。2.當Transfermode為0x05時,請求中測參數(shù)應(yīng)該使用ASCII格式編碼。肯定響應(yīng):0x78| 0x01-0x05| 0x00| 0x00 ... 0x00| 0x00| 0x00 0x00| 0x00 ... 0x00| 0x00 ...0x00注意:1.當Trandfermode為0x02,dataFormatIdentifier參數(shù)不在響應(yīng)信息中;當Trandfermode為0x05,dataFormatIdentifier參數(shù)為0x00;2.當Transfermode為0x02/0x04/0x05時,沒有 fileSizeParameterLength(0x00)| fileSzieUnCompressed(0x00 ...)| fileSizeCompressed(0x00 ...)參數(shù)。 否定響應(yīng):0x13:信息長度錯誤;0x22:服務(wù)請求未執(zhí)行成功;0x31:參數(shù)無效;0x33:安全校驗未通過;0x70:下載因服務(wù)端內(nèi)存故障無法完成;展示案例:0x38| 0x01| 0x00 0x1E| 0x44 ....0x7A| 0x11| 0x02| 0xC3 0x50| 0x75 0x300x78| 0x01| 0x02| 0xC3 0x50| 0x11

    4.基于UDS實現(xiàn)ECU刷寫

    本質(zhì):定義了將一個或者多個應(yīng)用軟件以物理方式下載到ROM中。
    1.ECU上具有BootLoader程序,以解析向ECU發(fā)送的診斷指令;
    編程步驟類型分類:
    1.標準步驟;
    2.可選步驟;
    3.正常廠商的具體步驟;
    執(zhí)行過程中每步都需要指定該步驟允許的尋址方法,依據(jù)OEM要求選擇功能地址或物理地址。基礎(chǔ)過程如下:


    主執(zhí)行:協(xié)調(diào)/同步多個并行運行的編程步驟,控制“預(yù)編程步驟”和“后編程步驟”的執(zhí)行,以及將車輛維持在其已轉(zhuǎn)換到的操作模式中。如將車輛網(wǎng)絡(luò)轉(zhuǎn)換為允許對單個ECU編程的操作模式或編程節(jié)點的結(jié)論。
    編程執(zhí)行:各ECU的“編程步驟”可由客戶端單獨并發(fā)執(zhí)行,直到執(zhí)行到“編程最后階段”
    1. 下載應(yīng)用程序軟件或應(yīng)用程序數(shù)據(jù)
    a.傳輸數(shù)據(jù)到服務(wù)端; b.服務(wù)端下載數(shù)據(jù); c.編程后車輛網(wǎng)絡(luò)重新同步;
    2. 服務(wù)器配置(可選)
    a.預(yù)編程步驟 - 設(shè)置車輛網(wǎng)絡(luò)以進行服務(wù)器配置。 b.編程步驟 - 最終服務(wù)器配置。例如用于服務(wù)器復(fù)位后寫入數(shù)據(jù)。 c.后編程步驟 - 在最終服務(wù)器配置后重新同步車輛網(wǎng)絡(luò)。
    預(yù)編程:
    a.進入extended session; b.使用0x31執(zhí)行條件檢查;c.使用0x85服務(wù)關(guān)閉DTC存儲;d.使用0x28關(guān)閉與診斷無關(guān)的報文,提高刷寫效率;
    編程:
    a.進入programming session模式;b.使用0x27服務(wù)進行安全訪問;c.寫入指紋信息,標記身份;d.執(zhí)行0x31,刪除存儲空間;e.調(diào)用數(shù)據(jù)操作指令進行寫數(shù)據(jù)0x34 0x36 0x37; f.數(shù)據(jù)校驗0x31;g.軟件完整性、兼容性等驗證;
    后編譯:
    a.將ECU重啟0x11或者恢復(fù)默認模式0x10;
    編程順序:P431
    特殊要求
    如果在編程過程中發(fā)生以下錯誤情況,服務(wù)器應(yīng)能夠恢復(fù)并重新編程。
    a.供電電源連接中斷;
    b.失去地面連接;
    c.數(shù)據(jù)鏈路通信中斷;
    d.過壓或欠壓;

    4.1 刷寫示例(因為是中文翻譯版本,所以表中會有一部分中文):

    4.1.1 預(yù)編譯

    4.1.1.1 啟動診斷會話

    使ECU進入擴展模式。

    02,0代表單幀,2代表2個長度有效數(shù)據(jù),10 03 發(fā)起擴展服務(wù)請求。
    06,0代表單幀,6代表6個長度有效數(shù)據(jù),50 03 是對應(yīng)的指令響應(yīng)。
    疑問:此例子中為什么有兩個不同ID內(nèi)容相同的CAN報文?

    4.1.1.2 DTC設(shè)置控制(關(guān)閉)

    設(shè)置禁止故障碼,關(guān)閉DTC功能。

    85 02,85為服務(wù)指令,子服務(wù)02關(guān)閉指令。

    4.1.1.3 通信控制

    關(guān)閉非刷寫數(shù)據(jù)流,關(guān)閉普通應(yīng)用報文。

    注意事項:當對傳輸進行傳輸失能時,使用0x3E服務(wù)將服務(wù)器狀態(tài)保持。
    28 03 01,28為服務(wù)指令,子服務(wù)為subfunction 03 disablerxandtx,communicationtype 01 normalcommunicationmessage。

    4.1.2 編程階段

    4.1.2.1 編程會話

    切換模式,進入編程模式。

    10 02 指令,10切換模式,自服務(wù)02表示編程模式。

    4.1.2.2安全校驗

    a.對ECU進行解鎖驗證。

    27 01指令,27安全服務(wù),子服務(wù)01為請求seed,得到21 74,進行計算之后,再給出響應(yīng)。
    b.響應(yīng)種子請求。

    診斷儀給出響應(yīng)key為47 11,ECU進行校驗判斷。

    4.1.2.3 擦除flash


    31 啟動擦除, FF 00 協(xié)議規(guī)定erasememory DID;

    4.1.2.4 請求下載

    數(shù)據(jù)傳輸



    數(shù)據(jù)傳輸結(jié)束

    4.1.2.5 數(shù)據(jù)驗證

    4.1.3 后編程

    4.1.3.1 寫入VIN碼

    4.1.3.2 ECU重啟

    5. 參數(shù)定義(P466)

    5.1 診斷和通信管理功能單元數(shù)據(jù)參數(shù)定義

    5.1.1 通信類型參數(shù)定義

    5.1.2 EventwindowTime

    5.1.3 LinkContrlModeIdentifier

    不同設(shè)備連接之間的波特率設(shè)置。
    CAN:125000、250000、500000、1000000;
    PC:9600、19200、38400、57600、115200;

    5.1.4 NodeIdentificationNumber

    5.2 數(shù)據(jù)傳輸功能單元數(shù)據(jù)參數(shù)定義

    5.2.1 DID

    5.2.2 ScalingByte

    5.2.3 ScalingByteExtension

    5.2.4 TransmissionMode

    5.2.5 UDS版本號編碼


    編碼示例:

    5.3 存儲數(shù)據(jù)傳輸功能單元數(shù)據(jù)參數(shù)定義

    5.3.1 GroupOFDTC

    5.3.2 DTCStatusMask/statusOfDTC

    5.3.3 DTC嚴重性和類

    5.3.4 DTCFormatIdentifier

    5.3.5 FunctionalGroupIdentifier

    5.3.6 DTCFaultDetectionCounter

    5.3.7 DTCAgingCounter(距故障最新失敗以來的驅(qū)動周期數(shù))

    5.4 輸入輸出控制功能單元數(shù)據(jù)參數(shù)定義

    5.4.1 InputOutputControlParameter

    5.4.2 RoutineIdentifier

    5.5 上傳下載功能單元數(shù)據(jù)參數(shù)

    5.5.1 NodeofOperation

    5.6 安全訪問狀態(tài)圖

    更多詳細信息請查看協(xié)議標準

    6.診斷幀結(jié)構(gòu)類型

    單幀:當報文長度小于7,數(shù)據(jù)域高4位為0000,表示為單幀;
    首幀:前2字節(jié)作為PCI信息,高4位為0001,低4位及第2字節(jié)描述數(shù)據(jù)總長;
    連續(xù)幀:第1個字節(jié)作為PCI,高4位為0010,低4位為連續(xù)序列號;
    流控幀:數(shù)據(jù)發(fā)送控制,高4位為0011,低4位為FlowStatus,0-ContinueToSend,1-Wait,2-overflow。第2字節(jié)為BlockSize,指示一次可以發(fā)送多少個連續(xù)幀。 第3字節(jié)為Seperatetime;
    示例:
    單幀:
    request 02 10 03 55 55 55 55 55
    response 06 50 03 00 32 01 FA AA

    多幀傳輸:
    03 19 02 08 55 55 55 55 (診斷儀發(fā)送的SingleFrame的request)
    10 33 59 02 19 01 00 07 (ECU以FirstFrame開始傳輸?shù)膔esponse)
    30 00 00 55 55 55 55 55 (診斷儀發(fā)送的FlowControl)
    21 09 03 05 02 09 05 04 (ECU發(fā)送的ConsecutiveFrame)
    22 07 09 05 06 06 09 05 (ECU發(fā)送的ConsecutiveFrame)
    23 08 03 08 07 01 05 08 (ECU發(fā)送的ConsecutiveFrame)
    24 07 01 06 08 07 01 0C (ECU發(fā)送的ConsecutiveFrame)
    25 08 07 01 0D 08 07 03 (ECU發(fā)送的ConsecutiveFrame)
    26 07 09 08 01 01 09 09 (ECU發(fā)送的ConsecutiveFrame)
    27 01 07 09 AA AA AA AA (ECU發(fā)送的ConsecutiveFrame,此時傳輸結(jié)束)

    數(shù)據(jù)示例來源于此文

    7.參考文章

    控制器網(wǎng)絡(luò)診斷專欄
    UDS入門
    UDS-ECU刷寫
    UDS網(wǎng)絡(luò)層/tp層
    UDS詳解
    汽車控制器網(wǎng)絡(luò)技術(shù)交流
    汽車電子ECU BootLoader開發(fā)要點詳解

    總結(jié)

    以上是生活随笔為你收集整理的UDS诊断协议规范与要求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。