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

您所在的位置:网站首页 故障码p060608 汽车DTC故障内码与标准故障码的解析与转换

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

2024-07-06 03:30| 来源: 网络整理| 查看: 265

目录

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

(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:31DTC Middle Byte:54DTC 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): pass def 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 Byte bit7_0_str = bin(int(dtc_code[3:5], 16))[2:].zfill(8) # 故障对象和类型 # DTC Low Byte dtc_low_byte_str = bin(int(dtc_code[5:], 16))[2:].zfill(8) # Decode to Binarary dtc_bin_str = bit15_14_str + bit13_12_str + bit11_8_str + bit7_0_str + dtc_low_byte_str return hex(int(dtc_bin_str, 2)) def hex2str(self, dtc_hex : str) -> str: # Str filter dtc_hex_str = dtc_hex.replace('0x', '') if '0x' in dtc_hex else dtc_hex # To Binarary dtc_bin_str = bin(int(dtc_hex_str, 16))[2:].zfill(24) # 故障码一般由3个字节组成 # Decode to DTC dtc_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_str return dtc_code_str if __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))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3