UDS 诊断 - RequestTransferExit(请求传输终止)(0x37)服务

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(地址和长度格式标识符)示例值

一、 服务说明

客户端利用此服务终止客户端与服务器之间的数据传输(上传或下载)。

二、请求消息

1. 请求消息定义

字节参数名称Cvt字节值
#1RequestTransferExit(请求传输终止) 请求 SIDM0x37

#2

#n
transferRequestParameterRecord[] = [
transferRequestParameter#1

transferRequestParameter#m ]

U

U

0x00 - 0xFF

0x00 - 0xFF

C:如果正在下载,则此参数为强制参数。

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

定义
transferRequestParameterRecord(传输请求参数记录)
此参数记录包含服务器要求的支持数据传输的参数。参数格式和长度由车辆制造商规定。

三、肯定响应消息

1. 肯定响应消息定义

字节参数名称Cvt字节值
#1RequestTransferExit(请求传输终止)响应SIDM0x77

#2

#n
transferResponseParameterRecord[] = [
transferResponseParameter#1

transferResponseParameter#m ]

U

U

0x00 - 0xFF

0x00 - 0xFF

C:如果正在上传,则此参数为强制参数。

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

定义
transferResponseParameterRecord(传输响应参数记录)
此参数应包含客户端支持数据传输要求的参数。参数格式和长度由车辆制造商规定。

四、受支持的 NRC

NRC说明
0x13消息不正确或格式无效
0x24请求序列错误
下列情况中,服务器应使用此响应码:
- 收到此项服务请求时,编程尚未完成;
- RequestDownload 或 RequestUpload 服务未激活。
0x31请求超过限值
如果 transferRequestParameterRecord 包含无效数据,则此 NRC 会被返回。
0x72一般编程故障
如果完成客户端与服务器之间的数据传输时服务器检测到错误(如通过完整性检查),则此 NRC 会被退回。

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

0x37 服务 NRC 的处理

五、示例

1. 下载数据到服务器

1)假设

本小节详细说明了从客户端传输数据(下载)服务器的条件。

本示例包含三个步骤。

第 1 步,客户端和服务器执行 RequestDownload 服务。执行此项服务时,一下信息作为请求和肯定响应消息中的参数在客户端与服务器之间进行交换。

下表定义了 transferRequestParameter(传输请求参数)值。

数据参数名称数据参数值数据参数说明
memoryAddress(3 字节)0x602000memoryAddress(开始)下载数据到
dataFormatIdentifier(数据格式标识符)0x11dataFormatIdentifier
- compressionMethod = 0x1X
- encryptingMethod = 0xX1
memorySize(3 字节)0x00FFFFmemorySize = 65535 字节
在执行 requestTransferExit(请求传输终止)服务时,服务器利用此参数值与传输的实际字数进行对比

下表定义了 transferResponseParameter(传输响应参数)值。

数据参数名称数据参数值数据参数说明
maximumNumberOfBlockLength(最大信息组长度)0x0081SID + BlockSequenceCounter(1 字节) + 127 服务器数据字节 = 129 数据字节

第 2 步,客户端从 memoryAddress 0x602000 开始向服务器的快闪内存器传输 65535 字节数据。

第 3 步,客户端执行 requestTransferExit 服务终止向服务器传输数据。

测试条件:ignition = on,engine = off,Vehicle speed = 0 [kph](点火开关点开,发动机熄火,车辆速度为 0)

假设在此例中服务器支持三字节 memoryAddress 和三字节 memorySize。如果 memorySize 包含未压缩大小,则无法计算 127 数据字节的 TransferData 服务的大小,因为压缩方法和压缩比不规范。如果 memorySize 包含压缩大小,则 127 数据字节的 TransferData 服务大小应为 516,其后为 三字节的单个 TransferData 请求。因此,假设最后一个 TransferData 请求消息包含大小相当于 0x05 的 BlockSequenceCounter。

2)step 1:下载请求

req  34 
	 11 - dataFormatIdentifier
	 33 - addressAndLengthFormatIdentifier
	 60 20 00 - memoryAddress
	 00 FF FF - memoryAize
resp 74 
	 20 - LengthFormatIdentifier 
	 00 81 - maxNumberOfBlockLength

3)step 2:传输数据

req  36 
	 01 - blockSequenceCounter 
	 XX ... XX - transferRequestParameterRecord[transferRequestParameter#1 - transferRequestParameter#127]
resp 76 01

...

req  36 
	 05 - blockSequenceCounter 
	 XX ... XX - transferRequestParameterRecord[transferRequestParameter#1 - transferRequestParameter#n]
resp 76 05

4)请求传输终止

req  37
resp 77

2. 从服务器上传数据

本小节详细说明了从服务器传输数据(上传)到客户端的条件。

示例包含三个步骤。

第 1 步,客户端和服务器执行 RequestUpload 服务。执行此项服务时,以下信息作为请求和肯定响应消息中的参数在客户端与服务器之间进行交换:

下表定义了 transferRequestParameter(传输请求参数)值。

数据参数名称数据参数值数据参数说明
memoryAddress(3 字节)0x201000memoryAddress(开始)从 XX 上传数据
dataFormatIdentifier(数据格式标识符)0x11dataFormatIdentifier
- compressionMethod = 0x1X
- encryptingMethod = 0xX1
memorySize(3 字节)0x0001FFmemorySize = 511 字节
在执行 requestTransferExit(请求传输终止)服务时,服务器利用此参数值与传输的实际字数进行对比。

下表定义了 transferResponseParameter(传输响应参数)值。

数据参数名称数据参数值数据参数说明
maximumNumberOfBlockLength(最大信息组长度)0x0081SID + BlockSequenceCounter(1 字节) + 127 服务器数据字节 = 129 数据字节

第 2 步,服务器以服务器中的 memoryAddress 0x201000 为起点从外部 RAM 传输 511 数据字节(4 个 有 129 数据字节(127 个服务器数据字节 + 1 个 SID + 1 个 BlockSequenceCounter)的 TransferData 服务和 1 个有 5 数据字节(3 个服务器数据字节 + 1 个 SID + 1 个 BlockSequenceCounter)的 TransferData 服务。

第 3 步,客户端执行 requestTransferExit 服务终止向服务器传输数据。

测试条件:ignition = on,engine = off,Vehicle speed = 0 [kph](点火开关点开,发动机熄火,车辆速度为 0)

假设在此例中服务器支持三字节 memoryAddress 和三字节 MemorySize。另外还假设服务器支持 TransferData 服务中的 BlockSequenceCounter。

1)上传请求

req  35 
	 11 - dataFormatIdentifier
	 33 - addressAndLengthFormatIdentifier
	 20 01 00 - memoryAddress
	 00 01 FF - memoryAize
resp 75 
	 20 - LengthFormatIdentifier 
	 00 81 - maxNumberOfBlockLength

2)传输数据

req  36 
	 01 - blockSequenceCounter 
resp 76 01
	 XX ... XX - transferResponseParameterRecord[transferResponseParameter#1 - transferResponseParameter#127]

...

req  36 
	 05 - blockSequenceCounter 
resp 76 05
	 XX ... XX - transferResponseParameterRecord[transferResponseParameter#1 - transferResponseParameter#3]

3)请求传输终止

req  37
resp 77
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值