UDS诊断ISO-14229分析总结

UDS

  • UDS基本概念
    • OSI模型
    • 诊断交互方式
    • 诊断NRC
  • 常用诊断服务
    • 诊断会话控制
    • ECU重启
    • 安全访问
    • 通讯控制
    • 诊断仪保持连接
    • 控制DTC设置
    • 通过标志读数据
    • 通过地址读内存
    • 通过标志写数据
    • 通过地址写内存
    • 清除诊断信息
    • 读取诊断信息
    • 通过标志输入输出控制
    • 例程控制
    • 请求下载
    • 传输数据
    • 请求退出下载

UDS基本概念

OSI模型

UDS(Unified Diagnostic Services,统一诊断服务)是汽车电子设备中电子控制单元(ECU)环境中的诊断通信协议,在ISO-14229中规定。
ISO-14229在OSI七层模型中的位置如下图:
UDS诊断ISO-14229分析总结_第1张图片
UDS诊断ISO-14229分析总结_第2张图片

诊断交互方式

诊断是以服务为基础的两方交互数据和命令的过程,一方是Request,另一方是Response,下面是Request和Response的基本格式:
Request基本格式有两种:
SID + Parameter
SID + SubFunction + Parameter

Response基本格式有两种类型:
Positive Response(Request被正确的执行):
(SID+0x40) + Parameter
(SID+0x40) + SubFunction + Parameter

Negative Response(Request执行错误或者不能在规定时间内完成):
0x7F + SID + NRC

Physical Addressing:物理寻址,诊断仪与单独ECU进行诊断交互。
Functional Addressing:功能寻址,诊断仪与总线上所有ECU进行诊断交互,即广播模式。

SID:Service Identity
NRC:Negative Response Code
Note1:功能寻址下在Request中SubFunction的最高位bit7若置0x01,正响应会被抑制,即不回复正响应,负响应正常回复。
Note2:功能寻址下NRC=SNS (serviceNotSupported), NRC=SNSIAS (serviceNotSupportedIn-
ActiveSession), NRC=SFNS (sub-functionNotSupported), NRC=SFNSIAS (sub-functionNotSupportedIn-
ActiveSession) or NRC=ROOR (requestOutOfRange),负响应会被抑制,即不回复这些负响应,正响应正常回复。

诊断NRC

诊断常用NRC如下:

Byte value NRC definition Mnemonic
0x10 generalReject GR
0x11 serviceNotSupported SNS
0x12 subFunctionNotSupported SFNS
0x13 incorrectMessageLengthOrInvalidFormat IMLOIF
0x22 conditionsNotCorrect CNC
0x24 requestSequenceError RSE
0x31 requestOutOfRange ROOR
0x33 securityAccessDenied SAD
0x35 invalidKey IK
0x36 exceedNumberOfAttempts ENOA
0x37 requiredTimeDelayNotExpired RTDNE
0x72 generalProgrammingFailure GPF
0x78 requestCorrectlyReceived-ResponsePending RCRRP
0x7E subFunctionNotSupportedInActiveSession SFNSIAS
0x7F serviceNotSupportedInActiveSession SNSIAS

常用诊断服务

诊断会话控制

DiagnosticSessionControl(0x10)
诊断会话控制服务用于在电控单元所支持的诊断会话中转换当前的会话。一个诊断会话使能电控单元的一个特定诊断服务集以及相关诊断功能。某些诊断服务在特定的会话下会限制使用。
诊断功能上电后处于默认会话,当跳转到其他会话时,会启动S3计时器,计时器超时会自动跳转回默认会话,S3计时期间任何服务请求会更新S3计时器重新计时。
UDS诊断ISO-14229分析总结_第3张图片
UDS诊断ISO-14229分析总结_第4张图片
UDS诊断ISO-14229分析总结_第5张图片
UDS诊断ISO-14229分析总结_第6张图片
UDS诊断ISO-14229分析总结_第7张图片

