文章目录
- 功能简介
- PID 的功能
- 请求和响应
- 1、read-supported PIDs
- 1.1、请求
- 1.2、肯定响应
- 2、read PID value
- 1.1、请求
- 1.2、肯定响应
- 3、同时请求多个PID
- 3、同时读取多个PID数据
- Parameter definition
- 报文示例
- 1、单个PID请求和读取
- 2、多个PID请求和读取
功能简介
01服务,即 Request current powertrain diagnostic data
(读取动力系统当前的诊断数据)服务,比如某个传感器的状态、发动机转速、DTC数量、故障指示灯是否亮起等
这些数据都是需要预先定义好的,如何进行定义呢,在ISO标准规定了一些参数标识符即PID(parameter Identifiers),每个PID代表一个变量参数。
OBD诊断中,ECU 至少应支持服务0x01
和 PID 0x00
PID 的功能
PID 的大小占一个字节。
ISO其实定义了部分PID参数,其余的值都保留,并不要求所有的主机厂把这些参数都实现,也就是说PID参数是可以选择支持的。
那么ECU到底支持哪些PID?
实际上,PID分为两类,一类用于表示具体的数据,而另一类则用于指出该ECU支持哪些PID。
如PID 0x00\0x20\0x40\0x60\0x80等就是用来查询到底支持哪些服务的, 读取其中一个PID后ECU会返回4个字节(32 bit)的结果,依次对应ECU对其后 32 个PID是否支持。具体如何使用如下:
- PID 0x00 用于查询(0x01~0x20)之间支持的PID参数
- PID 0x20 用于查询(0x21~0x40)之间支持的PID参数
- PID 0x40 用于查询 (0x41~0x60)之间支持的PID参数
- 以此类推后面的0x60 0x80
请求和响应
1、read-supported PIDs
1.1、请求
基本格式
<SID> + <PID>
1.2、肯定响应
基本格式:
<SID + 0x40> + <PID> + <支持的 PID PID PID PID>
2、read PID value
1.1、请求
基本格式
<SID> + <PID>
1.2、肯定响应
基本格式:
<SID + 0x40> + <PID> + <返回数据>
3、同时请求多个PID
ECU应支持最多六(6)个PID的请求。
请求消息可以多次包含相同的PID。ECU应处理每个PID作为单独的参数,并根据请求经常用每个PID的数据进行响应(对于同一PID返回的数据可能不同)。
响应消息中PID的顺序不需要与请求消息中的顺序相匹配。
3、同时读取多个PID数据
Parameter definition
SAE J1979-DA specifies the interpretation of the data record of supported PIDs.
报文示例
1、单个PID请求和读取
第 1 步,向车辆请求支持的PID
第 2 步,Request PID from vehicle
PID 01h: Number of emission-related powertrain DTCs and MIL status.
2、多个PID请求和读取
第 1 步,向所有ECU请求支持的PID
第 2 步,读取多个支持的PID数据