《UDS协议从入门到精通》系列——图解0x36:数据传输


Tip📌:本文描述中但凡涉及到其他UDS服务的,将陆续提供链接跳转方式以便快速了解他们。(各服务介绍持续更新中…)

学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

一、简介

  该服务用于在Tester和目标ECU之间传输数据,可以是从Tester向目标ECU传输(下载)或从目标ECU向Tester传输(上传)。数据传输方向由前面的0x34-RequestDownload或0x35-RequestUpload服务定义。即0x36服务必须在0x34或0x35服务之后才能正常执行

  • 如果Tester发起了0x34-RequestDownload请求,则要下载的数据包含在该服务请求消息中的transferRequestParameter参数中;
  • 如果Tester发起了0x35-RequestUpload请求,则要上传的数据包含在该服务响应消息中的transferResponseParameter参数中。

二、数据包格式

2.1 服务请求格式

在这里插入图片描述
  该服务不支持sub-function。部分参数的含义如下所示:

  blockSequenceCounter(1Byte):参数的初始值为0x01,从RequestDownload (0x34)或RequestUpload (0x35)服务后的第一个TransferData请求开始。每个后续的TransferData请求,blockSequenceCounter的值递增1。当blockSequenceCounter的值达到0xFF时,它将重新变为0x00,然后随着下一个TransferData请求继续递增。

以数据下载过程中该服务的使用为例,可以看到该参数的作用:

  • 如果下载数据的TransferData请求在目标ECU中已经被正确接收和处理,但目标ECU发出的正响应消息未能到达Tester,则Tester会检测到超时,并重复相同的请求(包括相同的blockSequenceCounter)。于是目标ECU会接收到重复的TransferData请求,并根据包含的blockSequenceCounter确定这是一个重复的请求。这是目标ECU会立即发送正响应消息,而无需再次写入数据到其内存中。
  • 如果下载数据的TransferData请求在目标ECU中未能正确接收,则目标ECU不会发送正响应消息。于是Tester端会检测到超时,并重复相同的请求(包括相同的blockSequenceCounter)。目标ECU会接收到重复的TransferData请求,并根据包含的blockSequenceCounter确定这是一个新的请求。服务器会处理该服务,并发送正响应消息。

  transferResponseParameterRecord(不定长):这个参数记录包含目标ECU需要支持数据传输的参数。这些参数的格式和长度是由车辆制造商指定的。例如,在下载操作中,transferRequestParameterRecord包含要传输的数据。

2.2 服务响应格式

2.2.1 肯定响应

在这里插入图片描述
  blockSequenceCounter(1Byte):跟请求消息中的保持一致。

  transferResponseParameterRecord(不定长):这个参数的格式和长度是由车辆制造商指定的。例如,在下载操作中(上一条请求是0x34),那么该参数可能包含目标ECU根据请求下载的数据计算得出的校验和。在上传操作中(上一条请求是0x35),该参数包含要上传的数据。在下载操作中,该参数不应与transferRequestParameterRecord重复

2.2.2 否定响应

在这里插入图片描述
  可能出现的NRC及其含义如下:

NRC含义
0x13消息长度错误
0x24两种情况会回复这个NRC:
① 收到0x36请求时,0x34/0x35服务未处于活动状态,也就是在这之前没收到上传下载请求;
② 之前收到了上传下载请求,但目标ECU已根据上一次请求中的memorySize参数接收到了所有的数据;
0x31请求参数不受支持,参数错误
0x71如果下载模块的长度不符合0x34-请求下载服务请求消息中的memorySize参数的要求,则应返回此NRC。
0x72一般的刷写错误,比如写flash出错
0x73如果目标ECU检测到blockSequenceCounter的序列错误,应返回此NRC。
注意,如果请求消息的blockSequenceCounter与前一个请求消息中的blockSequenceCounter相等,
则目标ECU应接受重复的那个TransferData请求消息。
0x92/0x93电压条件不满足,比如目标ECU的主电源引脚上测量到的电压超出了下载数据到其永久存储器(例如闪存)的可接受范围

  NRC的处理流程如下所示(即推荐的错误情况检查顺序):
在这里插入图片描述

三、通信示例

  本小节不做通信示例。因为通常0x34、0x36、0x37三个服务是放在一起使用的,学习完这三个服务之后将做一个详细的通信示例,以便更好地了解整个数据传输过程。

>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载系统攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值