前言
本文主要对UDS故障诊断中DTC的形成过程进行分析,以加深理解。
DTC和故障的关系
首先,需要明确的是,不能 简单理解为:故障=DTC。
因为,DTC分为多个状态位,是动态变化的过程。
DTC的三个状态
故障的形成过程中,有三个状态位,顺序为:
#mermaid-svg-VOuBAQgvEVaO9jFM{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-VOuBAQgvEVaO9jFM .error-icon{fill:#552222;}#mermaid-svg-VOuBAQgvEVaO9jFM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VOuBAQgvEVaO9jFM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VOuBAQgvEVaO9jFM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VOuBAQgvEVaO9jFM .marker.cross{stroke:#333333;}#mermaid-svg-VOuBAQgvEVaO9jFM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VOuBAQgvEVaO9jFM p{margin:0;}#mermaid-svg-VOuBAQgvEVaO9jFM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM .cluster-label text{fill:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM .cluster-label span{color:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM .cluster-label span p{background-color:transparent;}#mermaid-svg-VOuBAQgvEVaO9jFM .label text,#mermaid-svg-VOuBAQgvEVaO9jFM span{fill:#333;color:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM .node rect,#mermaid-svg-VOuBAQgvEVaO9jFM .node circle,#mermaid-svg-VOuBAQgvEVaO9jFM .node ellipse,#mermaid-svg-VOuBAQgvEVaO9jFM .node polygon,#mermaid-svg-VOuBAQgvEVaO9jFM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VOuBAQgvEVaO9jFM .rough-node .label text,#mermaid-svg-VOuBAQgvEVaO9jFM .node .label text,#mermaid-svg-VOuBAQgvEVaO9jFM .image-shape .label,#mermaid-svg-VOuBAQgvEVaO9jFM .icon-shape .label{text-anchor:middle;}#mermaid-svg-VOuBAQgvEVaO9jFM .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-VOuBAQgvEVaO9jFM .rough-node .label,#mermaid-svg-VOuBAQgvEVaO9jFM .node .label,#mermaid-svg-VOuBAQgvEVaO9jFM .image-shape .label,#mermaid-svg-VOuBAQgvEVaO9jFM .icon-shape .label{text-align:center;}#mermaid-svg-VOuBAQgvEVaO9jFM .node.clickable{cursor:pointer;}#mermaid-svg-VOuBAQgvEVaO9jFM .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-VOuBAQgvEVaO9jFM .arrowheadPath{fill:#333333;}#mermaid-svg-VOuBAQgvEVaO9jFM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VOuBAQgvEVaO9jFM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VOuBAQgvEVaO9jFM .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VOuBAQgvEVaO9jFM .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-VOuBAQgvEVaO9jFM .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VOuBAQgvEVaO9jFM .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-VOuBAQgvEVaO9jFM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VOuBAQgvEVaO9jFM .cluster text{fill:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM .cluster span{color:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VOuBAQgvEVaO9jFM .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-VOuBAQgvEVaO9jFM rect.text{fill:none;stroke-width:0;}#mermaid-svg-VOuBAQgvEVaO9jFM .icon-shape,#mermaid-svg-VOuBAQgvEVaO9jFM .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VOuBAQgvEVaO9jFM .icon-shape p,#mermaid-svg-VOuBAQgvEVaO9jFM .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-VOuBAQgvEVaO9jFM .icon-shape .label rect,#mermaid-svg-VOuBAQgvEVaO9jFM .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VOuBAQgvEVaO9jFM .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-VOuBAQgvEVaO9jFM .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-VOuBAQgvEVaO9jFM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 连续失败
持续存在
TestFailed
PendingDTC
ConfirmedDTC
可知,故障也是一步步升级才真正的形成。
TestFailed
TestFailed(发现异常):只表征本次检测失败。并不代表故障已经成立。
其实也很好理解,汽车作为一个大件电子产品,特别是在恶劣的运行工况下,会受到各种环境因素干扰,难免会出现如某帧CAN报文丢失等问题。如果仅在每个特定问题出现一次就抛出故障,那么各种报警文言和语音满车飘,可以想象驾驶体验肯定会很差。
就像MCU处理按键一样,汽车故障诊断的架构方案中也会增加"消抖"机制,如:某个特定问题持续出现N帧/N秒,才真正报故障。
PendingDTC
PendingDTC(怀疑有问题):持续检测到失败,且次数超过了设置的阈值,就会设置为PendingDTC状态。
此时,故障诊断设备已经能够读到对应故障的DTC,但对于实车来说还未达到点亮故障灯、播报故障提醒的程度,因为还需要进一步确认。
ConfirmedDTC
ConfirmedDTC(正式确诊):故障持续存在,且满足了确认条件,就会设置为ConfirmedDTC状态。
此时,表示故障被确认,已正式成立。因此,也可以理解:ConfirmedDTC=真正故障码。