AUTOSAR--UDS诊断报文


前言:重点学习ISO 15765-2和ISO 14229-1的协议内容,之后可以将Git上的开源UDS协议栈移植到你熟悉的嵌入式平台上,进行数据收发;或使用CAN盒与支持UDS诊断的设备进行数据收发,对UDS有一个大致的认识。


一、UDS介绍

UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是ISO 15765 和ISO 14229 定义的一种汽车通用诊断协议。可在不同的汽车总线(例如CAN, LIN, Flexray, Ethernet 和 K-line)上实现。UDS协议的应用层定义是ISO 14229-1

1.1 UDS数据交互简介

  • UDS诊断有6大类(26种),每种都有独立的诊断SID。
  • 肯定响应:回复[SID+0x40],如请求10,响应50;请求22,响应62(SID在首字节)
  • 否定响应:回复7F+SID+NRC(前3字节)

1.2 UDS的7种常用服务

  • $10 Diagnostic Session Control(诊断会话),
  • $14 Clear Diagnostic Information(清除诊断信息),
  • $19 Read DTC Information,
  • $22 Read Data By Identifier(通过ID读数据),
  • $27 Security Access(安全访问),
  • $2E Write Data By Identifier(通过ID写数据),
  • $3E Tester Present(待机握手)。
    (小于0x10的服务是OBD协议中)
    UDS的服务SID

二、UDS 26种服务

2.1 $10诊断会话控制

因为权限问题将$10诊断分了三个模式

  • 1)Default默认会话
    默认会话权限最小,可操作的服务少

  • 2) Extended扩展会话
    扩展模式通常用于解锁高权限诊断服务,例如写入数据/参数、读写诊断码

  • 3) Programming编程会话
    编程模式用于解锁bootloader相关的诊断服务,即程序烧录。(不具备扩展模式的某些权限)

2.1.2 上电后的情况

ECU上电时,进入的是默认会话(Default)
如果您进入了一个非默认会话的状态,一个定时器会运转,如果一段时间内没有请求,那么到时间后,诊断退回到默认会话01(最低权限)。当然,我们有一个$3E的服务,可以使诊断保持在非默认的状态

2.1.3 四种报文类型

请求命令有4种构成方式:(和下面的不同,没看明白)

  • SID,
  • SID+SF(Sub-function),
  • SID+DID(Data Identifier)(读写用),
  • SID+SF+DID

NRC:Negative Response Code(否定响应码)。如果ECU拒绝了一个请求,它会回应一个NRC。不同的NRC有不同的含义。
NRC码

实例:以CAN总线网络举例

  • 八个数据字节,第一字节被网络层占用。

请求(Request):
02 10 02 xx xx xx xx xx

02中的0代表网络层单帧SF,2代表 数据域有2个字节;10是SID,02是子功能。

肯定响应:
02 50 02 xx xx xx xx xx

02同上,10+40表示对SID的肯定回复,02是子功能。

否定响应:
03 7F 10 22 xx xx xx xx;

03同上,7F表示否定响应,10是SID,22是NRC。

2.2 $3E待机握手

实例

02 3E 80 00 00 00 00 00,
发送一个3E服务的报文,保持非默认会话状态。80表示无需回复。

2.3 $27安全访问


未完待续
  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值