UDS协议$19服务

本文详细介绍了UDS协议中的0x19服务,即读取DTC信息服务,包括01、02、04、06、0A等常用子服务的功能。重点讲解了01和02子服务,01用于读取符合掩码条件的DTC数量和列表,而02则提供DTC列表及其状态。通过CAN通信举例,解析了0x1902服务的请求与响应格式,帮助理解DTC信息的读取过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UDS协议中的0x19(ReadDTCInformation)服务是读取DTC信息服务,DTC是Diagnostic Trouble Code的简称,意思是诊断故障代码,DTC一般包含三字节数据。

$19服务包含28个子服务(Sub-Function),常用的子服务有01、02、04、06、0A子服务。

子服务功能简介:

01:读取符合掩码条件的DTC数量,这里的掩码由客户端定义,跟在子服务序号后面,掩码为01表示读取当前故障,08表示读取历史故障,09表示读取全部故障。

02:读取符合掩码条件的DTC列表及其状态,这里的掩码同01子服务定义相同,跟在子服务序号后面。

04:读取DTC快照信息,即与DTC关联的已存储数据记录。

06:读取扩展信息。

0A:读取ECU支持的所有DTC列表及其状态,这个服务不需要掩码。

下面以CAN通信为基础讲解$19 02子服务:

首先,外部诊断仪发送服务请求,CAN报文可以为03 19 02 09 00 00 00 00,CAN报文包含八个字节的数据,其中第一字节03中的0表示此帧为单帧,3表示后面三个字节数据有效,19是ReadDTC服务,02表示子服务,09为掩码。

在积极响应的情况下,客户端可能会收到10 xx 59 02 xx xxxx...,这里的可能是因为DTC信息量会影响CAN收到的是单帧还是多帧,如果是多帧,那么首帧开头的第一个数字1表示首帧,接下来的三个数字表示客户端接收的字节数,例如10 63即表示后续接收0*16*16+6*16+3*1=99字节数据,注意这里是16进制,后续的59表示回复服务,02对应请求服务报文中的02子服务序号,02后的xx表示ECU支持的置1位,若为FF即表示支持全部位置1,报文中的xxxx部分即为DTC信息。

一个DTC包含三字节数据与一字节的状态,这个状态字节的每一位都定义了DTC的不同状态,参考:DTC状态位解析

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值