UDS 诊断服务系列文章目录

诊断和通信管理功能单元
UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务
UDS 诊断 - ECUReset(ECU重置)(0x11)服务
UDS 诊断 - SecurityAccess(安全访问)(0x27)服务
UDS 诊断 - CommunicationControl(通信控制)(0x28)服务
UDS 诊断 - TesterPresent(测试仪保活)(0x3E)服务
UDS 诊断 - AccessTimingParameter(访问计时参数)(0x83)服务
UDS 诊断 - SecuredDataTransmission(受保护的数据传输)(0x84)服务
UDS 诊断 - ControlDTCSetting(控制DTC设置)(0x85)服务
UDS 诊断 - ResponseOnEvent(基于事件响应)(0x86)服务
UDS 诊断 - LinkControl(链路控制)(0x87)服务
数据传输功能单元
UDS 诊断 - ReadDataByIdentifier(按标识符读取数据)(0x22)服务
UDS 诊断 - ReadMemoryByAddress(按地址读取内存)(0x23)服务
UDS 诊断 - ReadScalingDataByIdentifier(按标识符读取换算数据)(0x24)服务
UDS 诊断 - ReadDataByPeriodicIdentifier(按周期性标识符读取数据)(0x2A)服务
UDS 诊断 - DynamicallyDefineDataIdentifier(动态定义数据标识符)(0x2C)服务
UDS 诊断 - WriteDataByIdentifier(按标识符写数据)(0x2E)服务
UDS 诊断 - WriteMemoryByAddress(按地址写内存)(0x3D)服务
存储数据传输功能单元
UDS 诊断 - ClearDiagnosticInformation(清除诊断信息)(0x14)服务
UDS 诊断 - ReadDTCInformation(读取 DTC 信息)(0x19)服务(1) - 服务说明
UDS 诊断 - ReadDTCInformation(读取 DTC 信息)(0x19)服务(2) - 请求消息
UDS 诊断 - ReadDTCInformation(读取 DTC 信息)(0x19)服务(3) - 响应消息
UDS 诊断 - ReadDTCInformation(读取 DTC 信息)(0x19)服务(4) - 示例
输入输出控制功能单元
UDS 诊断 - InputOutputControlByIdentifier(按标识符的输入输出控制)(0x2F)服务
例程功能单元
UDS 诊断 - RoutineControl(例程控制)(0x31)服务
上传下载功能单元
UDS 诊断 - RequestDownload(请求下载)(0x34)服务
UDS 诊断 - RequestUpload(请求上传)(0x35)服务
UDS 诊断 - TransferData(传输数据)(0x36)服务
UDS 诊断 - RequestTransferExit(请求传输终止)(0x37)服务
UDS 诊断 - RequestFileTransfer(请求文件传输)(0x38)服务

本文可能涉及的文章
addressAndLengthFormatIdentifier(地址和长度格式标识符)示例值


一、 服务说明

客户端利用 requestDownload (请求下载)服务启动客户端到服务器之间的数据传输(下载)。

服务器收到 requestDownload(请求下载)请求消息后,应在其发送肯定响应消息之前采取必要行动接收数据。

二、请求消息

1. 请求消息定义

字节 参数名称 Cvt 字节值
#1 RequestDownload (请求下载) 请求 SID M 0x34
#2 dataFormatIdentifier(数据格式标识符) M 0x00 - 0xFF
#3 addressAndLengthFormatIdentifier(地址和长度格式标识符) M 0x00 - 0xFF

#4

