【车载开发系列】UDS诊断—写入数据($0x2E)
UDS诊断---写入数据($0x2E)
- 【车载开发系列】UDS诊断---写入数据($0x2E)
- 一.概念定义
- 二.应用场景
- 三.报文格式
- 1)请求报文
- 2)肯定响应
- 3)否定响应
- 四.特记事项
一.概念定义
- 根据ISO14119-1标准中所述,诊断服务2E主要用于Client向Server(ECU)通过DID的方式写入相关的数据。
- 2E服务作为诊断服务中的基础服务,可以简单理解为就是一个用于写入ECU数据的外部接口,可实时获取软件内部的相关的状态信息。
- WriteDataByIdentifier按标识符写数据
该服务不含有sub-function的参数 - 服务器可以限制或禁止对某些 DID 值(由供应商/主车厂 定义为只读的 DID)的写访问以提高自身的安全性。
- 0x2C(DynamicallyDefineDataIdentifier)服务不得与此服务一起使用
二.应用场景
- 在整车下线的过程中写入相关配置信息,如常见的VIN码;
- 清除NVM;
- 重置已写入到Flash中的数据;
- 其他需要写入内部相关参数的场合;
内部测试时需要写入相关测试用状态和数据的场合
三.报文格式
1)请求报文
dataIdentifler(数据标识符DID)是客户端请求消息,它的大小为2字节,例如:VIN码(0xF190,通常该数值用于表示车辆唯一标识的数据标识符)。一般常用标识符如下(具体根据整车厂的诊断需求文档来定):
- 版本信息相关
软件版本号(数据内容包含如:软件版本,时间,修订次数等信息),硬件版本号以及FBL版本号。 - 内部数据相关
车辆总里程,ECU供电电压,车辆VIN码(每辆车都有它唯一标识符,即VIN码)等。 - 诊断相关
当前诊断会话(和诊断相关的,通过读取该DID信息,ECU返回当前诊断处于哪个会话模式) - IO Control标识符
属于0x2E服务,比如通过该服务控制远光灯打开,也需要DID用来标识下该功能。 - Routine Control标识符
是0x31例行控制服务,例如在通过诊断FBL更新程序之前,需要检查下更新环境是否满足,如:车速是否低于2km/h,电源电压是否满足刷写要求等。
2)肯定响应
3)否定响应
Hex | Description | 描述 |
---|---|---|
0x13 | incorrectMessageLengthOrInvalidFormat | 报文长度错误 |
0x31 | requestOutOfRange | 请求超出范围 |
0x33 | securityAccessDenied | 安全访问拒绝 |
0x72 | generalProgrammingFailure | 一般编程错误 |
四.特记事项
- 允许测试工具将数据写入由数据标识符指定的内部存储单元。
- 该服务请求报文只允许包含1个ECU支持的数据标识符。