【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分

这篇具有很好参考价值的文章主要介绍了【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总目录:(单击下方链接皆可跳转至专栏总目录)

《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014

目录

1 $0x36 TransferData诊断服务描述

2 0x36服务请求消息

2.1 0x36服务请求消息定义

2.2 0x36服务请求消息子功能参数$ Level(LEV_)定义

2.3 0x36服务请求消息数据参数定义

3 0x36服务肯定响应消息

3.1 0x36服务肯定响应消息定义

3.2 0x36服务肯定响应消息数据参数定义

4 0x36服务支持的否定响应代码(NRC_)

5 示例:0x36 TransferData服务消息流

结尾


优质博文推荐阅读(单击下方链接,即可跳转):

点击返回「《Autosar从入门到精通-实战篇》总目录」

点击返回「《Autosar_BSW高阶配置》总目录」

点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏

TransferData0x36 service传输数据服务

服务

SID

描述

TransferData

传输数据       

0x36

client向server发送数据(download下载)或从server请求数据(upload上传)。

1 $0x36 TransferData诊断服务描述

TransferData服务被client用来从client向server(download下载)或从server向client(upload上传)传输数据。

数据传输方向由前面的RequestDownload或RequestUpload服务定义。如果client发起RequestDownload,要下载的数据将包括在TransferData请求消息的参数transferRequestParameter中。如果client发起了一个RequestUpload,要上传的数据就包括在TransferData响应消息中的参数transferResponseParameter中。

TransferData服务请求包括一个blockSequenceCounter,以便在多个TransferData请求序列中的TransferData服务失败时改进错误处理。当收到RequestDownload (0x34)或RequestUpload (0x35)请求消息时,server的blockSequenceCounter应被初始化为1。这意味着在RequestDownload (0x34)或RequestUpload (0x35)请求消息之后的第一个TransferData (0x36)请求消息以一个blockSequenceCounter为起点。

重要的是 - server和client应满足ISO 14229-1的7.5章节中规定的请求和响应信息行为。

2 0x36服务请求消息

2.1 0x36服务请求消息定义

表403 - 请求消息定义

A_Data byte

参数名称

Cvt

字节值

助记符

#1

TransferData Request SID

传输数据请求SID

M

0x36

TD

#2

blockSequenceCounter

块序列计数器

M

0x00 – 0xFF

BSC

#3

:

#n

