诊断协议那些事儿
诊断协议那些事儿专栏系列文章,本文介绍数据传输服务下的22服务ReadDataByIdentifier,允许客户端通过一个或多个dataldentifier向标识的服务器请求dataRecord(数据记录值)。
文章目录
- 诊断协议那些事儿
- 一、22服务-ReadDataByIdentifier
- 二、请求格式
- 三、肯定响应格式
- 四、否定响应格式
- 1.支持的否定响应码
- 2.NRC优先级
- 五、消息流示例
- ①请求单个DID(0xF190——VIN码)
- ②请求多个DID(0x010A——发动机冷却液温度、油门位置等、0x0110——蓄电池正电压)
- 总结
一、22服务-ReadDataByIdentifier
客户端请求消息包含一个或多个双字节dataldentifier值,用于标识服务器维护的数据记录(有关允许的dataldentifer 值,请参阅ISO14229 附录C.1)
服务器可以根据车辆制造商和系统供应商的约定限制可以同时请求的dataldentifier的数量。
dataRecord的格式和定义应为车辆制造商或系统供应商指定,如果服务器支持,可包括模拟输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。
在接收到ReadDataByldentifier请求后,服务器应访问由 dataldentifier 参数指定的记录的数据元素,并在包含相关dataRecord 参数的单个ReadDataByldentifier肯定响应中发送它们的值。请求消息可能多次包含相同的 dataldentifier。服务器应将每个dataldentifier视为单独的参数,并根据请求的频率对每个dataldentifier的数据进行响应。
二、请求格式
dataIdentifier-数据标识符
注:本服务不适用子功能参数!
三、肯定响应格式
四、否定响应格式
1.支持的否定响应码
NRC | 描述 | 助记符 |
---|---|---|
0x13 | 请求报文的数据长度(或者格式)不符合标准,或者客户端超过了每次允许请求的DID的最大数目 | IMLOIF |
0x14 | 若响应消息总长度超过了底层传输协议的限值 | RTL |
0x22 | 条件不正确 | CNC |
0x31 | ①ECU不支持所请求的任何DID值;②当前会话不支持所请求的任何DID;③尚未分配所请求的dynamicDefinedDataIdentifier; | ROOR |
0x33 | 安全访问被拒绝:若至少有一个DID已受保护,并且服务器未处于解锁状态 | SAD |
2.NRC优先级
五、消息流示例
①请求单个DID(0xF190——VIN码)
对应的响应:
②请求多个DID(0x010A——发动机冷却液温度、油门位置等、0x0110——蓄电池正电压)
总结
以上就是今天要讲的内容,欢迎各位评论,提出宝贵意见,小编也会持续更新,以提供更好的作品。