破解诊断故障代码(DTC)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
破解诊断故障代码(DTC)
如果您想了解计算机电控车辆的运作模式,也许本文就是一个开始学习的好地方――了解车载计算机是如何做出决定的。事实上,所有发生的一切都来自于神奇的“1”和“0”、打开或关闭、高或低、是或否。很简单,对吗?
三极管,由德?福雷斯特(Lee De Forest)在上个世纪初期发明,是第一个电信号放大器。基于真空管技术,三极管提供了电流的通或断的电路功能。现在,我们不再需要一个机械开关来控制电路,利用电压的作用就可以实现同样的结果啦,这种新的控制策略标志了现代电子技术发展的起始。
三极管是将电压从低电位转换到高电位的应用。曾经是早期电话、收音机和计算器技术发展的重要基础。在上世纪五十年代初期,一种基于半导体结构的新技术应运而生,使我们在需要低功率放大的情况下可用晶体管替换三极管实现这一功能。当该晶体管处于完全饱和状态时,能把一个电路接通或断开,由此可用于控制相关电路的工作或者将信息存储在电路中。
通过晶体管的开/关状态的不同组合,即表示为代表近零电压的低位(O)与代表电压源高电压的高位(1)的组合,可以实现信息在一个电路中的传输或存储。这种使用0和1的
数字逻辑关系是采用布尔逻辑完成的。设置这种电路,可以把一个或多个逻辑输入组合为单一的逻辑输出。我们把这种电路称之为逻辑门(图1)。电控单元配置有多种逻辑门,其中包括:与门(AND gate)、与非门(NAND gate)、或门(OR gate)、或非门(NOR gate)、异或门(EXCLUSIVE OR gate)和同或门(EXCLUSIVE NOR gate)。
为了处理数据,要把很多逻辑电路相互结合使用。这些0和1组合可用于建立一个逻辑判定电路,而这个电路可用来以数字的格式传达信息。所有现代微处理器都采用数字逻辑电路处理数据。每个0或1称为一个位的信息,最大信息量的调用和存储只需运用两种可能的状态。这两个状态可能被定义为关或开、否或是、假或真。在计算机中。这两个状态被指定为0和1的二进制数字。使用四位组合传达信息,被称之为半字节;如果八位应用时,它被称为一个字节。
你也许很难理解,为何只使用两个状态的操作便能进行信息的传送及存储,但是你的确已经知道有这种系统。一个早期使用数字二进制位编码的例子就是以电子格式发送信
息的电报,它使用的是莫尔斯电码。莫尔斯电码使用短音(0)或长音(1)的二进制的位传递数据。就是依靠操作这两个状态,电码允许传输或存储非常复杂的信息。
计算机使用二进制的代码或基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将被存储。
基于检测电路的需要,每个程序员对认为重要的电路编写程序指令集。电路测试根据时间条件设计检测点,而且要把检测点分配到每个单独的电路。这些检测点被编程为电路正常运行电压上方和下方的某个范围值。这些初始化测试的主要目的是找到在系统启动过程中产生严重故障的某个电路。如果一个电路在预定的时间段中检测设置点值与标准值不符,程序将设置状态等于“true”,并会采取通过适当的程序指令去执行应急模式运行。相应的。指令系统可能会在挂起列中设置DTC,或者设置一个真正的DTC,同时激活打开该车辆故障报警灯。