通常来说,使用诊断仪读取控制器的故障码是最为方便快捷的,但俗话说,条条大路通罗马,方法不止是一种,接下来我将分享如何利用UDS诊断来获取故障码信息。
1、通过19服务获取故障码
利用ZCANPRO高级功能中的UDS诊断发送19 02 09,得到如下报文:
TX 03 19 02 09 00 00 00 00
RX 07 59 02 09 C0 77 88 08
那么从这段报文中我们可以看到C0 77 88 08,通过查阅诊断数据库可得,C0 77 88对应的DTC为U007788,表示P_CAN BUS off,然后08表示历史故障。
2、通过19服务获取故障快照
以P_CAN BUS off为例,通过UDS诊断发送19 04 C0 77 88 FF,得到如下报文:
首先看59 04 C0 77 88 08这段报文,59表示读取故障码信息相应服务标识符,04表示通过故障码报告故障码快照,C0 77 88 08表示存在P_CAN BUS off故障,该故障为历史故障。
接着分析下一段报文,01表示故障码快照记录编号,对应上图快照列表和扩展数据列表中的快照记录号0X01,06表示快照记录包含的标识符的个数是6个,分别为0x4703、0x4706、0x470A、0x470E、0x470F、0x4710。47 03对应着0X4703,表示ECU供电模式,通过上表可以看出,此快照的字节数为1,即47 03后1位,为02,对应着换算这一列中的ON。47 06对应0X4706,表示总里程,所占字节数为3,47 06后三位是00 0F BD,换算为十进制为4029,所以故障发生时车辆总里程为4029KM。47 0A对应0X470A,表示故障发生的时间,所占字节数为6,47 0A后6位是22 33 0F 07 09 17,分别代表秒、分、时、日、月、年,换算成十进制得34 51 15 7 9 23,即23年9月7日15时51分34秒。同理可得0x470E、0x470F、0x4710对应的数据。