当前位置: 首页 > news >正文

汽车DTC故障内码与标准故障码的解析与转换

目录

一、故障内码与标准故障码的解析

(1)故障内码的信息格式与解析

(2)故障内码中DTC状态的解析

(3)故障内码与标准故障码之间的对应关系

二、故障内码与标准故障码的转换代码


一、故障内码与标准故障码的解析

(1)故障内码的信息格式与解析

通过UDS读出来的DTC信息格式:

 例如:

TX:03 19 02 09 00 00 00 00 

RX:11 CF 59 02 FF 31 54 06

RX:21 AF 30 3C 13 AF 30 3D

其中:31 54 06 AF对应上述DTC故障内码的格式

  • DTC High Byte:31
  • DTC Middle Byte:54
  • DTC Low Byte:06 
  • DTC Status:AF

注:DTC Low Byte用于描述故障种类与子类型

(2)故障内码中DTC状态的解析

当DTC Status = 0x24时候的对应位解释:

(3)故障内码与标准故障码之间的对应关系

  • 标准故障码中的第一位表示所属系统:

  •  标准故障码的第二位表示故障类型:

  • 标准故障码的第三位表示故障所属子系统
  • 标准故障码的第四、五位表示具体故障对象和类型

例如:

标准故障码:U10BD 83 

转换成故障内码:0xD0BD83

二、故障内码与标准故障码的转换代码

用Python根据上述规则写的转换代码

dtc_hex2str_15_14_bit= {"00" : "P", # Powertrain  动力系统故障"01" : "C", # Chassis     底盘故障"10" : "B", # Body        车身故障"11" : "U", # Network     网络故障
}dtc_str2hex_15_14_bit= {"P" : "00",  "C" : "01","B" : "10","U" : "11",
}class DtcAnalyser(object):def __init__(self):passdef str2hex(self, dtc_code : str) -> str:# DTC High Byte   bit15_14_str = dtc_str2hex_15_14_bit.get(dtc_code[0])            # 故障所属系统bit13_12_str = bin(int(dtc_code[1], 16))[2:].zfill(2)            # 故障类型:0:ISO/SAE标准故障, 1:制造商自定义故障码, 2:ISO/SAE预留, 3:ISO/SAE预留bit11_8_str =  bin(int(dtc_code[2], 16))[2:].zfill(4)            # 故障所属子系统 # DTC Middle Bytebit7_0_str =   bin(int(dtc_code[3:5], 16))[2:].zfill(8)          # 故障对象和类型# DTC Low Bytedtc_low_byte_str = bin(int(dtc_code[5:], 16))[2:].zfill(8)# Decode to Binararydtc_bin_str = bit15_14_str + bit13_12_str + bit11_8_str  + bit7_0_str + dtc_low_byte_strreturn hex(int(dtc_bin_str, 2))def hex2str(self, dtc_hex : str) -> str:# Str filterdtc_hex_str = dtc_hex.replace('0x', '') if '0x' in dtc_hex else dtc_hex# To Binararydtc_bin_str = bin(int(dtc_hex_str, 16))[2:].zfill(24)            # 故障码一般由3个字节组成# Decode to DTCdtc_bit1_str = dtc_hex2str_15_14_bit.get(dtc_bin_str[0:2])dtc_bit2_str = str(int(dtc_bin_str[2:4], 2))dtc_bit3_str = str(int(dtc_bin_str[4:8], 2))dtc_middle_low_str = dtc_hex_str[2:]dtc_code_str = dtc_bit1_str + dtc_bit2_str + dtc_bit3_str  + dtc_middle_low_strreturn dtc_code_strif __name__ == "__main__":dtc_code_str = "U10BD83"dtc_hex_str = "0x318F13"dtc_analyser = DtcAnalyser()                                                                                                                                                                                                                             print("new:%s"%(dtc_analyser.str2hex(dtc_code_str)))print(dtc_analyser.hex2str(dtc_hex_str))
http://www.lryc.cn/news/9244.html

相关文章:

  • 零基础学习测试还是开发?
  • 如何加入new bing候补名单
  • 中国天气——西风带环流和寒潮
  • 2022黑马Redis跟学笔记.实战篇(四)
  • Allegro中如何删除多余D码操作指导
  • 学生投票系统-课后程序(JAVA基础案例教程-黑马程序员编著-第三章-课后作业)
  • 初始化一个列表python
  • 【electron】webview嵌入页面发送消息给父级页面
  • Whids:一款针对Windows操作系统的开源EDR
  • 初级调色转档CameraRaw
  • Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存
  • 成为 Seatunnel 源码贡献者保姆级教程
  • MySQL的索引视图练习题
  • 【C++ Primer Plus】第四章:复合类型
  • 做外贸,你不能不懂的外贸流程知识
  • 日本机载激光雷达测深进展(一)日本启动测量90%沿岸水深项目
  • MySQL数据库调优————创建索引的原则和索引失效及解决方案
  • 设计师都在看的全球设计网站,你居然还不知道!
  • c++:缺省参数,函数重载
  • 深度学习算法面试常问问题(二)
  • 美国CPC认证是什么?儿童玩具亚马逊CPC认证审核有哪些问题?
  • 恭喜! SelectDB 五位开发者成为 Apache Doris 新晋 PMC 成员和 Committer!
  • 数据库面试题
  • [USACO2022-DEC-Bronze] T2 Feeding the Cows 题解
  • Unity法线贴图原理理解(为什么存在切线空间?存的值是什么?)
  • 【JavaWeb】传输层协议——UDP + TCP
  • C++ 中是用来修饰:内置类型变量、自定义对象、成员函数、返回值、函数参数
  • av 146 002
  • 小红书用户画像 | 小红书数据平台
  • 【STM32笔记】低功耗模式下GPIO、外设、时钟省电配置避坑