transferRequestParameterRecord[] = [

transferRequestParameter#1

:

transferRequestParameter#m ]

C

:

U

0x00 – 0xFF

:

0x00 – 0xFF

TRPR_ TRTP_

:

TRTP_

C = Conditional有条件:如果下载正在进行,该参数是强制性的。

2.2 0x36服务请求消息子功能参数$ Level(LEV_)定义

此服务不使用子功能参数。

2.3 0x36服务请求消息数据参数定义

表404 - 请求消息数据参数定义

定义

blockSequenceCounter块序列计数器

BlockSequenceCounter参数值从RequestDownload(0x34)或RequestUpload(0x35)服务后的第一个TransferData请求的0x01处开始。它的值在每个后续的TransferData请求中都会增加1。当值为0xFF时,blockSequenceCounter会翻转,并在下一个TransferData请求信息中从0x00开始。

用例:

  • 如果一个下载数据的TransferData请求在server中被正确接收和处理,但positive response message没有到达client,那么client将确定一个应用层超时,并将重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据所包含的blockSequenceCounter来确定这个TransferData请求是重复的。server将立即发送positive response message,而不将数据再次写入其memory中。
  • 如果server没有正确接收到下载数据的TransferData请求,那么server将不会发送positive response message。client将确定应用层超时,并重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据包含的blockSequenceCounter确定这是一个新的TransferData。server将处理该服务,并将发送positive response message。
  • 如果一个上传数据的TransferData请求被server正确接收和处理,但positive response message没有到达client,那么client将确定应用层超时,并将重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据所包含的blockSequenceCounter来确定这个TransferData请求是重复的。server将立即发送positive response message,在其内存中再次访问先前提供的数据。
  • 如果server没有正确接收到上传数据的TransferData请求,那么server将不会发送一个positive response message。client将确定应用层超时,并重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据所包含的blockSequenceCounter来确定这是一个新的TransferData。server将处理该服务并发送positive response message。

transferRequestParameterRecord传输请求参数记录

该参数记录包含server所需的参数,以支持数据传输。该参数的格式和长度由汽车制造商决定。

例子:对于下载,transferRequestParameterRecord包括要传输的数据。

3 0x36服务肯定响应消息

3.1 0x36服务肯定响应消息定义

表405 - 肯定响应消息定义

A_Data byte

参数名称

Cvt

字节值

助记符

#1

TransferData Response SID

传输数据响应SID

M

0x76

TDPR

#2

blockSequenceCounter

块序列计数器

M

0x00 – 0xFF

BSC

#3

:

#n

transferResponseParameterRecord[] = [

transferResponseParameter#1

:

transferResponseParameter#m ]

C

:

U

0x00 – 0xFF

:

0x00 – 0xFF

TREPR_

TREP_

:

TREP

C = Conditional有条件的:如果上传正在进行,这个参数是强制性的。

3.2 0x36服务肯定响应消息数据参数定义

表406 - 响应消息数据参数定义

定义

blockSequenceCounter块序列计数器

这个参数是请求信息中blockSequenceCounter参数的回显。

transferResponseParameterRecord传输响应参数记录

该参数应包含client所需的参数,以支持数据的传输。该参数的格式和长度由汽车制造商决定。

例子:对于下载,参数transferResponseParameterRecord可以包括由server计算的校验和。对于上传,参数transferResponseParameterRecord包括上传的数据。对于下载,参数transferResponseParameterRecord不应重复transferRequestParameterRecord的内容。

4 0x36服务支持的否定响应代码(NRC_)

对于这项服务,应执行以下negative response code否定响应代码。表407中记录了每个响应代码会发生的情况。如果错误情况适用于server,应使用列出的negative response否定响应

表407 - 支持的否定响应代码

NRC

描述

助记符

0x13

incorrectMessageLengthOrInvalidFormat消息长度不正确或格式无效

如果消息的长度不对(例如,消息长度不符合requestDownload服务的肯定响应中返回的maxNumberOfBlockLength参数的要求),则应发送该NRC。

IMLOIF

0x24

requestSequenceError请求序列错误

server应使用此响应代码:

-如果收到对该服务的请求时,RequestDownload或RequestUpload服务未被激活;

-如果RequestDownload或RequestUpload服务处于活动状态,但server已经收到由活动的RequestDownlod或RequestUpload服务中的memorySize参数决定的所有数据;

注:server应接受重复传输数据请求消息,该消息的blockSequenceCounter等于前一个传输数据请求消息中包含的blockSequenceCounter。

RSE

0x31

requestOutOfRange请求超出范围

如果出现以下情况,则应返回该NRC:

- TransferRequestParameterRecord包含额外的控制参数(例如额外的地址信息),并且该控制信息无效。

- TransferRequestParameterRecord与requestDownload或requestUpload服务参数maxNumberOfBlockLength不一致。

- TransferRequestParameterRecord与server的memory排列限制不一致。

ROOR

0x71

transferDataSuspended转移数据暂停

如果下载模块的长度不符合requestDownload服务的请求消息中发送的memorySize参数的要求,应返回该NRC。

TDS

0x72

generalProgrammingFailure一般编程失败

如果在下载数据期间,server在erasing擦除programming编程永久存储设备(如Flash Memory)中的一个memory位置时检测到一个错误,则应返回该NRC。

GPF

0x73

wrongBlockSequenceCounter错误的块序列计数器

如果server检测到blockSequenceCounter的顺序有误,则应返回这个NRC。

注意:server应接受重复TransferData请求消息,其blockSequenceCounter等于前一个TransferData请求消息中包含的blockSequenceCounter。

WBSC

0x92 / 0x93

voltageTooHigh / voltageTooLow电压太高/电压太低

如果在server的主电源引脚上测得的电压超出了将数据下载到server的永久存储器(如Flash Memory)的可接受范围,则应视情况发送该返回代码。

VTH / VTL

评价顺序记录在图28中。

【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分

Key

1)如果正在进行RequestUpload(SI + BSC),必须是2、

2)如果正在进行RequestDownload (SI + BSC + 最小TRPR_),则至少为3。

28 - NRC处理请求下载服务

5 示例:0x36 TransferData服务消息流

详见以下博文:

【ISO14229_UDS刷写】-6-$34,$35,$36,$37诊断服务用于downloading下载/uploading上载数据的消息流示例https://blog.csdn.net/qfmzhu/article/details/130895979

以上摘自《ISO 14229-1:2013》。

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。文章来源地址https://www.toymoban.com/news/detail-460747.html