ECU重启

ECUReset(0x11)
电控单元复位服务用于要求电控单元根据复位类型参数值来有效执行复位操作。电控单元复位服务的肯定应答报文一般在复位操作执行之前发送。
UDS诊断ISO-14229分析总结_第8张图片
UDS诊断ISO-14229分析总结_第9张图片

安全访问

SecurityAccess(0x27)
由于保密、排放或安全的原因,安全访问服务提供一种方法以便访问受限制的数据或诊断服务。该安全方法采用种子和密钥的算法。种子和密钥都为32位(4字节)。
安全访问服务一般会定义最大尝试访问失败次数和达到最大尝试访问失败次数后的延时时间用于防止被破解。
UDS诊断ISO-14229分析总结_第10张图片
UDS诊断ISO-14229分析总结_第11张图片
UDS诊断ISO-14229分析总结_第12张图片
诊断仪与ECU安全访问交互过程:

诊断仪 ECU 请求种子 回复伪随机数种子 回复计算得到的密钥 回复密钥匹配结果 诊断仪 ECU

通讯控制

CommunicationControl (0x28)
通讯控制服务用于开启/关闭电控单元对某些报文的发送或接收。
通讯类型一般为应用报文和网络管理报文。
UDS诊断ISO-14229分析总结_第13张图片
UDS诊断ISO-14229分析总结_第14张图片

诊断仪保持连接

TesterPresent (0x3E)
测试工具保持连接服务用于告知电控单元测试工具仍在线。该服务一般周期性发送,用于重置S3server 计时器并维持当前激活的非默认诊断会话。
诊断处理模块同一时间只能处理一个诊断请求,正在处理当前请求时忽略其它所有诊断请求,只有一个例外情况是功能寻址下的诊断已保持连接服务且开启正响应抑制位,即 0x3E 80。
在这里插入图片描述
UDS诊断ISO-14229分析总结_第15张图片

控制DTC设置

ControlDTCSetting (0x85)
控制诊断故障代码设置服务用于停止或重启电控单元设置诊断故障代码。
当接收到子功能参数为“开”的控制诊断故障代码服务请求,会话层时序参数超时(电控单元进入默认会话)或电控单元执行复位操作后,诊断故障代码状态信息应重新开始更新。
UDS诊断ISO-14229分析总结_第16张图片
UDS诊断ISO-14229分析总结_第17张图片

通过标志读数据

ReadDataByIdentifier (0x22)
根据标识符读取数据服务用于从电控单元存储器中读取由数据标识符所确定的数据记录值。根据电控单元的支持情况,这些数据记录可能包括模拟输入输出信号、数字输入输出信号、内部数据和系统状态信息。
该服务的请求报文支持一次读取多个数据标识符的数据。
UDS诊断ISO-14229分析总结_第18张图片
UDS诊断ISO-14229分析总结_第19张图片

通过地址读内存

ReadMemoryByAddress (0x23)
根据地址读取存储器服务用于从一个连续的地址区域读取数据。该服务一般用于电控单元开发阶段时读取无法通过其它诊断服务获取的数据。
UDS诊断ISO-14229分析总结_第20张图片
UDS诊断ISO-14229分析总结_第21张图片

通过标志写数据

WriteDataByIdentifier (0x2E)
根据标识符写入数据服务允许测试工具将数据写入由数据标识符指定的内部存储单元。电控单元应在数据已写入非易失性存储器后发送该服务的肯定应答。
UDS诊断ISO-14229分析总结_第22张图片
UDS诊断ISO-14229分析总结_第23张图片

通过地址写内存

WriteMemoryByAddress (0x3D)
根据地址写入存储器服务用于向电控单元的一个或多个连续存储单元写入数据。该服务主要用于电控单元开发阶段时写入无法通过其它诊断服务修改的数据。
UDS诊断ISO-14229分析总结_第24张图片
UDS诊断ISO-14229分析总结_第25张图片

