【ISO14229_UDS_0x23服务详解】

1、0x23服务(根据地址读取内存服务)

  Service description:
  0x23服务(ReadMemoryByAddress,根据地址读取内存服务)允许客户端从服务端通过起始地址和内存大小空间来读取指定内存的数据。
  0x23服务(ReadMemoryByAddress,根据地址读取内存服务)请求报文中包含了两个参数memoryAddress和memorySize,其定义了内存的相关信息,可以用于请求读取内存数据。用于表示内存地址(memoryAddress)和内存大小(memorySize)参数的字节数在地址长度格式标识符(addressAndLengthFormatIdentifier)来定义。
  一个固定地址长度格式标识符(addressAndLengthFormatIdentifier),在memoryAddress 或者 memorySize参数中高地址范围未使用到的字节用0x00去填充。
  如果内存区域有重叠,则使用附加内存地址字节作为内存标识符(如内部和外部闪存的使用)。
  服务端通过ReadMemoryByAddress的肯定应答报文来发送数据记录值。数据记录(dataRecord)参数的格式和定义由车辆制造厂商来定义。如果服务端支持,数据记录(dataRecord)参数会包含模拟输入输出信号量,数字输入输出信号量,内部数据和系统状态信息等参数。

2、请求报文格式

2.1 请求报文定义

  请求报文的定义:

字节序号参数值约定字节值
#1ReadMemoryByAddress Request SIDM0x23
#2addressAndLengthFormatIdentifierM0x00 - 0xFF

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

M
.
.
C1

0x00 – 0xFF
.
.
0x00 – 0xFF

