【车载开发系列】诊断故障码DTC的格式标识符

【车载开发系列】诊断故障码DTC的格式标识符

一.DTC格式标识符概念

DTCFormatIdentifier规定了服务器所报告的DTC格式。它的取值请参照下面的列表。给定的服务器仅允许支持一个DTCFormatIdentifier。
通过DTCFormatIdentifier,报告了DTC格式及解码方法等信息。
它规定使用DTCHighByte高位字节,DTCMiddleByte中位字节,DTCLowByte低位字节进行解码。DTCRecord(DTC记录)和DTCAndStatusRecord(DTC和状态记录)当中的DTC编码方式就是参照了DTC格式标识符。

ByteValue Description说明
0x00SAE_J2012-DA_DTCFormat_00根据ISO15031-6规范,本参数值规定了服务器所报告DTC的格式
0x01ISO_14229-1_DTCFormat本参数定义了服务器所报告DTC的格式
0x02SAE_J1939-73_DTCFormat根据SAEJ1939-73,本参数定义了服务器所报告DTC的格式
0x03ISO_11992-4_DTCFormat根据ISO_11992-4,本参数定义了服务器所报告DTC的格式
0x04SAE_J2012-DA_DTCFormat_04本参数定义了服务器所报告DTC的格式,见ISO27145-2规范
0x05 - 0xFFISO/SAE reservedISOSAE已保留

注1:该标识在ISO14229-1中附件D-D.4中定义
注2:SAE是美国汽车工程师协议
注3:DTC格式标识符是强制的必须指定的

在OBD诊断当中用的最多的格式是SAE_J2012-DA_DTCFormat_00
在UDS诊断当中用的最多的格式是ISO_14229-1_DTCFormat
SAEJ1939协议是由美国汽车工程师协议(SAE)基于CAN2.0B协议制定的主要针对商用车的CAN总线通讯协议;

二.DTC格式标识符的运用

不同车企所支持的子功能是不同的,当然支持的DTC格式标识符也会不一样。

1)DTCByXXXXMask通过掩码获得DTC情报

在SID$19以下四个子功能当中,DTCFormatIdentifier的值就是通过肯定响应从服务器端通知客户端的。

reportType = [ 
 reportNumberOfDTCByStatusMask = 0x01;
 reportNumberOfDTCBySeverityMaskRecord = 0x07; 
 reportNumberOfMirrorMemoryDTCByStatusMask  = 0x11;
 reportNumberOfEmissionsOBDDTCByStatusMask = 0x12;
]

在这里插入图片描述

2)按掩码记录报告WWH OBD DTC

reportWWHOBDDTCByMaskRecord(0x42)子功能。它规定了服务器应向客户端传输与客户端定义状态掩码和严重性掩码记录相匹配的WWH OBD DTC列表
及其对应状态和严重性信息。
在这个子功能当中,DTCFormatIdentifier只返回两种类型的Format。

DTCFormatIdentifier = [ 
 SAE_J2012-DA_DTCFormat_04 
 SAE_J1939-73_DTCFormat
]

在这里插入图片描述

3)报告永久性状态的WWH OBD DTC

它规定服务器向客户端传输状态为永久DTC的WWH OBD DTC列表。
在这个子功能当中,DTCFormatIdentifier也只返回两种类型的Format。

DTCFormatIdentifier = [ 
 SAE_J2012-DA_DTCFormat_04 
 SAE_J1939-73_DTCFormat
]

在这里插入图片描述

三.DTC格式标识符作用

ISO15031-6是排放相关诊断(OBD)的故障码定义,它引用了SAE J2012,其中提到OBD DTC是2字节,但一些新的诊断通讯标准中定义的DTC是3字节,如ISO27145,解析方式有所不同,这个时候通过DTC格式标志字来区分解析方式。
正因为上面的原因,如果没有DTC格式标识符,那么我们就无法成功解析出DTC中的内容来了。

### 关于DTC快照标识符的定义与用途 #### 定义 DTC(Diagnostic Trouble Code)快照标识符是一种用于存储和检索特定时刻车辆运行数据的技术机制。它通常被设计为在ECU(Electronic Control Unit)检测到某个故障并生成相应的DTC时,捕获一组相关的实时参数值,并将其保存下来以便后续分析[^1]。 这些快照可以提供关于触发该DTC的具体条件的信息,从而帮助技术人员更精确地定位问题的根本原因。例如,在某些情况下,仅知道发生了哪个DTC可能不足以完全理解故障的本质;而通过查看对应的快照数据,则能够获得额外的关键细节来辅助诊断过程。 #### 使用场景 以下是几个典型的使用场景: - **维修车间中的应用** 当汽车送至修理厂进行检修时,技师可以通过读取OBD-II接口上的DTC及其关联的快照数据来进行深入排查工作。这使得他们不仅可以看到有哪些错误存在,还能了解到当时发动机转速、车速以及其他传感器数值等情况如何影响到了系统的正常运作状态[^2]。 - **远程监控系统内的集成** 对于现代车队管理解决方案而言,利用车载通信模块定期上传包括但不限于DTC在内的各类健康指标变得越来越普遍。如果某辆车报告了一个新的DTC事件,那么其伴随产生的快照也可能一并传输回中央数据库供进一步评估处理。这样做的好处在于允许运营方提前采取预防措施以减少意外停机时间的发生概率[^3]。 - **软件开发阶段测试验证环节的应用** 在新车型的研发周期里,工程师们会依赖模拟环境或者真实道路试验收集大量样本数据用作算法优化的基础资料之一。其中涉及到对各种潜在异常状况建模的过程当中,合理运用DTC连同它们各自的快照无疑是非常有价值的参考资料来源。 #### IT术语解释 从信息技术角度来看,“快照”这一概念并不局限于汽车行业领域之外还有广泛适用范围——比如文件系统备份技术里面提到过类似的名词表达方式。“DTC快照标识符”的本质实际上就是一种索引标签或者是地址指针形式的存在物,指向那些由特殊时机下采集所得的数据集合体位置所在之处。因此可以说它是连接抽象意义上的“故障描述对象”以及具体物理层面储存介质之间桥梁作用的重要组成部分。 ```python class DTCSnapshot: def __init__(self, dtc_code, timestamp, parameters): self.dtc_code = dtc_code # 故障编号 self.timestamp = timestamp # 记录的时间戳 self.parameters = parameters # 实时参数列表 def get_snapshot_data(self): return { 'dtc': self.dtc_code, 'time': self.timestamp, 'params': {key:value for key,value in self.parameters.items()} } # 示例实例化一个DTCSnapshot类的对象 snapshot_example = DTCSnapshot( dtc_code="P0420", timestamp="2023-09-15T14:23:45Z", parameters={"EngineSpeed": 2500, "VehicleSpeed": 80} ) print(snapshot_example.get_snapshot_data()) ``` 上述代片段展示了一个简单的Python类`DTCSnapshot`的设计思路,它可以用来表示单个DTC快照的内容结构。此实现方法有助于程序员更好地理解和操作这类复杂的数据实体。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值