#(m-1)+4
memoryAddress[] = [
byte#1(MSB)

byte#m ]

M

C1

0x00 - 0xFF

0x00 - 0xFF

#n-(k-1)

#n
memorySize[] = [
byte#1(MSB)

byte#m ]

M

C2

0x00 - 0xFF

0x00 - 0xFF

C1:此参数的存在性取决于 addressAndLengthFormatIdentifier 的地址长度信息参数。

C2:此参数的存在性取决于 addressAndLengthFormatIdentifier 的内存大小长度信息。

2. 请求消息数据参数定义

定义
dataFormatIdentifier(数据格式标识符)
此数据参数是一个单字节值,每半字节均单独编码。高效半字节指定 “compressionMethod(压缩方法)”,低效半字节指定 “encryptingMethod(加密法)“。字节值 0x00 不得使用压缩法或加密法。0x00 以外的字节值由车辆制造商规定。
addressAndLengthFormatIdentifier(地址和长度格式标识符)
此参数是一个单字节值,每个半字节均单独编码:
- 第 7 至 4 位:memorySize(内存大小)参数的长度(字节数)
- 第 3 至 0 位:memoryAddress(内存地址)参数的长度(字节数)
memoryAddress(内存地址)
参数 memoryAddress 是数据被写入服务器内存的起始地址。该地址所用的字节数由 addressAndLengthFormatIdentifier 的低效半字节(第 3 至 0 位)确定。memoryAddress 参数的第 m 个字节始终为服务器中当前所引用的地址的最低有效字节。地址的最高有效字节可以用作内存标识符。
内存表示符的使用示例可为一个带 16 位寻址和内存地址重叠的双处理器服务器(给定地址适用于处理器但得出不同的物理内存设备或使用内部和外部闪存的情况下)。在该情况下,可将 memoryAddress 参数中另外未使用的字节指定为用于选择期望内存设备的内存标识符。此功能的使用应由车辆制造商/系统供应商确定。
memorySize
服务器应利用此参数对比内存大小与执行 TransferData(传输数据)服务期间传输的数据总量。这增加了编程安全性。该内存大小所用的字节数由 addressAndLengthFormatIdentifier 的高效半字节(第 7 至 4 位)确定。如果数据压缩,则由车辆制造商规定内存大小是否支持压缩或未压缩大小。

三、肯定响应消息

1. 肯定响应消息定义

字节 参数名称 Cvt 字节值
#1 RequestDownload (请求下载)响应SID M 0x74
#2 lengthFormatIdentifier(长度格式标识符) M 0x00 - 0xF0

#3

#n
maxNumberOfBlockLength[] = [
byte#1(MSB)

byte#m ]

M

M

0x00 - 0xFF

0x00 - 0xFF

2. 肯定响应消息数据参数的定义

定义
lengthFormatIdentifer(长度格式标识符)
此数据参数是一个单字节值,每个半字节均单独编码:
- 第 7 至 4 位:maxNumberOfBlockLength(最大信息组长度)参数的长度(字节数)
- 第 3 至 0 位:文件保留,设置为 “0“
除了低效半字节须设置为 “0”,此参数的格式与请求消息中的 addressAndLengthFormatIdentifier 参数的格式兼容。
maxNumberOfBlockLength(最大信息组长度)
RequestDownload(请求下载)肯定响应消息利用此参数通知客户端其发出的 TransferData(传输数据)请求消息中应包含多少数据字节(maxNumberOfBlockLength(最大信息组长度))。此长度反应了完整的消息长度,包括 TransferData 请求消息中出现的服务表示符和数据参数。该参数允许客户端在开始向服务器传输数据之前适应服务器的接收缓冲大小。服务器接收的 TransferData 请求长度须与其报告的 maxNumberOfBlockLength 长度相等。TransferData 请求长度与 maxNumberOfBlockLength 间的允许公差(如有)可以视特定服务器而定。注意指定信息组内的最后一个 TransferData 请求可能要比 maxNumberOfBlockLength 短。服务器不得写入 TransferData 消息(压缩格式或未压缩格式)中未存储的其他数据字节(如填充字节),因为这会对写入后续 transferData 请求数据的内存地址造成影响。

四、受支持的 NRC

NRC 说明
0x13 消息不正确或格式无效
0x22 条件不正确
如果服务器在接受软件或校准模块下载的同事接收到此项服务请求,则此 NRC 会被退回。这种情况的发生可能是由于模块下载过程中服务器与客户端之间的数据大小不匹配导致。
0x31 请求超过限值
下述情况下,应返回此 NRC:
- 特定 dataFormatIdentifier 无效。
- 特定 addressAndLengthFormatIdentifier 无效。
- 特定 memoryAddress / memorySize 无效。
0x33 安全访问被拒绝
如果接收到此项服务请求时服务器比较安全(针对支持 SecurityAccess(安全访问)服务的服务器),则此 NRC 会被退回。
0x70 不接收上传下载
该 NRC 表示由于某些故障条件无法下载到服务器内存。

下图为 0x34 服务的 NRC 处理。

0x34 服务的 NRC 处理

图例
1 最小为 5(SI + dataFormatIdentifier + addressAndLengthFormatIdentifier + 最小 memoryAddress + 最小 memorySize)
2 长度可以通过 addressAndLengthFormatIdentifier 计算

本节示例见 UDS 诊断 - RequestTransferExit(请求传输终止)(0x37)服务

Logo

获取更多汽车电子技术干货

更多推荐