在前面的文章已经对故障码和各个诊断服务进行了介绍,今天就是对诊断服务和故障码的进一步完善,对14服务和19服务展开跟大家介绍一下。了解了故障码的作用,那我们如何对故障码进行处理呢?以及如何获取故障码?故障码如何测试?带着这些疑问我们往下看。
介绍风格还是跟上一篇的一样方便已经阅读过之前文章的朋友一起学习,依然是从功能和命令格式两方面对$14/$19进行介绍。
14服务:
功能:对故障码进行擦除;这个功能主要用在车辆维修之后,已存在的故障修复后,但是故障码依然存在,这时候14服务就可以使用了,进行立即清除命令格式(请求&应答):
诊断请求:
#1:14服务
#2 - 4:groupOfDTC,一般使用默认值FF FF FF;代表清除所有故障码;此参数包含一个3字节的值,指示DTC组(例如动力传动系、车身、底盘)或要清除的特定DTC。参考Table D.1
#5:MemorySelection 当检索DTC时,该参数应用于寻址相应的用户定义DTC存储器,一般各个主机厂都不使用。
肯定应答:
#1:对34服务肯定应答74
否定应答:
19服务:
功能:读取故障码;如果更详细点的话,那就是获取故障码相关的所有信息,比如发生故障的时间、车速、转速、电压等等,又或者获取车辆支持故障码的数量等信息,都在19服务中;如果后续有时间可以详细地聊,今天只是简单介绍下19服务。
命令格式(请求&应答):
诊断请求:
注:由于19服务服务支持的子服务实在太多,这里我仅列出常用的四个服务,基本能够满足大部分主机厂规范。
肯定应答:
1902/0A肯定应答
1903肯定应答
1904肯定应答
肯定应答:
上面描述的主要是19服务下的子服务02/03/04/0A几个子服务,这也是大部分主机厂都要支持的子服务:
1、02子服务主要用于故障码的上报、恢复、老化等功能测试通过19 02 + maskstudio,被测对象就会将存储在存储器中的故障码状态位与maskstudio进行与运算,任何一个bit位与为1,就会上报该故障码。
2、0A子服务比较简单,直接使用19 0A命令读取,被测件就会直接返回它所支持的所有故障码+maskstudio给tester,无其他特殊功能
3、03子服务主要是获取某个故障码的存储记录数量,其实就是在我们通过19 0A或者19 0A识别到被测件支持的故障码及状态位后,然后通过19 03 + DTC获取该DTC触发过多少次以及记录的位置,为后续04子服务做准备
4、04子服务就是读取某个故障码的记录信息,包括但不限于发生故障时的车速、转速、电压等信息。
下图是故障码状态位(MASKstudio),通常我们使用的位是bit0、bit3这两个状态位,即当前故障码是当前故障还是历史故障码,一般来说,是当前故障码,一定是历史故障,但是历史故障不一定是当前故障;至于其他的故障码状态位看各个供应商或主机厂是否需要以及应用场景,一般来说对于测试人员来说只需要加上即可,不对其进行特殊关注。