UDS诊断协议概念
网友:ud
文章列表
2024-03-21 22:23:02

文章目录
- UDS诊断协议
- 会话
- 寻址
- 网络层
-
- 应用层
-
- 1.诊断会话控制0x10
- 2.电控单元复位0x11
- 3.安全访问服务0x27
- 4.通讯控制服务0x28
- 5.待机握手0x3E
- 6.通过DID读取数据服务0x22
- 通过DID写入数据0x2E
- 清除诊断信息服务0x14
- 读取DCT服务0x19
- 输入输出控制服务0x2F
- 例行程序控制服务0x31
- 上位机
UDS诊断协议
- 通用的汽车诊断协议, 定义了一组诊断服务, 用于对车辆的电子控制单元ECU进行诊断和调试. UDS协议已被ISO 14229标准化, 并广泛应用于现代汽车的诊断系统
- 提供许多诊断服务
- 诊断会话控制: 启动,结束诊断会话, 设置,读取诊断会话模式
- ECU识别: 识别, 验证ECU标识与版本信息
- 读取数据: 读取ECU内部存储器的数据, 包括故障码, 实时数据, 快照数据等
- 清除故障码: 清除ECU存储的故障码
- 控制ECU: 控制ECU的操作, 如重启, 编程, 读取, 写入编程数据等
- 安全访问机制: 对诊断服务的安全控制, 安全访问权限, 数据加密, 消息认证等
- 以CAN总线为物理层传输媒介, 以ISO 15765-2为传输协议, 以ISO 14229-3为应用层协议
- ISO-15765: 网络层
- ISO-14229:应用层
会话
- 会话即一组诊断服务的集合, 用以与ECU交互
- 扩展会话
- 提供对ECU的高级诊断功能
- 可通过特殊的诊断服务/诊断会话模式进入, 默认会话->扩展会话
- 编程会话
- 提供对ECU的编程和配置, 如读取和写入编程数据, 编程ECU等, 常用于车辆制造商的维修和故障排除
- 需要安全访问控制机制进行认证和授权, 仅授权用户可进入
- 默认会话
- 基本会话类型, 提供基本诊断功能, 如读取故障码, 清除故障码, 读取实时数据等, 可在任何时间访问
寻址
- 物理寻址
- 使用实际的硬件地址来引用内存/其他资源
- 通过ECU的物理地址进行诊断服务的寻址, 可访问所有ECU存储器区域, 包括只读存储器
- 先与ECU建立物理连接, 如通过OBD-II接口连接汽车的诊断接口, 通过ECU的物理地址直接访问内部存储器, 执行读取数据, 清除故障码等
- 功能寻址
- 使用指令/操作码来访问内存/其他资源
- 通过ECU的功能标识符进行诊断服务的寻址, 不能访问只读存储器
- 无需物理连接, 通过发送包含ECU功能的请求帧来识别/访问ECU的诊断服务
- 功能标识符是一种标准化标识符, 用于唯一识别ECU的诊断服务和特性
网络层
- 把数据转换成能适应CAN总线规范的单一数据帧, 若报文长度超过CAN数据帧长度, 需要拆分, 每次最多传输4095个字节
协议数据单元
- 地址信息N_AL
- 协议控制信息N_PCL
- 单帧SF: 一帧就能处理完服务
- 1字节N_PCI: 标志符0, 数据长度
- 03 xx xx xx
- 第一帧(首帧)FF: 有多个传输单元时, 先发的首帧
- 1字节: 标识符1, 数据长度高四位
- 2字节: 数据长度低八位
- 10 14 xx xx xx xx xx xx
- 流控帧FC: 接到首帧后, 接收方回复一帧流控帧
- 1字节: 标识符3, 状态(0继续发, 1等待, 2溢出)
- 2字节: 允许一次连续发送CF数量
- 3字节: 间隔时间
- 30 02 14
- 连续帧CF: 发送方发送首帧FF, 接到接收方的流控帧FC后, 数据报文
- 1字节: 标识符2, 第几个CF
- 23 xx xx xx xx xx xx xx
定时参数
- N_As: 发送方数据帧经链路层发送的时间
- N_Ar: 接收方数据帧经链路层发送的时间
- N_Bs: 发送方接收流控帧的等待时间
- N_Br: 接收方发送流控帧间隔时间
- N_Cs: 两个连续帧的最短间隔时间
- N_Cr: 接收方接收连续帧的等待时间
应用层
- 26种服务, 6个单元
- 诊断和通信管理功能单元 x10
- 0x10 诊断会话控制
- 0x11 电控单元复位
- 0x27 安全访问
- 0x28 通讯控制
- 0x3E 待机握手
- 0x83 访问时间参数
- 0x84 安全数据传输
- 0x85 诊断故障码设置控制
- 0x86 事件响应
- 0x87 链路控制
- 数据传输功能单元 x7
- 0x22 通过DID读取数据
- 0x23 通过地址读取数据
- 0x24 DID读取比例数据
- 0x2A 通过DID读取数据
- 0x2C 动态定义标识符
- 0x2E 通过DID写数据
- 0x3D 通过地址写内存
- 存储数据传输功能单元 x2
- 输入输出控制单元 x1
- 例行程序功能单元 x1
- 上传下载功能单元
- 0x34 请求下载
- 0x35 请求上传
- 0x36 数据传输
- 0x37 请求退出传输
- 0x38 请求传输文件
1.诊断会话控制0x10
- 请求ECU从活动会话过渡到其他会话, 请求不同诊断服务需在不同会话模式下进行
- 请求消息: 请求SID+子功能
- 0x01 默认会话: ECU上电后默认状态
- 0x02 编程会话: 可进行软件刷写的系列诊断服务
- 0x03 外部扩展会话: 可执行诊断服务
- 肯定消息: 会话诊断响应SID(请求SID+0x40)+子功能+会话参数记录
- 否定消息: 否定响应SID(0x7f)+诊断会话SID+否定响应码
- 0x10 支持的否定响应码
- 0x12 不支持请求服务的子功能
- 0x13 请求报文的数据长度(或者格式)不符合标准
- 0x22 条件不满足
2.电控单元复位0x11
- 以此诊断指令命令ECU执行自复位
- 请求消息: 请求SID+子功能
- 0x01 硬复位, ECU先完全掉电再上电过程
- 0x02 钥匙电复位, 下钥匙电再重新上电, RAM重置
- 0x03 软复位, 程序从头开始执行, RAM不重置
- 0x04 使能快速休眠, 开启休眠功能, 关闭钥匙电也不关闭而是休眠
- 0x05 关闭快速休眠, 返回常规模式
- 肯定消息: 肯定响应SID(0x11+0x40)+子功能
- 否定消息: 否定响应SID(0x7f)+请求SID(0x11)+否定响应码
3.安全访问服务0x27
- 给其他服务加一个访问权限, 常用于上传下载诊断服务
- 请求消息:
- 请求SID+安全访问种子子功能
- 请求SID+安全访问密钥子功能
- 肯定消息:
- 肯定响应SID+安全访问种子功能+发送种子
- 肯定响应SID+安全访问密钥子
4.通讯控制服务0x28
- 客户端向服务端请求打开/关闭某类/多类报文信息的发送接收功能
- 请求响应消息定义: 请求SID+请求子功能
- 请求消息子功能:
- 0x00 启用Rx, Tx
- 0x01 启用Rx 禁用Tx
- 0x02 禁用Rx 启用Tx
- 0x03 禁用Rx, Tx
- 0x04 启用Rx(增强的地址信息), 禁用Tx
- 0x05 启用Rx, Tx(增强的寻址信息)
- 肯定消息: 肯定响应SID+请求消息子功能
- 否定消息: 否定响应SID(0x7f)+请求SID+否定响应NRC
5.待机握手0x3E
- 客户端确认无服务端是否在线的操作, 利用该服务可实现客户端与服务端一次握手
- 请求消息: 请求消息SID+请求消息子功能
- 肯定响应: 肯定响应SID+请求消息子功能
- 否定响应: 否定响应SID(0x7f)+请求SID+否定响应NRC
6.通过DID读取数据服务0x22
- Client向Server通过DID的方式读取相关数据(版本,VIN码等)
- 请求消息: 请求消息SID0x22+要读取的DID
- 肯定响应: 肯定响应SID(0x22+0x40)+请求DID+响应数据
- 否定响应: 否定响应SID0x7f+请求服务SID+否定响应码
通过DID写入数据0x2E
- 客户端向服务端请求写入一个DID对应标识的数据记录值
- 请求消息:请求消息SID (0x2E) + DID +数据记录
- 肯定响应:肯定响应SID(0x2E+0x40) + DID
- 否定响应:否定响应SID(0x7F) + 请求服务SID + 否定响应NRC
清除诊断信息服务0x14
- 客户端可以利用此服务来清除一个或多个服务端内存中的诊断信息,该服务可设置支持功能寻址,可控制单个服务端或多个服务端诊断信息的清除
- 请求消息:请求消息SID + 请求消息数据参数
- 肯定响应:肯定响应码(0x14+0x40)
- 否定响应:否定响应码(0x7F)+请求SID+否定响应NRC
读取DCT服务0x19
- 允许外部诊断仪(Client)通过该服务读取存储在ECU芯片内的故障码(DTC)状态信息
- 请求响应:请求响应SID + 请求消息子功能 + 请求消息相关参数
- 肯定响应:肯定响应SID + 请求消息子功能 + 响应数据
- 否定响应:否定响应SID(0x7F)+请求消息SID + 否定响应码NRC
输入输出控制服务0x2F
- 客户端使用输入输出控制服务请求消息作为输入信号,为内部服务器某些简单功能提供输入替代值,或强制控制外部执行器状态,该服务用于相对简单(例如,静态)的输入替代/输出控制。这里的输入输出都是对于服务器而言的,输入信号指输入到服务器的信号(譬如:CAN信号、 I2C信号等);而输出信号则是服务器向外部执行器发出的信号(CAN信号、I2C信号等)
- 请求响应:请求消息SID + 请求DID + 请求数据
- 肯定响应:肯定响应SID(0x2F+0x40) + 请求DID + 请求参数
- 否定响应:否定响应SID(0x7F)+ 请求消息SID + 否定响应码NRC
例行程序控制服务0x31
- 客户端利用诊断仪向ECU发送诊断命令来开始或停止一段程序的执行,还可以请求例程执行的结果。
- 请求响应:请求响应SID + 请求消息子功能 + 请求例程标识符
- 肯定响应:肯定响应SID + 请求消息子功能 + 例程标识符
- 否定响应:否定响应SID(0x7F)+ 请求消息SID + 否定响应码NRC
上位机