​详解破解诊断故障代码(DTC)

2024-04-23 06:11 来源:网络 点击:

详解破解诊断故障代码(DTC)

你也许很难理解,为何只使用两个状态的操作便能进行信息的传送及存储,但是你的确已经知道有这种系统。一个早期使用数字二进制位编码的例子就是以电子格式发送信息的电报,它使用的是莫尔斯电码。莫尔斯电码使用短音(0)或长音(1)的二进制的位传递数据。就是依靠操作这两个状态,电码允许传输或存储非常复杂的信息。

详解破解诊断故障代码(DTC)-

计算机使用二进制的代码或基2系统来传递信息。基2系统有时会使用很长的编码信息或位宽度,于是程序员想出了一个缩短此编码的方法,这种方法称之为基十六进制系统(图2)。它代替基于10的计数系统,如十进位制。十六进制的系统使用以16为基的计数规则来传递信息。在十六进制的系统应用中,我们使用数字0~9和字母A~F来对信息进行编码。你可以看到如图2所示的十六进制编码的读取示例,它是从发动机控制单元模块模式6数据中读取的。

无论是选择哪种方式的编码或语言来操作计算机,它都是基于一组由中央处理单元(CPU)执行的指令。CPU包含成千上万个晶体管和逻辑电路,它们被封装在一个很小的设计空间内,我们称之为集成电路(IC)。被封装的晶体管支持决策逻辑电路使用已编码的信息(也可称之为程序)进行操作,这些决策逻辑电路在操作执行该编码信息时,将会产生一个可以预测的输出结果。

由于结果可以预测,我们可以通过写入一个逻辑路径以获得期望的输出结果。CPU的任务是执行一系列存储的指令序列,正如某个程序所表示的那样。该程序将一层层地运行主指令,同时还要一层层地运行多个子程序、循环、条件和异常处理指令。CPU首先获得指令信息(取指令),对他们进行解码并执行批令,所有这一切都基于集成电路(IC)的物理层及程序控制流的进程调度。而计算机的集成电路和程序指令集的运作还要取决于控制器需要对当前的哪种电控系统进行电控管理,例如发动机管理系统、车轮防抱死控制系统、空调控制系统等。

无论何种控制系统类型的应用,程序将会协同CPU工作以帮助CPU去执行任务。第一项任务是启动控制和操作设备的基本程序。在其中一个子程序中,CPU将对其内部电路执行自检。自检的范围取决于程序员的决定,程序员会考虑针对有必要验证的设备运行进行相关的程序设计。而且这也是非常重要的,因为程序员设计电路自检基于一个电路中的有效性分析——什么是好的电路和什么原因可能会导致电路的运行失败。

要做到这一点,程序员可通过写入一组指令,允许设置检测点或阈值在定义的时间段内高于或低于设定的值,如果这些预定义的检测点超过这一范围,程序中的代码将显示状态值为“true”,相应的输出结果就是发出指令激活警告灯,并设置出相应的一个诊断故障代码(DTC)。如果测试程序用来检查CPU,我们可能读取到的DTC信息为“内部的失败”,这时诊断故障树会指导你更换控制单元。这里需要理解的是,系统指令也许并不能对下面所述的类似问题做出正确的解释:如有人将一个额外的保险丝或继电器放在备用的位置,或者由此原因可能引起的电路短路。因为这个额外的电路也许当前正申请使用与CPU相关的电源,由此可以使程序正在监控CPU内部电压产生相应的变化,在这种情况下,程序往往会设置一个虚假的DTC。

一旦该子程序内部电路自测已运行并通过,程序将启动下一个子程序,实现对它所控制系统基本电路的检测。每个子程序对它所要测试电路的特征都进行相应信息标记。这里给出的一个例子是P0122。P0122具有一个指令集,将以检查动力传动系统节气门位置传感器(TPS)持续时间1s的小于0.2V的电压作为程序标签。即如果检测点的电压低于0.2V达到1s,程序会设置状态值等于“true”,标记为P0122的DTC将被存储。