清除诊断信息

ClearDiagnosticInformation (0x14)
清除诊断信息服务用于清除一个或多个电控单元存储器中的诊断信息。与具体诊断故障代码相关的故障信息包括:诊断故障代码、诊断故障代码状态、全局快照、局部快照和扩展数据等。
当接收到测试工具发送的控制诊断故障代码设置服务($85)服务关闭设置诊断故障代码后,接收到测试工具发送的清除诊断信息($14)服务后,电控单元应重新开始设置诊断故障代码。
UDS诊断ISO-14229分析总结_第26张图片
在这里插入图片描述

读取诊断信息

ReadDTCInformation (0x19)
读取诊断故障代码信息服务用于从电控单元中读取其存储的诊断故障代码信息。
诊断故障代码长度为两个字节,诊断故障代码状态长度为一个字节。
快照信息是指诊断故障代码设置时记录的一些电控单元此时刻的信息,对故障的修复具有辅助作用。例如全局快照信息可以包括供电电压、里程读数、点火状态和冷却液温度等。
扩展数据信息是一组提供诊断故障代码相关扩展状态信息的数据组,包括故障出现计数器、故障待定计数器、已老去计数器和老化计数器。
读取诊断信息常用子功能如下:

SubFunction SubFunction definition
0x01 根据状态掩码报告诊断故障代码数量
0x02 根据状态掩码报告诊断故障代码
0x04 根据诊断故障代码报告诊断故障代码快照记录
0x06 根据诊断故障代码报告诊断故障代码扩展数据记录
0x0A 报告支持的诊断故障代码

UDS诊断ISO-14229分析总结_第27张图片
UDS诊断ISO-14229分析总结_第28张图片
UDS诊断ISO-14229分析总结_第29张图片
UDS诊断ISO-14229分析总结_第30张图片
UDS诊断ISO-14229分析总结_第31张图片
UDS诊断ISO-14229分析总结_第32张图片

UDS诊断ISO-14229分析总结_第33张图片
UDS诊断ISO-14229分析总结_第34张图片
UDS诊断ISO-14229分析总结_第35张图片

通过标志输入输出控制

InputOutputControlByIdentifier (0x2F)
根据标识符控制输入输出服务用于替换输入信号的值、电控单元内部参数或控制电子系统的输出值。
UDS诊断ISO-14229分析总结_第36张图片
UDS诊断ISO-14229分析总结_第37张图片

例程控制

RoutineControl (0x31)
程序控制服务用于启动程序、停止程序和请求程序执行结果。一个程序由2个字节的程序标识符表示。
UDS诊断ISO-14229分析总结_第38张图片
UDS诊断ISO-14229分析总结_第39张图片

请求下载

RequestDownload (0x34)
请求下载服务用于启动从测试工具到电控单元的数据传输(下载)。当接收到该服务有效的请求报文后,电控单元应擦除请求报文中指定地址范围的存储数据,并在返回肯定应答报文前采取必要的措施,做好接受数据的准备。
UDS诊断ISO-14229分析总结_第40张图片
UDS诊断ISO-14229分析总结_第41张图片

传输数据

TransferData (0x36)
传输数据服务用于测试工具向电控单元传输数据(下载)。
该服务请求报文包含参数块序号。该序号用于提高在连续多个传输数据请求过程中发生错误的处理能力。
UDS诊断ISO-14229分析总结_第42张图片
UDS诊断ISO-14229分析总结_第43张图片

请求退出下载

RequestTransferExit (0x37)
该服务用于终止测试工具和电控单元之间的数据传输(下载)。电控单元当收到请求退出传输请求报文后一般进行该模块的完整性检查。
UDS诊断ISO-14229分析总结_第44张图片
UDS诊断ISO-14229分析总结_第45张图片

你可能感兴趣的:(UDS诊断ISO-14229分析总结)