【UDS诊断】10服务 DID(22服务) DTC(19服务)

只整理了自己理解和使用到的功能,自用!!!

1、概述

(1)诊断和通信管理类

0x10诊断会话控制:客户端控制目标ECU的诊断会话状态

0x27安全访问:客户端请求解锁受保护的ECU

(2)数据传输类

0x22通过DID读取数据:客户端请求读取由提供的DID标识的记录的当前值

0x2E通过DID写数据:客户端请求写入由提供的DID指定的记录数据

(3)存储数据传输类

0x14清除诊断信息:允许客户端从目标ECU清楚诊断信息(包括DTC、捕获的数据等)

0x19通过DTC读取故障码信息:允许客户端从目标ECU请求诊断信息(包括DTC、捕获的数据等)

2、诊断请求及响应

结合:《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)_obdonuds-CSDN博客

(1)诊断请求:

诊断请求指向车辆发送的请求信息,用于请求执行某个服务。诊断请求消息由三个部分组成:SID,子功能和实际数据

        -SID用于标识要执行的服务

        -子功能(sub-function)指这个服务还能更进一步的划分成具有启动/暂停的子功能。

诊断请求包格式:1Byte 的SID+1Byte的sub-function(1bit SPR+7bit sub-function)+不定长的实际数据

SID  SPRsub-function实际数据

        note:            

        -  sub-function是可选的,如果用不到该功能,可以没有该字节

        -SPR为肯定相应抑制位:1)SPR=1时,抑制肯定响应,即ECU不给出肯定响应;2)SPR=0时,需要ECU给出肯定响应(若某服务没有子功能字节,默认发肯定响应)

(2)诊断响应

诊断响应指向车辆发送服务请求后,如果执行成功,则返回的响应消息称为肯定响应,反之为否定响应。

肯定响应格式包:1Byte 的(SID+0x40)+1Byte的sub-function(1bit SPR+7bit sub-function)+不定长的其他数据

SID+0x40  SPRsub-function实际数据

  否定响应格式包:1Byte 的固定值0X7F+1Byte的SID+1Byte的NRC

固定值:0X7FSIDNRC

         note: 

        NRC为否定响应码,NRC的优先级从高到低排列:(参考这个:一文搞懂UDS的各种NRC – CN知EV (cnzev.com)

        NRC 0x11 > 0x7F > 0x13 > 0x12 > 0x7E > 0x33 > 0x24 > 0x31 > 0x22 > 0x78

3、实例理解

(1)0x10诊断会话控制

例:发送:10 01
回复: 50 01 00 28 01 90
计算得出:P2=HEX(00 28)=DEC(40)
         P2*=HEX(01 09)=DEC(400)
  这里的P2和P2*是时间参数

(2)0x27安全访问

例:发送:27
   回复:通过安全访问

(3)0x22通过DID读取数据,0x2E通过DID写数据

例:
发送:2E F1 90 数据  #写入数据
回复:6E F1 90
发送:22 F1 90    #读数据
回复:62 F1 90 数据

(4)0x19通过DTC读取故障码信息

结合:

【UDS诊断】——0x19 02_uds 19 02-CSDN博客

The status of DTC各bit理解_诊断故障bit位含义-CSDN博客

关于 DTC的各bit的理解:

bit0置一:表示该DTC此时发生了故障
bit0置零:开启新的操作周期 / test pass / ClearDTC

bit1置一:在当前的操作周期内,该DTC发生过故障
bit1置零:开启新的操作周期 / ClearDTC
当bit1置一,bit0置0时,表示在当前操作周期里,该DTC发生过故障,但是此时未发生故障

bit2置一:在上一个操作周期或当前操作周期,发生过故障。
bit2清零:在上一个操作周期和当前操作周期均未发生故障 / ClearDTC

bit3置一:满足confirmed条件,此时该DTC已被存储至memory中
bit3清零:当操作周期次数已满足老化阈值 / ClearDTC

bit4置一:自从清DTC之后还没有完成过针对该DTC的测试
bit4清零:自从清DTC之后已经完成过针对该DTC的测试

bit5 置一:自上次清除诊断信息以来,DTC 测试至少返回了一次失败的结果
bit5清零:表示测试尚未运行 / DTC测试已运行并通过

bit6置一:指示DTC测试在当前操作周期内尚未运行完毕
bit6清零:测试运行并且通过或失败
在操作周期内,若此DTC未做任何set操作,此bit为1,若此时做set操作,不管是fail还是pass,此bit均会清零。

bit7置一:ECU请求激活警告指示
bit7清零:ECU不请求激活警告指示

例:若810001:低压故障  810002:通讯故障

发送:19 02 09
回复:59 02 FF 81 00 01 2C 81 00 02 2F

2C :0010 1100
bite 2(testFailed)为1,bite3(confirmedDTC)为1——历史故障(false)
2F:0010 1111
bite 1(testFailed)为1,bite3(confirmedDTC)为1——当前故障(ture)

(5)0x14清除诊断信息

例:
发送清楚故障信息:14 FF FF FF
回复:54   #肯定响应

(6)否定响应

例:
发送:10 05
回复:7F 10 12   #7F:否定响应固定值;10:SID; 12:NRC,表示不支持子功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值