#n-(k-1)
.
.
#n
memorySize[] = [
        byte#1 (MSB)
        .
        .
        byte#k ]

M
.
.
C2

0x00 – 0xFF
.
.
0x00 – 0xFF

  C1:该参数的出现取决于地址和长度格式标识符(addressAndLengthFormatIdentifier)参数中地址长度信息;
  C2:该参数的出现取决于地址和长度格式标识符(addressAndLengthFormatIdentifier)参数中内存大小长度信息;

2.2 请求报文中子函数参数定义

  该服务未使用子函数参数。

2.3 请求报文中数据参数定义

  该服务在请求报文中的数据参数定义如下表所示:

定义
addressAndLengthFormatIdentifier
该参数是单独编码的字节值:
bit 7 - 4:内存大小(memorySize)参数的长度(字节数量)
bit 3 - 0:内存地址(memoryAddress)参数的长度(字节数量)
memoryAddress
内存地址(memoryAddress)参数是所获取数据内存的起始地址。用于表示地址的字节数量在地址和长度格式标识符(addressAndLengthFormatIdentifier)参数的bit 0 - 3定义。Byte#m是内存地址(memoryAddress)参数中最低有效字节(least significant byte,LSB)。地址的最高有效字节(most significant byte,LSB)可以用作于内存标识符。
使用内存标识符的一个示例是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任一处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,可以将memoryAddress参数中未使用的字节指定为用于选择所需内存设备的内存标识符。此功能的使用应由车辆制造商/系统供应商定义。
memorySize
ReadMemoryByAddress请求报文中memorySize参数指定了需要读取的字节数,这些字节数从服务端内存中由内存地址(memoryAddress)指定的地址开始。用于表示内存大小的字节数量在地址和长度格式标识符(addressAndLengthFormatIdentifier)参数中的bit 7 - 4中定义。

3、肯定应答报文

3.1 肯定应答报文格式定义

字节序号参数值约定字节值
#1ReadMemoryByAddress Response SIDM0x63

#2
.
.
#n
dataRecord[] = [
        data#1
        .
        .
        data#m ]

M
.
.
U

0x00 – 0xFF
.
.
0x00 – 0xFF

3.2 肯定应答报文数据参数定义

Definition
dataRecord
该参数用于ReadMemoryByAddress服务肯定应答报文中,以提供给客户端请求的数据记录(dataRecord)值。数据记录(dataRecord)的内容没有在文档中定义,但应该反应请求的内容值。数据格式应该由车辆制造厂商/系统供应商来定义。

4、支持的否定应答码(NRC_)

  本服务应实施如下否定响应代码,下表记录了每个应答代码发生的情况,如果服务端在错误场景使用了该服务,则应使用如下列出的否定响应代码。

NRC描述
0x13incorrectMessageLengthOrInvalidFormat
请求报文长度不正确时,会发送该NRC
0x22conditionsNotCorrect
服务端的运行条件不满足去执行请求的动作时,会发送该NRC
0x31requestOutOfRange
如下情况发送该NRC:
— 在[0xMA, (0xMA + 0xMS -0x1)]区间内的任何内存地址都是无效的;
— 在[0xMA, (0xMA + 0xMS -0x1)]区间内的任何内存地址被限制了;
— 请求报文中内存大小(memorySize)参数服务端不支持时;
— 指定的地址和长度格式标识符(addressAndLengthFormatIdentifier)参数无效;
— 请求报文中内存大小(memorySize)参数值为0;
0x33SecurityAccessDenied
在[0xMA, (0xMA + 0xMS - 0x1)]区间内的任何内存地址都是保密的并且服务端被锁住,会发送该NRC

  0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的否定应答码(NRC)具体处理过程如下图所示:
在这里插入图片描述

5、0x23服务(ReadMemoryByAddress,根据地址读取内存服务)案例说明

  Assumptions:
  如下案例中,假定运行0x23服务(ReadMemoryByAddress)的条件都满足,该案例中的服务不会被服务端中任何约束条件限制。
  例1:ReadMemoryByAddress - 4-byte (32-bit) addressing
  客户端从服务端内存起始地址为0x2048 1392位置处读取了259个数据字节。
  案例1 0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的请求报文使用如下,由客户端发向服务端(ECU):

字节顺序Description字节值
#1ReadMemoryByAddress Request SID0x23
#2addressAndLengthFormatIdentifier0x24
#3memoryAddress [ byte#1 ] (MSB)0x20
#4memoryAddress [ byte#2 ]0x48
#5memoryAddress [ byte#3 ]0x13
#6memoryAddress [ byte#4 ]0x92
#7memorySize [ byte#1 ] (MSB)0x01
#8memorySize [ byte#2 ]0x03

  案例1 0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:

字节顺序Description字节值
#1ReadMemoryByAddress Response SID0x63
#2
.
.
#259+1
dataRecord [ data#1 ] (memory cell#1)
        .
        .
dataRecord [ data#259 ] (memory cell#259) ]

0x00
.
.
0x8C

例2:ReadMemoryByAddress - 2-byte (16-bit) addressing
  客户端从服务端内存起始地址为0x4813位置处读取了5个数据字节。
  案例2 0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的请求报文使用如下,由客户端发向服务端(ECU):

字节顺序Description字节值
#1ReadMemoryByAddress Request SID0x23
#2addressAndLengthFormatIdentifier0x12
#3memoryAddress [ byte#1 ] (MSB)0x48
#4memoryAddress [ byte#2 ]0x13
#5memorySize [ byte#1 ]0x05

  案例2 0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:

字节顺序Description字节值
#1ReadMemoryByAddress Response SID0x63
#2dataRecord [ data#1 ] (memory cell#1)0x43
#3dataRecord [ data#1 ] (memory cell#2)0x2A
#4dataRecord [ data#1 ] (memory cell#3)0x07
#5dataRecord [ data#1 ] (memory cell#4)0x2A
#6dataRecord [ data#1 ] (memory cell#5)0x55

例3:ReadMemoryByAddress, 3-byte (24-bit) addressing
  客户端从服务端外部RAM单元地址从0x204813位置处,读取了3个数据字节。
  案例3 0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的请求报文使用如下,由客户端发向服务端(ECU):

字节顺序Description字节值
#1ReadMemoryByAddress Request SID0x23
#2addressAndLengthFormatIdentifier0x23
#3memoryAddress [ byte#1 ] (MSB)0x20
#4memoryAddress [ byte#2 ]0x48
#5memoryAddress [ byte#2 ] (LSB)0x13
#6memorySize [ byte#1(MSB) ]0x00
#7memorySize [ byte#2(LSB) ]0x03

  案例3 0x23服务(ReadMemoryByAddress,根据地址读取内存服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:

字节顺序Description字节值
#1ReadMemoryByAddress Response SID0x63
#2dataRecord [ data#1 ] (memory cell#1)0x00
#3dataRecord [ data#1 ] (memory cell#2)0x01
#4dataRecord [ data#1 ] (memory cell#3)0x8C

返回UDS诊断服务功能单元介绍目录

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iso-14229是一项用于汽车电子系统通信的协议,其全称为ISO14229 Unified Diagnostic Services(UDS)on Controller Area Network(CAN)。该协议旨在为车辆的诊断、维护和修复提供标准化的方法。ISO 14229定义了诊断服务和通信的标准化消息格式,包括诊断数据、错误码、故障清除等,以使不同车辆的系统实现得到统一和互操作性。 ISO14229 UDS协议栈是用于实现ISO 14229诊断协议的软件组件。该协议栈的实现可分为物理层和软件层两个部分,其中物理层是指使用CAN总线对车辆的执行单元进行通信,而软件层则是指实现ISO 14229标准的协议堆栈。该协议栈具有标准化、可重用和可配置的特点,可在不同的客户平台上使用。 ISO 14229的文档是对该协议的规范和说明,包括协议的基本架构、消息格式、错误码表、会话层和传输层的细节等。该文档是实现ISO 14229协议的必要依据,可用于开发UDS协议栈的开发人员和车辆诊断工程师。 源码.zip则是UDS协议栈的实现源代码,包括物理层和软件层代码。开发人员可根据该源码了解UDS协议栈的实现细节和技术实现,并根据需求进行二次开发。 综上所述,ISO-14229_14229_UDS协议栈_UDS-ISO-14229_ISO14229文档_ISO 14229_源码.zip等组件,是用于实现汽车电子系统诊断的标准化协议,可为车辆的维护和修复提供规范的方法。开发人员和车辆诊断工程师可根据这些组件进行UDS协议栈的开发和实现。 ### 回答2: ISO-14229是用于诊断汽车电子控制单元(ECU)的标准协议。该协议旨在提供一种标准化的方法,让技术人员可以使用相同的工具和流程诊断不同制造商的汽车。 14229 UDS是该标准的通信协议栈。UDS指协议栈中定义的通用诊断服务,该服务可用于访问ECU的内部数据和状态。ISO14229文档提供了UDS协议栈的详细规范,以及相关的数据格式和命令集合。 此外,文档和源代码可以帮助工程师实现符合ISO-14229标准的诊断工具或ECU,提高汽车诊断系统的质量和效率。源码.zip则是UDS协议栈的代码包。 总之,ISO-14229标准和UDS协议栈提供了一种标准化的、可靠的汽车诊断协议。它们有助于提高汽车技术人员的工作效率,同时减少汽车诊断工具和软件的开发成本。 ### 回答3: ISO-14229是一种用于汽车电子系统的通讯协议。它定义了诊断通信的规范和协议,允许车辆厂商和供应商使用这些规范和协议来开发和测试车载电子控制单元。其中,UDS协议栈是实现ISO-14229的关键技术之一,能够为客户端提供远程访问ECEs的可能性。 ISO-14229规定了接口:UDS(Unified Diagnostic Service),用于与电子控制单元(ECU)之间进行通讯。 UDS协议栈则实现了UDS协议的接口,可以自动进行诊断和测试,发生故障时还能产生错误报告。 相应地, ISO14229文档描述了在ISO14229-1文档中定义的UDS协议的特定应用,与ISO15765-2的特定要求相结合。 它还包括了EVITA Light文档中的安全方面。 源码.zip文件则包含了UDS协议栈的源代码,可以在开发与应用中使用,实现对汽车电子控制单元的简便对话操作。 总之,ISO-14229及其UDS协议栈实现了车载控制电子单元的标准化通讯,可简化车辆诊断和维护过程,提高效率和可靠性。同时,相应的规范、文档和源代码也为相关人员提供了方便和支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值