UDS 诊断 - WriteDataByIdentifier(按标识符写数据)(0x2E)服务

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)服务


一、服务说明

0x2E 服务允许客户端向服务器中给定数据标识符指定的内部位置写入信息。

客户端使用 0x2E 服务向服务器写入一个 dataRecord(数据记录)。该数据由一个 DID 标识,且可能受保护也可能不受保护。

本服务中不得使用动态定义的 DID。在执行本服务时,车辆制造商须确保满足服务器条件。

本服务的可能用途用:

  • 将配置信息编入服务器中(如 VIN),
  • 清除非易失性存储器,
  • 重置所得值,
  • 设置选项内容。

服务器肯呢个限制或禁止特定 DID 值(如系统供应商 / 车辆制造商针对只读标识符所确定的值)的写入权限。

二、请求消息

1. 请求消息定义

字节参数名称字节值
#1 WriteDataByIdentifier(按标识符写数据)请求SID0x2E

#2
#3
dataIdentifier[] = [
byte#1(MSB)
byte#2 ]

0x00 - 0xFF
0x00 - 0xFF

#4
.
.
#m+3
dataRecord[] = [
data#1
.
.
data#m ]

0x00 - 0xFF
.
.
0x00 - 0xFF

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

定义
dataIdentifier(数据标识符)
本参数确定了客户端请求写入的服务器数据记录。
dataRecord(数据记录)
本参数提供了与客户端请求写入的 DID 相关的数据记录。

三、肯定响应消息

1. 肯定响应消息定义

字节参数名称字节值
#1WriteDataByIdentifier(按标识符写数据)响应SID0x6E

#2
#3
dataIdentifier[] = [
byte#1(MSB)
byte#2 ]

0x00 - 0xFF
0x00 - 0xFF

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

定义
dataIdentifier(数据标识符)
此参数是请求消息中数据参数 dataIdentifier 的回显。

四、支持的NRC

NRC说明
0x13消息长度不正确或格式无效
0x22条件不正确
若因不满足服务器的运行条件而无法执行所需的操作,则应发送此 NRC。
0x31请求超过限值
以下情况下,应发送此 NRC:
— 请求消息中的所有 DID 在服务中不受支持或 DID 针对只读目的(通过 0x22 服务)受支持。
— 在 DID 后的请求消息中传输的任何数据是无效的。
0x33安全访问被拒绝
若引用了一个指定地址的 DID 是受保护的,并且服务器不处于解锁状态,则应发送此 NRC。
0x72一般编程故障
若在写入一个存储单元时服务器检测到错误,则应发送此 NRC。

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

图例
1. 最小程度为 4 字节(SI + DID + DEEC)
2. 总长度为 1 字节(SI + 2 字节 DID + 第 n 个字节 DREC)

五、示例

1. 假设

本条规定了执行 0x2E 服务示例所需满足的条件。

本示例中的服务不受服务器任何限制条件的限制。本示例展示了通过一个两字节 DID 0xF190 进行 VIN 编程的过程。

2. 示例 1:写 DID 0xF190(VIN)

req   2E F1 90
	  57 30 4C 30 30 30 30 34 33 4D 42 35 34 31 33 32 36
	  -(dataRecor[ data#1 - data#17] = VIN digit = "W 0 L 0 0 0 0 4 3 M B 5 4 1 3 2 6)
		
resp  6E F1 90	
通过标识符读取数据服务是汽车UDS诊断协议中的一种功能,通过该功能可以从汽车的电子控制单元(ECU)中读取特定的数据。其中,标识符0x22表示读取数据服务。 该命令的结构是由一个请求帧和一个响应帧组成。请求帧中包含了要读取数据标识符数据记录编号等信息。响应帧中则包含了请求的数据。 在进行标识符读取数据服务时,首先需要确定要读取的数据标识符标识符是通过制定的标准或者车辆制造商定义的,用于唯一标识某个特定的数据。例如,可以通过标识符来读取车速、发动机转速等信息。 一旦确定了要读取的数据标识符,就可以构建请求帧发送给对应的ECU。ECU接收到请求后,会根据标识符来查找对应的数据,并将其封装在响应帧中返回给诊断设备。 标识符读取数据服务的深度剖析需要了解不同的车辆制造商和标准对于标识符和其对应数据的定义。在实际使用中,需要根据特定的车辆型号和诊断设备的要求来选择合适的标识符。此外,不同的ECU可能支持不同的标识符数据,因此在使用过程中需要根据实际情况进行选择。 总之,通过标识符读取数据服务是汽车UDS诊断中的一个重要功能,它能够帮助用户获取车辆的各种数据信息,提供诊断和故障排除的参考依据。在实际应用中,需要根据具体情况选择合适的标识符来读取所需的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值