UDS基础

白话学习又一篇。感谢Vector 官方自制 UDS Protocol. 【官方自制】UDS Protocol_哔哩哔哩_bilibili

1. 什么是UDS

UDS是unified diagnostic service的缩写。

标准是ISO 14229 Road vehicles-Unified diagnostic Services (UDS),定义了服务的用法、服务的用法和标准化的数据,还有一些OEM定义的数据。

2. UDS在OSI的适用标准

随着控制器数量的增加,总线通讯协议也有发展。ISO 14229-2013还增加了UDS在各个总线上应用的定义, 比如CAN,LIN, K-linel, Ethernet.

UDS在OSI模型上的标准

3. 服务和请求的格式

请求是tester发给ECU端的,是一个SID(service identifier),就是所说的XX服务,根据具体的内容,后面加数据;

肯定响应,postive respond由SID+40,后面加数据。

否定响应,negative respond由7F+SID+NRC(1 byte)

4. 一些名词学习

4.1 subfunction和data identifier (DID)

UDS服务支持subfunction的请求和响应。

请求格式:SID+SF+数据

响应格式:SID+40+SF+数据;

有的UDS服务不支持subfunction, 支持DID (Data identifier)

请求格式:SID+DID+数据

响应格式:SID+40+DID+数据;

有两个服务支持这两种feature:

31-例程控制服务,2F - IO控制服务;

在subfunction的一个字节中,最后一位,第七位,是肯定响应抑制位,suppressive positive response message indication bit SPRMIB

0: positive answer- no suppressed

1:   positive answer- suppressed

4.2 否定响应NRC

 不同的NRC代表了不同原因, 比如服务不支持, 或者subfunction不支持,请求超出范围等。

4.3 两个时间格式:P2server, P2server*

当tester给ECU发送请求时,ECU要在P2server时间内给出响应,如果由于在处理别的任务,不能给出响应,现在P2server内给出pending的响应,然后在P2server*时间内给出响应。

5. UDS服务

UDS包含26个服务 ,下面重点介绍6个。

 6.1 10服务 诊断会话控制

与10服务有关的三个NRC:

7F:serviceNotSupportedInActiveSession 在当前会话下不支持

7E:subFunctionNotSupportedInActiveSession 在当前子功能不支持

31: requestOutOfRange

Session 会话分哪几个?01 Default sesssion, 02 programming session, 03 Extended Session

10服务做的Session state handling:

Power on就进入default session, 1002或者1003可以进入非默认会话,1001跳回到默认会话,在非默认会话状态下,S3 timer 超时,也会回到默认会话,如果要一直维持在非默认会话状态下,tester要一直发送3E

ECU在一般状态处于locked状态,比如2E write, 2F I/O control, reprogramming services,这些被保护的服务,ECU在解锁状态才能执行。

6.2 27解锁服务

如果要进行被保护的服务,ECU要先解锁,进行27解锁服务:通过tester发送seed,计算key, 进行比对

  

安全状态可以有好几个等级;要跳回lock状态有特定的方法,比如上下电等。

6.3 22服务:通过DID读取数据

请求格式:22+DID(2 byte)

响应格式:62+DID+data

14229-1-2013 附录C有推荐使用的DID

6.4 2E服务:通过DID写入数据

请求格式:2E+DID+data

响应格式:6E+DID

下面几个是和故障存储有关的服务 。

记录故障的代码:diagnostic trouble code DTC, 可以反映出故障发生的位置和原因,还有和法律有关的故障,比如排放相关,未来,还有安全相关的故障。

很多标准都有对于DTC的定义,

UDS:对DTC有3个字节的定义

ISO 15031-6 root DTC (2 byte) + FTB (1 byte)

WWH-OBD in ISO 27145-2: root DTC (2 byte) + FTB (1 byte)

OBD II: DTC (2 byte)

J1939-73: SPN+FMI

6.5 19服务:读取DTC

19服务有28个subfunction, 下面介绍4个:

1902: 通过DTC的状态码读取DTC

1904: 读取DTC的快照数据 ,一些环境数据,比如发动机转速、水温等(14229里是snapshot, 在Autosar里是冻结帧)

1906: 获取DTC存储时的扩展数据,一些老化计数器,等

190A:获取ECU全部的DTC,即使没有产生,也都被读取

根据DTC的状态码读取DTC

请求格式:19+02+SM(statusMask)

回复格式:59+02+SAM(statusAvailabilityMask)(DTC+status)

读取ECU支持的所有的DTC

请求格式:19+0A

回复格式:59+0A+SAM+DTC+status

6.6 14服务:清除DTC

请求格式:14+三个字节,如果是FFFFFF,是全部DTC;也可以按组清除DTC

回复格式:54

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值