到了这里,关于【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UDS统一诊断服务【三】安全访问0X27服务

    今天分享的是UDS的安全访问服务,希望能对你有所帮助 SecurityAccess 安全访问,27服务,用来保护某些诊断服务的,提供一种保护机制。例如对于重要数据的上传或者下载过程不做任何限制,可能会对整车的安全造成极大的威胁,尤其是针对底盘域的控制器更是要在这方面做好

    2024年02月16日
    浏览(49)
  • UDS诊断系列之七 安全访问(27)服务(番外)附录I

    附录I的主要内容是通过一个状态图来描述ECU在安全访问的各状态之间的切换条件,以及如何进行状态切换即切换过程中都需要执行哪些操作。 下面直接先上图。 图看起来流程很多,但实际上很简单,先说图中的四个状态: A - ECU没有接收过任何安全访问的请求,或者刚刚接

    2024年02月10日
    浏览(49)
  • 【AUTOSAR】UDS协议的代码分析与解读(五)----ECU诊断服务

    8    诊断服务 8.1 总览 此章节定义了本规范中可使用的诊断服务及其执行规则 。 下表列出 了 h 事业部定义的所有 UDS 诊断服务。 ECU 最终实现与下述定义不符之处必须得到 h 事业部   的认可。服务实现内容需在零部件诊 断规范中详细说明。 表   9 诊断服务支持列表 诊 断服

    2024年02月09日
    浏览(54)
  • UDS诊断协议

    UDS 本质上是一系列服务的集合,包含 6 大类,共 26 种。每种服务都有独立的 ID ,即 SID 。 请求 SID(1Byte) + 参数 SID(1Byte) + Sub-function(1Byte) + 参数 SID + DID(2Bytes) 响应 肯定响应 SID+0x40(1Byte) + Sub-function (根据请求是否存在) + 参数 SID+0x40(1Byte) + DID + Data 否定响应 0x7F + SID + NRC(1Byte)

    2024年02月15日
    浏览(49)
  • UDS诊断协议——网络层协议

     UDS(unified Diagnostic Service, 统一诊断服务)是一个在整个汽车系统上经常使用的设备维护协议。其主要遵循: ISO-15765、ISO-14229,其ISO-15765协议是适用于网络层的协议,主要规范了“传输协议和网络层服务”, ISO-14229协议对应用层、会话层做出了定义。 协议功能        UDS网络

    2024年02月04日
    浏览(60)
  • 使用python执行uds诊断

            主要是通过python-can模块与pcan等支持的硬件通讯,uds协议层使用udsoncan模块和can-isotp模块实现uds诊断。         python-can模块         pip install python-can         相关文档链接:Installation - python-can 4.1.0 documentation                  udsoncan模块         pip ins

    2024年02月09日
    浏览(69)
  • 车载诊断协议——ECU刷写(Software Update)那回事

    鉴于篇幅原因,上篇没有多描述ECU刷写过程中所执行的那些动作。这里通过实例以及UDS建议刷写序列内容,一起解读刷写过程中的内容。 如下图,ISO 14229对于刷写过程所需Action所给出的推荐步骤。   若ECU当前处于Application中,想要完成对ECU的刷写,需进入到对应的Boot模式下

    2024年02月04日
    浏览(59)
  • UDS诊断之负响应码

    否定响应码(NRC) 定义(Defination) 0x12 服务器支持诊断请求中的服务标识符(Service ID),但不支持收到的子功能参数时,回复此编码。 0x13 请求服务的诊断报文中的数据长度与定义不一致时,回复此编码。请求服务中参数的格式与定义不一致时也会回复此编码。 0x22 请求的诊断服务的执

    2024年02月11日
    浏览(58)
  • 【车载开发系列】UDS诊断---读取数据($0x22)

    该服务的英文简称为ReadDataByIdentifier 。 根据ISO14119-1标准中所述,诊断服务22主要用于Client向Server(ECU)通过DID的方式读取相关的数据。这些数据可以输入输出的数字信号,模拟信号,内部数据以及其他的系统状态信息。作为诊断服务种的基础服务,可以简单理解为就是一个用于

    2023年04月19日
    浏览(56)
  • 【车载开发系列】UDS诊断---动态定义DID($0x2C)

    动态定义数据标识符 DynamicallyDefineDataIdentifier(2Ch) 此服务允许诊断工具在ECU的内部动态定义一个数据标识符,一个临时的DID,可以通过这个DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。 该数据标识符还可以被读取数据服务22h或读取数据(周期标识

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包