UDS诊断详解
uds诊断协议
uds诊断协议UDS(Unified Diagnostic Service)是一种用于诊断车辆电子系统的协议。
它是基于CAN(Controller Area Network)总线通讯协议的一种扩展,提供了丰富的功能和灵活的配置选项。
UDS协议通过发送和接收诊断控制信息,实现了对车辆所有电子控制单元(ECU)的诊断、编程和配置等功能。
以下是对UDS诊断协议的介绍。
UDS协议主要包括两个部分:诊断服务和诊断会话。
诊断服务是指通过UDS协议对车辆的ECU进行诊断、测试和配置等操作。
诊断服务包括故障代码读取、清除故障码、读取数据流、编程等功能。
诊断服务通过发送和接收各种不同的请求和响应消息来实现。
UDS还定义了不同的诊断会话。
诊断会话是指诊断过程中所需的通信协议和参数设置。
诊断会话包括默认会话、编程会话、扩展会话等。
默认会话是引擎启动后默认的诊断会话,用于执行基本的诊断服务。
编程会话是用于对ECU进行编程和配置的会话。
扩展会话是用于实现特定功能的会话,如安全访问许可等。
UDS协议中还定义了许多诊断服务和诊断服务的子函数。
其中包括读取故障码、清除故障码、读取数据流、编程等功能。
读取故障码是通过发送请求消息给ECU,然后接收ECU返回的故障码信息。
清除故障码是通过发送请求消息给ECU,然后ECU清除当前存在的故障码。
读取数据流是通过发送请求消息给ECU,然后接收ECU返回的实时数据流信息。
编程是通过发送请求消息给ECU,然后ECU按照请求进行编程和配置。
UDS协议的应用范围很广泛。
它可以应用于车辆的生产、售后维修、环境监测等各个环节。
在生产过程中,UDS协议可以用于车辆ECU的测试和编程。
在售后维修中,UDS协议可以用于故障诊断和维修。
在环境监测中,UDS协议可以用于监测车辆排放、能源消耗等数据。
通过使用UDS协议,车辆制造商和维修商可以更方便、更快捷地对车辆进行诊断和维修。
总之,UDS是一种强大的诊断协议,提供了丰富的功能和灵活的配置选项。
UDS诊断全集,干货分享
UDS诊断全集,干货分享UDS诊断是Unified Diagnostic Services的全称,其标准是ISO14229,ISO15765,文末可获取链接。
其中:ISO14229-1定义了各诊断服务的格式,以及一些通用信息,比如7层模型;ISO14229-2定义了诊断会话中的各种时间参数,比如P2Server、P2*Server、P2Client等;ISO14229-3定义了UDS基于CAN总线的实现;ISO14229-4定义了UDS基于FlexRay总线的实现;ISO14229-5定义了UDS基于以太网协议的实现;ISO14229-6定义了UDS基于K-Line总线的实现;ISO14229-7定义了UDS基于LIN总线的实现;ISO 15765-1是诊断服务在CAN总线一些通用信息,包括7层模型,如下图所示。
ISO 15765-2是诊断服务在CAN总线上传输的实现方式ISO 15765-3是定义了UDS基于CAN总线的实现,目前被14229-3取代了;ISO 15765-4定义了基于CAN总线实现OBD通信的方式。
上述对UDS诊断标准进行简单的分析,下面就是干货分享了,包括对诊断服务的介绍,AUTOSAR架构诊断协议栈的详细介绍,最后是基于CAN的UDS刷写讲解。
UDS诊断协议诊断服务讲解1.UDS诊断帧2.UDS诊断服务—上传下载单元、Routine单元3.UDS诊断服务—已存数据传输单元、输入输出单元4.UDS诊断服务——数据传输单元5.UDS诊断服务——诊断和通信管理单元AUTOSAR中诊断协议栈讲解1.AUTOSAR的故障存储策略2.AUTOSAR DCM介绍3.诊断Dem模块介绍AUTOSAR Dem之Debounce详解4.DTC status介绍5.诊断Dem模块介绍UDS刷写1.基于CAN的刷写流程。
UDS诊断详解
6
光传感器内部故障
0x90B196
2019/10/17
6
四-2:输入/输出线路的开路或短路情
№
诊断失效功能 Subtype Description
$19
InputOutputControlByIdentifier $2F
RoutineControl
$31
RequestDownload
$34
RequestUpload
$35
TransferData
$36
RequestTransferExit
$37
DEFAULT
EXTENDED DEFAULT PROGRAMMING
5
Test failed since last clear 上次清零后测试失效
Test not completed this operation
6 cycle 本运行周期测试未完成
7
Warning indicator requested 警告指示位请求
2019/10/17
Bit State Definition 位状态定义
Bit Description 描述
0
Test failed 测试失效
1
Test failed this operation cycle 本运行周期测试失效
2
Pending DTC 等待DTC
3
Confirmed DTC 确认DTC
4
Test not completed since last clear 上次清零后测试未完成
信。
但是对于此项目 , BCM作为网关, 连接了多个网段的ECU, 外部设备只能通过其中 一个网段 对该 ECU进行诊断操作, 推荐选择路由工作量较低的网段.
UDS诊断服务——诊断和通信管理单元
UDS诊断服务——诊断和通信管理单元UDS诊断服务分为诊断和通信管理功能单元、数据传输功能单元、已存储数据传输功能单元、输⼊输出控制功能单元、Routine功能单元、上传下载功能单元。
各个功能类中包含相关的诊断服务,⾸先介绍诊断和通信管理功能单元。
诊断与通信管理功能单元包含图1中的诊断服务。
图1 诊断与通信管理功能单元下⾯针对诊断与通信管理功能单元中⽐较常⽤的诊断服务进⾏介绍。
DiagnosticSessionControl服务(0x10)该服务⽤于使能不同的Session,其中不同的Session下⽀持特定的诊断服务,如图2所⽰DefaultSession模式下⽀持0x11、0x27、0x28服务,⽽在ExtendedSession下只⽀持0x11、0x28服务。
图2 不同Session下所⽀持的UDS服务⽰例该服务⽀持的⼦服务如下图3所⽰。
图3 0x10服务所⽀持的⼦服务0x10 服务的消息格式如图4所⽰。
图3 0x10服务的消息格式EcuReset 服务(0x11)该服务主要⽤于执⾏不同的复位,复位类型通过⼦服务来区分,如图4所⽰。
图4 0x11服务所⽀持的⼦服务0x11服务的消息格式如图5所⽰。
图5 0x11服务的消息格式SecurityAceess服务(0x27)对于某些操作内存(⽐如0x2E)或者关闭软件的某些功能(⽐如0x2F)诊断服务不能随意操作,因为这些服务的执⾏会影响软件的正常运⾏,对ECU带来安全隐患,该服务⽤于安全校验,为这些影响软件安全的服务提供安全访问保护,必须通过0x27服务解锁后,才能正常执⾏相关的服务。
0x27服务的典型使⽤⽅法如下:1、客户端(诊断设备)向服务端(ECU)请求⼀个seed。
2、服务端发送seed给客户端。
3、客户端根据seed算出⼀个key,并发送给服务端。
4、服务端⾃⼰根据之前发送的seed算出⼀个key与客户端反馈的key进⾏对⽐,如果相同,则通过安全校验。
UDS最全内容总结资料讲解
前言 (2)UDS 的7种服务及肯定响应和否定响应的形式 (3)$10诊断会话 (5)$3E待机握手 (6)$27安全访问 (7)$22读数据 (8)$2E写数据 (8)$19 读DTC (9)$14清除DTC (10)统一诊断服务(Unified diagnostic services ,UDS) (一) (11)Diagnostic request的格式: (11)统一诊断服务(Unified diagnostic services ,UDS) (二) (12)Diagnostic Session Control (0x10) (13)诊断response的格式:Diagnostic Session Control (13)ECU Reset 诊断request的格式 (14)Security Access (0x27) (14)统一诊断服务(Unified diagnostic services ,UDS) (三) (14)Tester Present (0x3E) (16)Control DTC Setting (0x85) (16)Response On Event (0x86) (16)Link Control (0x87) (16)统一诊断服务(Unified diagnostic services ,UDS) (四) (17)Read Data By Identifier (0x22) (17)0x23服务的请求格式0x23 (17)统一诊断服务(Unified diagnostic services ,UDS) (五) (18)0x14:Clear Diagnostic Information (18)0x19:Read DTC Information (18)统一诊断服务(Unified diagnostic services ,UDS) (六) (19)Input Output Control By Identifier (0x2F) (19)Routine Control (0x31) (21)统一诊断服务(Unified diagnostic services ,UDS) (七) (21)Request Download (0x34): (22)Transfer Data(0x36): (22)Request Transfer Exit(0x37): (23)基于CAN总线实现的UDS诊断(DoCAN) (23)前言UDS协议即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ECU发什么指令,读数据流又是发什么指令。
uds诊断实现流程
uds诊断实现流程UDS(Unified Diagnostic Services)诊断是一种用于汽车电子控制单元(ECU)的诊断通信协议。
它通过在汽车ECU和诊断工具之间建立通信连接,实现对车辆电子系统进行故障诊断和参数配置的功能。
本文将介绍UDS诊断的实现流程。
UDS诊断实现流程可以分为以下几个步骤:1. 建立诊断通信连接在诊断工具与车辆ECU之间建立通信连接是UDS诊断的第一步。
通常,诊断工具通过诊断接口(如OBD-II接口)与车辆ECU进行物理连接。
然后,诊断工具发送一个诊断请求给车辆ECU,请求建立通信连接。
车辆ECU接收到请求后进行响应,建立诊断通信连接。
2. 识别车辆ECU在建立通信连接后,诊断工具需要识别车辆ECU的身份。
这是因为现代汽车通常由多个ECU组成,每个ECU负责不同的功能。
诊断工具发送一个识别请求给车辆ECU,请求获取ECU的身份信息。
车辆ECU接收到请求后返回ECU的身份信息,诊断工具通过解析身份信息来识别车辆ECU。
3. 诊断会话管理UDS诊断协议定义了多个诊断会话,每个会话对应着不同的诊断操作。
在识别车辆ECU后,诊断工具需要选择合适的诊断会话进行后续的诊断操作。
通常,诊断会话分为默认会话和扩展会话两种。
默认会话用于常规的诊断操作,而扩展会话则提供了更高级的诊断功能。
诊断工具发送一个会话切换请求给车辆ECU,请求切换到所需的诊断会话。
车辆ECU接收到请求后切换到指定的诊断会话。
4. 诊断服务请求在选择合适的诊断会话后,诊断工具可以向车辆ECU发送诊断服务请求。
诊断服务是UDS诊断协议定义的一系列操作,用于实现不同的诊断功能。
例如,诊断工具可以发送读取数据请求来获取车辆ECU的参数值,也可以发送写入数据请求来配置车辆ECU的参数。
诊断工具发送一个诊断服务请求给车辆ECU,请求执行相应的诊断服务。
车辆ECU接收到请求后执行诊断服务,并返回相应的结果给诊断工具。
5. 诊断服务响应车辆ECU接收到诊断服务请求后,执行相应的诊断服务,并返回诊断服务的执行结果给诊断工具。
UDS诊断详解
Bit State Definition 位状态定义
Supported by ECU1
ECU支持1
Remarks 备注
0
Test failed 测试失效
0=False 1=True
M
1
Test failed this operation cycle 本运行周期测试失效
0=False 1=True
U
2
$19
InputOutputControlByIdentifier $2F
RoutineControl
$31
RequestDownload
$34
RequestUpload
$35
TransferData
$36
RequestTransferExit
$37
2020/7/14
DEFAULT
EXTENDED
DEFAULT PROGRAMMING
№
诊断失效功能 Subtype Description
1
EEPROM读写失效
2
ECU PIN未编程
3 板上继电器对电源短路或者开路
4
板上继电器对地短路
5
雨量传感器内部故障
6
光传感器内部故障
√
√
√
√
×
×
×
×
√
√
×
×
√
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
PHYS √ √ √ × √ × √ √ × × × √ √ × √ √
UDS诊断入门(三)
UDS诊断入门(三)01引言在前面的文章中我们已经介绍了UDS诊断中的诊断和通信管理功能单元的10个服务和数据传输功能单元的7个服务,他们的服务名称和SID如下所示:本文将继续介绍UDS诊断协议的存储数据传输功能单元和输入输出控制单元以及例行程序功能单元的4个服务,他们分别是关于上传及下载功能单元的相关服务,我们将在UDS诊断入门(四)中进行介绍。
欢迎继续关注。
02存储数据传输功能单元存储数据传输功能单元包含清除诊断信息(0x14)&读取故障码信息(0x19)两个服务,此服务是用来报告服务器故障信息以及清除故障信息所使用的服务,具体介绍请继续向下阅读;2.1 清除诊断信息(0x14)2.1.1 服务介绍清除诊断信息功能是用于客户端向服务器清除一个或多个故障诊断信息的服务;当清除诊断信息服务完成后,服务器应发出肯定响应。
即使没有存储DTC,服务器也应该发送一个肯定的响应。
如果服务器支持内存中的DTC状态信息的多个备份(例如RAM中的一个和EEPROM中的一个备份),服务器应清除读DTC信息状态报告服务所使用的备份。
额外的备份,例如长期记忆中的备份,根据适当的备份策略进行更新(例如在电源锁存阶段)。
客户端的请求信息中应包含一个或者多个具体的故障参数,还可以选择清除全部的故障信息,当客户端请求的是一个或者多个具体的故障信息时,服务器应当读取其具体的内存中存储的故障信息(例如故障码,故障状态,故障快照等),并清除。
当存在故障的备份时,故障备份的存储的相关信息可以不受此服务的影响。
2.1.2 请求数据定义Note:当请求数据中group of DTC的三个字节的内容全部是FF 时,代表清除全部故障信息2.1.3 肯定响应数据定义2.2 读取故障码信息(0x19)2.2.1 服务介绍2.2.1.1 通用介绍该服务允许客户端从任何服务器或车内的一组服务器读取驻留在服务器上的诊断故障代码(DTC)信息的状态。
UDS诊断服务介绍
3
DTCStatusAvailabilityMask
4
ISO15031-6 DTC Format
5
DTCCount[] = [ DTC Count High Byte
6
DTC Count Low Byte ]
负响应格式
Message Usage Data Value[hex]
Message Usage Data Value[hex]
M
50
M
00-FF
Message Usage Data Value[hex]
M
7F
M
10
M
00-FF
12
13
22
7
ECUReset
服务请求格式
Data Byte No.
Parameter Name
1
ECU Reset Request Service ID
Parameter Name
1
Negative Response
2
ECU Reset
Negative Response Trouble Code
3
Sub Function Not Supported
Incorrect Message Length Or Invalid Format
Message Usage Data Value[hex]
01 00 - FF
12
ReadDTCInformation
正响应格式
Report Number of DTC by Status Mask
Data Byte No.
Parameter Name
UDS诊断
UDS诊断测试UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是在汽车电子ECU环境下的一种诊断通信协议,这种通信协议被用在几乎所有由OEM一级供应商所制造的新ECU上面。
这些ECU控制车辆的各种功能,包括电控燃油喷射系统(EFI),发动机控制系统,变速箱,防抱死制动系统(ABS),门锁,制动器等。
在汽车诊断协议诞生之前,修车只能靠师傅的经验,因为汽车零部件不会告诉你它哪里出了问题。
但有了诊断协议之后,一旦零部件出了问题或者出过问题,它们会把故障信息保存在内存里面,维修师傅就可以通过通信总线读取这些故障信息,比如一个ECU经历欠压故障之后,它会将欠压故障代表的DTC(诊断故障码)存储起来,可选择性保存的还有发生故障时的快照信息(比如此时的车速、读到的电压值等)。
这些信息有助于测试工程师和售后技师查找发生故障的原因。
目前大部分试验是测量采集,而不是诊断采集,所以市面上大部分数采都是专注于测量采集这一个功能。
为了满足客户的不同需求,数采设备支持一定的诊断功能也是十分有必要的。
德国IPETRONIK的数采设备方案则在测量采集的同时也支持相应UDS的诊断功能。
利用定制线将车辆ECU与IPElog2RT连接。
占用IPElog2 RT的一个通道,用于UDS的诊断,其他通道可以正常采集车辆其他总线数据,连接模块等,然后通过WIFI或者网线输出到PC 端,也可以通过IPEmotion ME远程实时查看数据,甚至可以通过4G数据卡将数据上传到MQTT服务器方便工程师远程查看数据。
设备连接示意图硬件支持⚫输入通道可以组合最多可选16 CAN FD,6 LIN,2ETH⚫4路可切换高速和低速CAN输入通道⚫快速启动,无消息丢失(NML),CAN/LIN/Flexray总线唤醒⚫cFast存储卡,数据存储高达120 GB⚫集成的4G,WiFi和GPS接收器⚫可通过IPEmotion ME显示⚫CAN FD,LIN,ETH,DIG I/O输入通道完全电气隔离⚫为恶劣环境中的应用开发⚫通过XCP on ETH/A2L格式软件集成软件支持A.在CAN和ETH接口上,可以运行UDS诊断测量。
UDS诊断的一些理解
UDS(ISO14229)统一诊断服务。
其最重要的作用就是用来诊断汽车的故障的。
车上的ECU 很多,如果每个厂商自己定义规范,处理故障会很麻烦,所以统一定义了一整套UDS相关规范,方便维护,4S店用诊断仪就可以判断车上的故障,写数据。
10服务:诊断会话控制01:默认会话胎压要写ID,首先要进入此模式02:编程会话03:扩展会话用bootloader升级时进入此模式复位重启进入boot发送数据格式为:02 10 01回复数据格式为:02 50 01消极响应为:03 7F 10 12/13/22消极响应是有固定定义12是系统不支持13是数据长度错误22是条件不正确11服务:ECU复位01:硬件复位胎压BOOT升级完成后用此复位模式02:开关复位03:软件复位发送数据格式为:02 11 01回复数据格式为:02 51 01消极响应为:03 7F 11 12/13/22消极响应是有固定定义12是系统不支持13是数据长度错误22是条件不正确14服务:清楚诊断信息发送数据格式为:04 14 FF FF FF回复数据格式为:04 54 FF FF FF消极响应为:03 7F 14 12/31/22消极响应是有固定定义12是系统不支持31是请求超出范围22是条件不正确19服务:读取DTC信息01:DTC的个数02:掩码状态04:报告DTC快照信息0A:报告支持的DTC 要通过27诊断发送数据和上面一样,只不过回复不同。
举例22服务:通过表示符读取数据22后加对应DID DID不是公有消极响应同上27服务:安全访问有些数据写入不能随便写,要通过算法进行安全验证,确认是自己人操作,再写。
诊断仪电机控制器ECU1. 请求种子--> 计算种子2. 接收种子<-- 答复种子3. 发送密钥--> 计算密钥对比密钥4. 获取权限 <-- 返回权限切换状态2E服务:写数据28服务:通信控制在对控制器升级的时候降低总线负载,禁止其他ECU发送数据00:使能接收和发送01:使能接收关闭发送02:关闭接收使能发送03:关闭接收和发送31服务:程序例程控制比较通用的包括烧录时的数据完整性检查、擦除内存等等。
UDS诊断入门
UDS诊断入门诊断就是一问一答的方式!正响应报文格式:byte1:response service id= service id +40负相应报文格式:byte1:response service id = 0x7FByte2:spr+sub-function = service idByte3:NRC,错误码Eg:7F 22 13 ;7F代表否定响应,22代表服务类型,13代表请求消息错误像一些常见的否定响应码:0x78 收到请求,响应延迟平时在工作中一些常见的服务类型:1.诊断会话控制服务(DSC) SID=0x101 .请求报文帧格式: 02 10 01 AA AA AA AA AA其中 10 为请求诊断会话控制ID01为诊断会话类型,也就是他的子功能00为保留 01位默认模式 02为编程模式 03为扩展模式(大部分服务在扩展模式下) 2.肯定响应报文帧格式:06 50 01 00 96 17 70 AA其中50为诊断会话控制肯定响应ID01为诊断会话类型(根据报文子功能类型进行改变)3.否定响应报文帧格式:03 7F 10 12 AA AA AA AA12为否定响应码0x12(子功能不支持)0x13(报文长度错误或格式非法)0x22(条件不满足,处于变编程状态)2.电控单元复位(ECUR)SID=0x11该服务可以有三种方式--硬件复位,点火钥匙复位,软件复位1.请求报文*帧格式:02 11 01 AA AA AA AA AA11为电控单元复位SID01为复位类型子功能(01为硬件复位 02为点火位 03为软件复位)2.肯定响应报文帧格式:02 51 01 AA AA AA AA AA3.否定响应报文帧格式:03 7F 11 12 AA AA AA AA12为否定响应码否定响应码12子功能不支持13报文长度错误或格式非法22条件未满足33安全访问拒绝3.安全访问(SA)SID:0x27帧格式:首先发送0x10服务子功能03进入扩展模式例:02 10 03 FF FF 00 00 00ECU返回肯定响应报文例:06 50 03 00 32 01 F4 AA解锁进入第一权限帧格式:02 27 01 FF FF 00 00 00ECU返回肯定响应报文例:06 67 01 00 00 00 00 AA解锁进入第二权限帧格式:06 27 02 03 13 F3 05 08ECU返回肯定响应报文例:06 67 02 AA AA AA AA AA4.通信控制(CC)SID:0x28请求报文帧格式:03 28 00 01 AA AA AA AA其中 00为子功能控制类型00:允许接收和发送01:允许接收禁止发送02:禁止接收允许发送03:禁止接收和发送其中01为通讯类型:01:常规应用报文02:网络管理报文03:常规应用报文和网络管理报文(常用)肯定响应帧格式:02 68 00 AA AA AA AA AA否定响应帧格式:03 7F 28 12 AA AA AA AA12为否定响应码否定响应码:0x12 子功能不支持0x13 报文长度错误或格式非法0x22 条件未满足0X31 请求超出范围5.诊断设备在线 SID:0x3E客户端通过该服务维持和服务器在非默认模式下的链接请求报文帧格式 02 3E 80 AA AA AA AA AA 我们通常都是使用的0X3E 80 02 3E 00 AA AA AA AA AA3E为SID80为是否需要返回肯定响应报文,若是00则需要返回肯定响应报文肯定响应报文02 7E 00 AA AA AA AA AA否定响应报文03 7F 3E 12 AA AA AA AA12为否定响应码否定响应码:12 子功能不支持13 报文长度错误或格式非法6.读取数据 SID:0x22请求报文帧格式:03 22 F1 8C AA AA AA AA(F189/F187)F1 8C为数据标识符可以携带多个数据标识符(F18C为ECU序列号)读取数据肯定响应报文第一帧10 08 62 F1 8C 11 11 11发送流控帧30 00 00 AA AA AA AA AA连续帧21 11 11 AA AA AA AA AA读取数据否定响应03 7F 22 12 AA AA AA AA其中12为否定响应码否定响应码0x13 报文长度错误或格式非法0x22 条件不满足0x31所有DID都非法,DID数量超出限值7.写入数据(WDBI)SID:0X2E写入数据请求报文帧格式:10 08 2E F1 8C XX XX XX(XX为数据)F1 8C为数据的标识符第二帧21 XX XX AA AA AA AA AA肯定响应报文03 6E F1 8C AA AA AA AA否定响应报文03 7F 2E 13 AA AA AA AA13为否定响应码否定响应码0x13 报文长度错误或格式非法0x22 条件不满足0x31非法的DID 非法的DREC0x33 安全访问拒绝0x72 写入失败8.清除诊断信息 SID:0x14帧格式 04 14 FF FF FF AA AA AA将会返回一条否定响应报文例 03 7F 14 78 AA AA AA AA接下来就是肯定响应报文例 01 54 AA AA AA AA AA AA否定响应码0x13 报文长度错误或格式非法0x22 条件未满足:如果服务器内部禁止清除DTC,则返回此否定码0x31 请求的数据内容超出数据范围9.读取DTC信息 SID:0x19请求报文帧格式 03 19 01 FF 55 55 55 55FF为DTC状态码01为子功能子功能定义:01 通过状态码报告DTC数量02 通过状态码读取DTC03 报告DTC快照标识符04 通过DTC报告DTC快照记录06 通过DTC报告DTC扩展数据记录0A 报告支持的DTC10.DTC设置控制 SID=85诊断仪使用控制DTC设置服务停止或恢复ECU内部的诊断故障码设置功能请求帧格式02 85 01 AA AA AA AA AA01为子功能子功能:01: ON/使能 ECU依照正常操作条件恢复诊断故障码的设置功能02:OFF/禁止停止诊断故障码的设置功能否定响应码:12:不支持子功能13:不正确的消息长度或无效的格式22:条件不正确。
UDS诊断学习笔记
UDS诊断学习笔记定义介绍:UDS(Unified Diagnostic Service)诊断的诊断服务。
诊断协议是⾯向整车所有ECU(电控单元)的⼀种诊断通信协议,是诊断服务的规范化标准。
UDS本质上是⼀系列服务的集合,UDS的服务包含了6⼤类,共26种,每种服务都有⾃⼰独⽴的ID,即SID(Service Identifier)通信模式:实际上是与ECU交互的过程,即诊断仪请求(Request)ECU,ECU给出对应响应(Response)。
UDS寻址模式:1.物理寻址,点对点,⼀对⼀,可根据物理地址的不同进⾏访问,但只能访问单个节点。
2.功能寻址,⼴播模式,⼀对多,根据功能的不同进⾏访问,它可以访问多个ECU节点,其SID对于标准帧来说,通常是7DF。
UDS的服务:罗列出常⽤的15种服务,⽀持⼦功能的有10、11、27、28、3E、85、19、31,⼦功能通常是这些服务具有某些已经定义好的功能。
1.$1010服务是Diagnostic Session Control诊断会话控制,⼦功能有01、02、03三种,这三种代表10服务可以进⼊的3种不同的会话模式。
01 Default默认会话,02 Programming编程会话(⽤于解锁bootloader相关的诊断服务,即程序烧录。
),03 Extended扩展会话,ECU上电时,进⼊的是默认会话(Default)。
指令格式:请求:10 SFSF:⼦功能,⽐如01、02、03,编程会话只能通过先进扩展会话之后再进编程会话,当前为编程会话,不能直接发10 03跳转到扩展会话。
肯定相应:50 SF sessionParameterRecord[](4byte)0x40+SID=0x50SF是对应请求的⼦功能,请求是什么⼦功能,他便显⽰什么⼦功能。
会话参数记录有P2Server_max(2byte)和P2*Server_max(2byte),⾼位在前的表⽰⽅式。
UDS诊断服务[专家学习]
7
7
DiagnosticSessionControl
服务请求格式
Data Byte No.
Parameter Name
1
Diagnostic Session Control Request Service ID
Sub Function = [Diagnostic Session Type]
Default Session – Positive Response Required
UDS诊断服务
上海保隆汽车科技股份有限公司版权所有 ©2012
什么是UDS?
UDS -- Unified diagnostic services (统一诊断服务) 俗称14229.
形象的说:就是使用一套仪器,对当前汽车出 现的问题进行分析。而这套仪器与汽车交谈所 使用的语言就是UDS(不是唯一的方法)。
0x22 0x31
0x33
描述
serviceNotSupported 服务器不支持客户端请求的诊断服务
subfuntionNotSupported 服务器不支持客户端请求服务的子功能
incorrectMessageLengthOrInvalidFormat 服务器认为客户端的请求报 文的数据长度(或者格式)不符合标准 conditionsNotCorrect 服务器执行诊断服务的条件不满足
0x7F
描述
invalidKey 服务器认为客户端返回的密钥错误
exceedNumberOfAttempts 服务器认为客户端尝试安全访问(解锁) 的失败次数超标(一般是大于3次) requiredTimeDelayNotExpired 服务器拒绝客户端的安全访问请求,因 为服务器允许接收请求的计时器未到时
UDS诊断服务解读
4
诊断服务
SID
0x10 0x11 0x14 0x19 0x22 0x27 0x28 0x2E 0x31 0x3E
描述
DiagnosticSessionControl ECUReset ClearDiagnosticInformation ReadDTCInformation ReadDataByIdentifier SecurityAccess CommunicationControl service WriteDataByIdentifier RoutineControl TesterPresent
8
DiagnosticSessionControl
正响应格式
Data Byte No. 1 2 Parameter Name Diagnostic Session Control Response Service Id Diagnostic Session Type Message Usage M M Data Value[hex] 50 00-FF
0x85
ControlDTCSetting
5
否定响应(1)
数值 0x11 0x12 0x13 0x22 0x31 0x33 描述 serviceNotSupported 服务器不支持客户端请求的诊断服务 subfuntionNotSupported 服务器不支持客户端请求服务的子功能 incorrectMessageLengthOrInvalidFormat 服务器认为客户端的请求报 文的数据长度(或者格式)不符合标准 conditionsNotCorrect 服务器执行诊断服务的条件不满足 requestOutOfRange 服务器没有客户端请求的数据,此否定响应适用 于支持数据读、写,或者根据数据调整功能的服务器 securityAccessDenied 服务器阻止客户端的受限诊断服务请求,原因 包括: 服务器的测试条件不满足 服务器的安全状态处于锁定状态
UDS - 统一诊断服务详解_入门
•BS:接收方表示发送流控帧之后,发送方被允许连续发送的最大帧数目。特殊情况 下,如果该值为0,则表示发送连续帧没有限制,如果值为8,表示发送方最多能连 续发送8帧CF就会继续收到接收方的流控帧;
23
0x27服务_Security Access (安全访问)
安全访问序列如下图所示,一共4步组成, •诊断仪先发送请求seed的报文(27 01) •ECU响应seed(67 01 xx xx xx xx) •诊断仪根据返回的seed按照约定算法计算key值,并发送给ECU请求验 证(27 02 xx xx xx xx) •ECU收到请求之后,也按照约定的算法对该key进行校验,并给出响应, 若计算一致,则为正响应(67 02),否则为负响应(7F 27 NRC) ECU若校验key一致,则ECU则切换安全状态至对应的解锁状态,此时在该解锁状态下能够支持的服务都应该可以工作。如果ECU 已经处于解锁状态,此时诊断仪再次发送请求seed的报文,ECU应该响应seed为0的正响应。 seed请求的子服务值为奇数,对应的key请求验证的子服务值为该奇数加1,如27 01与27 02为一组安全等级,27 03与27 04为一 组安全等级,27 11与27 12为一组安全等级。不同的安全等级由客户定义功能区分。
10
UDS时间参数
UDS时间参数
传输层时间参数 ##### Addressing Mode(AM) 在发送诊断指令的过程中,存在以下两种寻址方式: •物理寻址:即该诊断服务请求只针对符合请求中物理地址的ECU,其他ECU节点 不做任何接收处理; •功能寻址:即该诊断物理请求针对当前网络下所有的ECU节点,所有的ECU均会 接收处理该诊断请求; 一般而言,一个ECU节点只会存在1对物理寻址,1对功能寻址;每一对寻址方式 根据客户的需求来自行定义。
UDS最全内容总结
目录前言 (2)UDS 的7种服务及肯定响应和否定响应的形式 (3)$10诊断会话 (5)$3E待机握手 (6)$27安全访问 (7)$22读数据 (8)$2E写数据 (8)$19 读DTC (8)$14清除DTC (10)统一诊断服务(Unified diagnostic services ,UDS) (一) (10)Diagnostic request的格式: (10)统一诊断服务(Unified diagnostic services ,UDS) (二) (12)Diagnostic Session Control (0x10) (12)诊断response的格式:Diagnostic Session Control (13)ECU Reset 诊断request的格式 (13)Security Access (0x27) (13)统一诊断服务(Unified diagnostic services ,UDS) (三) (14)Tester Present (0x3E) (15)Control DTC Setting (0x85) (16)Response On Event (0x86) (16)Link Control (0x87) (16)统一诊断服务(Unified diagnostic services ,UDS) (四) (16)Read Data By Identifier (0x22) (16)0x23服务的请求格式0x23 (17)统一诊断服务(Unified diagnostic services ,UDS) (五) (17)0x14:Clear Diagnostic Information (17)0x19:Read DTC Information (18)统一诊断服务(Unified diagnostic services ,UDS) (六) (19)Input Output Control By Identifier (0x2F) (19)Routine Control (0x31) (20)统一诊断服务(Unified diagnostic services ,UDS) (七) (21)Request Download (0x34): (21)Transfer Data(0x36): (22)Request Transfer Exit(0x37): (22)基于CAN总线实现的UDS诊断(DoCAN) (23)前言UDS协议即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ECU发什么指令,读数据流又是发什么指令。