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)服务
本文可能涉及的文章
addressAndLengthFormatIdentifier(地址和长度格式标识符)示例值
一、 服务说明
客户端利用 RequestUpload(请求上传)服务启动服务器到客户端之间的数据传输(上传)。
服务器收到 RequestUpload(请求上传)请求消息后,应在其发送肯定响应消息之前采取必要行动接收数据。
二、请求消息
1. 请求消息定义
字节 | 参数名称 | Cvt | 字节值 |
---|---|---|---|
#1 | RequestUpload(请求上传) 请求 SID | M | 0x35 |
#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 | RequestUpload(请求上传)响应SID | M | 0x35 |
#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(最大信息组长度) RequestUpload(请求上传)肯定响应消息利用此参数通知客户端服务器发出的 TransferData(传输数据)肯定响应消息中包含了多少数据字节。此长度反应了完整的消息长度,包括 TransferData 肯定响应消息中出现的服务表示符和数据参数。该参数允许客户端在开始向客户端传输数据之前适应服务器的接收缓冲大小。客户端接收的 TransferData 响应须与其报告的 maxNumberOfBlockLength 长度相等。发送的 TransferData 响应(如有)长度与 比 maxNumberOfBlockLength 小多少视特定服务器而定。注意指定信息组内的最后一个 TransferData 请求可能要比 maxNumberOfBlockLength 短。 |
四、受支持的 NRC
NRC | 说明 |
---|---|
0x13 | 消息不正确或格式无效 |
0x22 | 条件不正确 如果不满足 RequestUpload(请求上传)要求,则此 NRC 会被退回。这种情况可能是由于在 RequestUpload(请求上传)已激活但尚未完成之时服务器收到此项服务请求而导致。 |
0x31 | 请求超过限值 下述情况下,应返回此 NRC: - 特定 dataFormatIdentifier 无效。 - 特定 addressAndLengthFormatIdentifier 无效。 - 特定 memoryAddress / memorySize 无效。 |
0x33 | 安全访问被拒绝 如果接收到此项服务请求时服务器比较安全(针对支持 SecurityAccess(安全访问)服务的服务器),则此 NRC 会被退回。 |
0x70 | 不接收上传下载 该 NRC 表示由于某些故障条件无法上传到服务器内存。 |
下图为 0x35 服务的 NRC 处理。
图例
1 最小为 5(SI + dataFormatIdentifier + addressAndLengthFormatIdentifier + 最小 memoryAddress + 最小 memorySize)
2 长度可以通过 addressAndLengthFormatIdentifier 计算
dress + 最小 memorySize)
2 长度可以通过 addressAndLengthFormatIdentifier 计算