目录
一、0x2E服务核心要点
1、服务概述
0x2E服务(WriteDataByIdentifier)用于通过数据标识符DID(2字节)向ECU写入特定数据,需确保:
- DID在ECU中已定义
- 写入数据长度/格式符合规范
- 安全访问权限已解锁(依赖0x27服务)
2、服务流程
3、协议格式详解
字段 | 请求报文 | 响应报文 |
SID | 0x2E(1字节) | 0x6E(肯定响应) |
DID | 2字节(e.g. F180) | - |
NRC | - | 1字节(e.g. 0x31/0x13……) |
二、关键开发约束
1、DID合法性
- DID必须在ECU读写映射表中预先定义(e.g.,只读DID 0xF180/可写DID 0xF189)
2、数据长度校验
if (request.data_length != DID_expected_length) { send_NRC(0x13); // IncorrectMessageLength }
3、安全访问
- 必须通过0x27服务解锁(不同DID写入需要不同等级),否则触发NRC0x33(SecurityAccessDenied)
三、实际应用
1、0x2E服务的典型应用场景
场景 | DID示例 | 数据内容 |
---|---|---|
VIN码写入 | F190 | 17字节ASCII码 |
标定参数更新 | F189 | 4字节浮点数 (IEEE754) |
模拟信号注入 | D00A | 2字节整型 (0-65535) |
2、修改ECU版本号
请求报文
2E F1 88 56 34 12 00
-
DID = F188 (版本号DID)
-
Data = 66 34 12 00 (4字节版本号V1.2.0.0)
响应报文
6E F1 88 (成功) 或 7F 2E 31 (DID无效)