1. 概述
周期读取数据服务可以命令ECU周期性返回某个数据。
该服务的DID都位于0xF200-0xF2FF范围内,所以该服务的请求报文中不包含DID完整的两字节,而是只包含低字节,省略了高字节0xF2.
ECU发送数据的周期长短有三种模式:SlowRate,MediumRate,FastRate,每种模式发送数据具体的周期时间由用户自定义,ECU用哪种周期模式发送由指令中的transmissionMode参数控制。在同一时段内,一个DID只能处于某一种周期模式;不同DID是否支持不同的周期模式由用户自定义。
诊断仪发送诊断请求后,如果ECU内部条件满足,则会返回一条只带有服务ID的肯定响应,之后周期性返回DID+数据,不再带有服务ID。ECU一旦发送了肯定响应,就不应再发送否定响应。
当ECU中只有一个DID数据待调度的时候,发送周期就是指两条带有数据的响应之间的间隔时间。但对于ECU中有多个DID的数据待调度发送的时候,同一DID数据之间的间隔时间取决于以下三个因素:
① 周期性任务的调起周期;
② 任务每次调起时能发送的同一地址的诊断响应数量(例如相同ID的CAN报文的数量);
③ ECU支持的能够并行的DID的最大数量。
举个例子:任务的调起周期是10ms,每次任务调起只能发送一条同一ID的CAN报文,定义数据发送周期fastRate模式的周期是10ms,那么当诊断仪请求一个DID时,ECU应10ms发送一条该DID的数据;当诊断仪请求两个DID时,两个DID应在任务调起时