【车载开发系列】UDS诊断—读取周期标识符($0x2A)
UDS诊断---读取周期标识符($0x2A)
- 【车载开发系列】UDS诊断---读取周期标识符($0x2A)
- 一.概念定义
- 二.报文格式
- 1)请求报文
- 2)初始响应
- 3)后续肯定响应
- 4)否定响应
一.概念定义
- 此服务允许诊断工具请求ECU中由一个或多个周期数据标识符(periodicDataIdentifier)标识的周期发送的数据记录值。该服务并非高频使用服务。
- 在初始响应报文之后,有两种方式来发送周期数据响应报文给诊断工具。
- 该服务没有 sub-function 参数,周期读取数据服务可以命令ECU周期性返回某个数据。
- 该服务的DID都位于0xF200-0xF2FF范围内,所以该服务的请求报文中不包含DID完整的两字节,而是只包含低字节,省略了高字节0xF2.
- 随着时间流逝,指定的DID的值也会随之改变的场合,可以使用2A来周期性读取,以观察在一段时间和周期内DID的变化情况。
二.报文格式
1)请求报文
- PeriodicDataIdentifier第一个周期数据标识符在请求报文中强制使用。如果传输模式为 stopSending,可以为了终止所有调度中的周期数据标识符,不使用周期数据标识符,诊断工具也可以明确的定义一个或多个要终止的周期数据标识符。
- 传输模式的参数(transmissionMode)定义见下表
- 由周期数据标识符组成的数据标识符需被
“通过数据标识符读数据服务(22h 服务)”支持。 - 为了避免多帧传输,每个周期数据标识符代表参数的最大数据长度为5字节,即保证整个肯定响应报文长度不会超过一个 CAN 帧所能容纳的长度。
Hex(bit6~0) | 描述 | Description | 说明 |
---|---|---|---|
01 | 低速率发送 | sendAtSlowRate | 在低速下发送要求的数据记录信息来响应请求报文 |
02 | 中速率发送 | sendAtMediumRate | 在中速下发送要求的数据记录信息来响应请求报文 |
03 | 高速率发送 | sendAtFastRate | 在高速下发送要求的数据记录信息来响应请求报文 |
04 | 终止发送 | stopSending | ECU终止发送周期性/重复性的肯定响应报文 |
2)初始响应
- 在收到除stopSending以外的 ReadDataByPeriodicIdentifier 请求时,服务器应检查条件是否正确以执行服务。
- 如果条件正确,则服务器应发送肯定的响应消息,仅包括服务标识符。一旦服务器通过肯定的响应接受了初始请求消息,服务器将永远不会发送否定的响应消息。
3)后续肯定响应
- 对于请求报文中每个支持的周期数据标识符,ECU需单独发送响应报文。
- 周期数据标识符为1字节数据, 其是F200h~F2FFh 数据标识的低字节,此范围是特地预留给该服务的。例如:如果周期数据标识符为E3h,则实际的数据标识符为F2E3h。
- 不允许出现重复相同的周期标识符,如果诊断工具违背了这一规则,ECU应该只接收其中的一个。
- dataRecord的格式和定义应特定于车辆制造商,并且如果服务器支持,则可以包括模拟输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。
- 在获取到肯定响应消息(initial positive response)之后,对于包含相关dataRecord参数的每个periodicDataIdentifier,服务器应访问其指定的记录数据元素,并在单独的服务肯定响应消息中传输其值。
6. ISO14229中定义了两种类型的周期性数据响应消息,方便在初始肯定响应消息之后将 periodicDataIdentifier 数据传输到客户端。
7. 类型1:包括服务标识,periodicDataIdentifier的回显和periodicDataIdentifier的数据;
8. 类型2:包括 periodicDataIdentifier 和 periodicDataIdentifier的数据。