ISO 15765协议是一种CAN总线上的诊断协议。具体介绍可以参考:https://en.wikipedia.org/wiki/ISO_15765-2
1.通过解码器与ECU通信,通过命令解析进入系统,请求具体的PID
请求支持PID 01~20
00 00 07 DF 02 01 00 00 00 00 00 00
在请求 01~20 段到底支持哪些 PID 时, 回应消息中分了 4 个字节来描述支持, 每个字节正好描述 8 个 PID 的支持情况,如:在 #4 描述的是第一个 8 个 PID,如果 BF ( Hex)就是 10111111( Bin ) 1 表示支持, 0 表示不支持, MSB 对应的 01,LSB 对应着 08,可知 01,03~08 是支持的,而 02 不支持。在请求 21~40,41~60 等其他段同理。
2.读取故障码
用自己开发的软件结合DPA5设备发送读码(03)的命令,用CAN分析仪侦测到了数据如图所示:
每个故障代码需要2个字节来描述。故障代码的文本描述可按如下方式解码,故障代码中的第一个字符由第一个字节中的前两位确定,比如说22 02 ,22(00 10 00 10) ->P2202
自己手动通过CAN分析仪发送:收到的帧数不对,原因可能是在DPA5设备中,可能固定写死了多帧读取的命令。
必须加上一帧:多帧命令(30),并且注意发送的时间间隔大小,自己做开发的过程中可能会用到。
3.获取车辆的VIN码
第一个49 02 01 中01表示收到的第一个消息,由17个字节(32 47 31 57 42 35 38 4E 33 36 39 31 39 33 35 33 30)组成。
由HEX转ASCII解释得到VIN码:2G1WB58N369193530.
更多的mode+pid的模式命令组合参考:https://en.wikipedia.org/wiki/OBD-II_PIDs很详细的介绍了相关的指令集合以及相关的报文解析。