UDS诊断规范笔记

工作笔记

此笔记使用LIN协议

1.传输层PDU

1.1.LIN传输层支持的PDU格式

1.2.PCI

1.3.SID与RSID

  • SID(Service Identifier)表示了从机节点应完成的服务请求。
  • RSID(Response Service Identifier)表示从机节点应答的内容。如果是肯定的响应(Positive Response),首字节回复[SID+0x40],举例子就是请求0x10,响应0x50;请求0x22,响应0x62。如果是否定的响应(Negative Response),首字节回复0x7F,第二字节回复刚才询问的SID。比如Tester请求0x10服务,我想进入编程模式,ECU给出否定响应,首字节0x7F,第二字节回复0x10,代表我否定你的0x10服务请求,第三字节是NRC(否定响应码),代表我否定你的依据。

2.否定响应码NRC

2.1.举例

  • 通用错误 0x10
  • 服务SID不支持 0x11
  • 服务的子服务不支持 0x12
  • 数据长度错误 0x13
  • 服务在当前会话下不支持 0x7F

3.会话模式

  • 默认会话 01
  • 编程会话 02
  • 扩展会话 03

不同会话模式下支持的服务不同,DID不同

4.服务例子

4.1.诊断会话控制$10

上电默认会话模式0x01

数据第一个字节代表切换不同的会话模式

  • 默认会话 01
  • 编程会话 02
  • 扩展会话 03

4.1.1.肯定响应

标识符+诊断会话类型

4.1.2.否定响应

错误码

  • 12 子功能不支持
  • 13 长度错误
  • 22 条件不满足

4.2.电控单元复位$11

该服务请求控制器依照 ECU 复位服务请求报文中定义的复位类型参数执行一次有效的复位。ECU肯定响应报文要在控制器执行复位操作之前发送(如果要求)。一次成功复位后,控制器将激活默认会话模式。

  • 01 硬复位

4.1.1.肯定响应

1
NAD PCI RSID(SID+0x40=0x51) 复位类型

4.1.2.否定响应

错误码

  • 12 子功能不支持
  • 13 长度错误
  • 22 条件不满足

4.3.清除诊断信息$14

清除DTC诊断信息

4.3.1.清除诊断信息请求

故障码0xFF 0xFF 0xFF清除所有故障码

数据字节 参数名
1 SID
2 故障码高字节
3 故障码中间字节
4 故障码低字节

4.3.1.肯定响应

1
NAD PCI RSID

4.3.2.否定响应

  • 13长度信息错误
  • 22条件不满足
  • 31请求超出范围,类似故障码不支持

4.4.通过标识符读数据$22

4.4.1.请求信息

1
SID 数据标识符字节1 数据标识符字节2

4.4.2.肯定响应

1
RSID 数据标识符字节1 数据标识符字节2  数据..........

4.4.3.否定响应

  • 13长度错误或者格式不可用
  • 22条件不满足
  • 31请求超出范围

4.5.通讯服务$28

4.5.1.请求信息

1
2
3
4
5
SID 控制类型 通讯类型

控制类型
00 使能通信
03 关闭通信

4.5.2.肯定响应

1
RSID 控制类型

4.5.3.否定响应

1
2
3
4
5
12 子功能不支持
13 长度错误
22 条件不满足
31 请求超出范围
7F 当前会话不支持该服务

4.6.安全访问$27

4.6.1.请求信息

1
2
3
4
5
SID 访问类型

访问类型
03 请求种子 扩展会话
11 请求种子 刷新会话

4.6.2.肯定响应

1
RSID 访问类型 种子

4.6.3.否定响应

1
2
3
4
5
6
12 子功能不支持
13 长度错误
22 条件不满足
37 延时没有完毕
7F 当前会话不支持该服务
7E 当前会话不支持子功能

4.7.通过标识符写数据$2E

4.7.1.请求信息

1
SID 数据标识符字节#1 数据标识符字节#2 数据........

4.7.2.肯定响应

1
RSID 数据标识符字节#1 数据标识符字节#2

4.7.3.否定响应

1
2
3
4
5
6
13 信息的长度错误
22 条件不满足
31 不支持该标识符或者该标识符制度,或者标识符后的数据不可用
33 安全访问拒绝
72 编程失败
7F 当前会话不支持该服务

4.8.例行程序控制$31

4.8.1.请求信息

1
2
3
4
5
SID 子功能 例行程序标识符#1 例行程序标识符#2 可选参数........

子功能
01 开始例行程序
03 请求例行程序结果

4.8.2.肯定响应

1
2
3
4
5
6
7
8
RSID 子功能  例行程序标识符#1 例行程序标识符#2 例行程序状态........

例行程序状态
01 例行程序初始化成功
02 例行程序完成
03 例行程序正在执行
04 例行程序停止
05 例行程序失败或者没有运行

4.8.3.否定响应

1
2
3
4
5
6
7
8
12 子功能不支持
13 长度不正确
22 条件不满足
24 请求顺序错误
31 请求超出范围
33 安全访问拒绝
72 编程失败
7F 当前会话不支持该服务

4.9.请求下载$34

4.10.数据传输$36

4.11.请求传输退出$37

4.12.诊断设备在线$3E

4.12.1.请求信息

周期性发送,用于设备保持非默认会话模式

1
SID 00

4.12.2.肯定响应

1
7E 00

4.12.3.否定响应

1
2
12 子功能不支持
13 信息长度错误

4.13.诊断故障码设置控制$85

4.13.1.请求信息

4.13.2.肯定响应

1
2
01 开启
02 关闭

4.13.3.否定响应

1
2
3
4
12 子功能不支持
13 信息长度错误
22 条件不正确
7F 当前模式不支持此服务

5.UDS通讯类型(功能寻址,物理寻址)

参考文章–>

物理寻址指定发送特定诊断请求Request,等待指定ECU给与响应。

功能寻址可以广播诊断请求Request,同时等待总线上的ECU给与响应。

6.安全等级控制

参考文章