admin 管理员组

文章数量: 1087834


2024年4月19日发(作者:batterystatusweak)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.0

(22)申请日 2012.11.30

(71)申请人 重庆邮电大学

地址 400065 重庆市南岸区黄桷垭崇文路2号

(72)发明人 黄智宇 陈倍新 冯辉宗 孙小芳 李宗华 李澌翰

(74)专利代理机构 重庆市恒信知识产权代理有限公司

代理人 刘小红

(51)

G05B23/02

权利要求说明书 说明书 幅图

(10)申请公布号 CN 102981501 A

(43)申请公布日 2013.03.20

(54)发明名称

一种基于XML的汽车ECU故障诊

断信息匹配方法

(57)摘要

本发明提出一种基于XML的汽车

ECU故障诊断信息匹配方法,本发明针对

需要对ECU故障诊断信息进行定期升级,

使用不便的问题,为每一个汽车厂商建立

故障诊断信息库采用XML语言编写并分

别存放在对应txt文件中,建立一个故障匹

配信息txt文件和一个数据流信息txt文

件,将故障诊断信息数据库存放到诊断仪

的外部存储器SD卡中,通过从SD卡中调

用和解析车厂的XML文件来匹配ECU故

障信息,可以方便实现诊断仪的故障码解

析和数据流信息解析的工作。当需要更新

某车厂的故障诊断信息时,只需将诊断仪

SD卡中该车厂对应的txt文件替换即可,

使用方便。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

1.一种基于XML的汽车ECU故障诊断信息匹配方法,其特征在于,根据各汽车厂

商定义的故障代码表、数据流信息说明表,建立相应车厂的故障诊断信息数据库,

存入诊断仪的SD卡中;故障诊断阶段,读取汽车故障码,查询SD卡中故障诊断

信息数据库,调用并解析故障诊断信息数据库中XML文件匹配ECU故障信息,

将读取的故障码逐行与XML文件故障匹配信息中存储的故障码作比较,找到相同

故障码所对应的故障信息;当执行对某车厂的汽车ECU读取数据流时,从诊断仪

SD卡中读取该车厂的数据流信息txt文件,解析出数据标识符DID填写到UDS服

务的读取数据服务请求里,向汽车ECU发送请求,解析出诊断仪SD卡中存储的

数据换算公式,换算出对应该DID数据的实际物理信息,输出到显示单元进行显

示。

2.根据权利要求1所述的故障诊断信息匹配方法,其特征在于,建立故障诊断信息

数据库具体为:建立一个故障匹配信息txt文件和一个数据流信息txt文件;文本

编辑器编辑故障匹配信息txt文件和数据流信息txt文件,依次将故障代码表中的

内容填写到故障匹配信息txt文件中建立故障码与故障信息对照表,将数据流说明

表中的一个数据标识符DID对应一个数据流描述、一个数据换算公式、一个数据

流单位存储到数据流信息txt文件中。

3.根据权利要求1所述的故障诊断信息匹配方法,其特征在于,当诊断仪读取单元

获取某车厂的汽车ECU的故障码时,从SD卡故障诊断信息数据库中读取存储该

车厂故障匹配信息txt文件,将ECU的故障码与故障匹配信息txt文件中的第一个

“=”后的故障码逐行作比较,当与某一行存储的故障码则匹配,读取故障码所对应

的故障信息,输出进行故障信息显示。

4.根据权利要求1所述的故障诊断信息匹配方法,其特征在于,解析数据标识符

DID的步骤具体包括:读取SD卡数据库中存储数据流信息txt文件,从第一行开

始,逐行对txt文件中存储的数据流信息进行解析,将每一行中的第一个“=”后的引

号内的数字提取出来,并转换成整数,分别存储在一个2字节大小的变量中。

5.根据权利要求1所述的故障诊断信息匹配方法,其特征在于,换算出对应该DID

数据的实际物理信息,输出到显示单元进行显示具体包括:将换算公式中参数“N”

替换成ECU响应的数据获得字符串表达式,将字符串表达式换算出对应该DID数

据的实际物理信息,按照“数据流名称:物理信息+单位”的字符串格式输出到显示

单元进行显示。

6.根据权利要求2所述的故障诊断信息匹配方法,其特征在于,故障码与故障信息

对照表用XML语言将故障码与对应的故障信息填写在一条XML语句中,在每一

行语句的第一个“=”后存放故障码,第二个“=”后存放故障码对应的故障信息;数据

流信息txt文件为:用XML语言将一条数据流信息填写在一行XML语句中,

XML语句的第一个“=”后存放DID,第4个“=”后为对应该DID数据的换算公式。

说 明 书

技术领域

本发明属于自动控制技术领域,具体是汽车电控单元故障诊断技术。

背景技术

目前汽车ECU(电控单元)故障诊断仪大部分是由大型汽车制造商自行设计,其

设计原理是将当前主流的汽车ECU故障信息全部打包进诊断仪的系统软件中并下

载到诊断仪的微控制器中,然后每隔一段时间将新增加的汽车故障信息添加到诊断

仪系统软件中,通过诊断仪系统升级的方式来实现让原先的诊断仪可以诊断更多车

系的汽车ECU故障信息。上述设计原理存在一种弊端,随着新厂商、新型号汽车

的不断生产,诊断仪的系统软件所包含的汽车ECU故障信息将会越来越多,占用

存储空间将会更大,不仅浪费的诊断仪存储空间,同时需要通过不断地升级诊断仪

系统软件来扩大诊断对象。其根本原因是没有找到一种好的将汽车ECU故障信息

与诊断仪的诊断信息进行信息匹配的方法。申请号为:2.4的中国发明

专利申请提出了一种优化汽车诊断仪用户操作界面而且降低诊断仪升级频率的方法,

所述的方法包括以下步骤:在诊断仪中建立全面的故障码、数据流、动作测试等数

据库,在子系统控制器中写入车型等相关配置信息,当与诊断仪通讯时,诊断仪即

可获取识别。这样,可以将传统的以车型分类的诊断仪操作界面更改成以子系统分

类的操作界面,达到简化诊断仪操作的目的。该专利方法存在以下几个弊端:

1.对于“在子系统控制器中写入车型等相关配置信息,当与诊断仪通讯时,诊断仪

即可识别”的方案,诊断仪的显示界面依赖于汽车的子系统控制器,若其他汽车厂

商生产的子系统控制器没有按照与诊断仪一致设计的诊断方法时,诊断仪将无法正

常工作。

2.对于“在诊断仪中建立全面的故障码、数据流、动作测试等数据库”的方案,由于

全球各大厂商所生产汽车的故障码、数据流等数据定义形式不同,而且很难将所有

厂商的数据都收集并汇总到一个数据库中,且这将使数据库所占容量非常大,浪费

存储空间,而且每天都有不同车系的新汽车被生产出来, 这个数据库需要每隔一

段时间更新一次,这就需要周期性地对诊断仪进行系统升级才能使诊断仪拥有最新

的数据库。虽然上述方法优化了诊断仪用户操作界面,部分降低了诊断仪升级频率,

但它还是没能解决故障信息数据库需要周期性地通过升级诊断仪程序才能得到更新

的问题。

本发明针对汽车ECU故障诊断仪的各车厂的故障诊断信息数据库需要通过周期性

地升级诊断仪程序才能得到更新的问题,提出了一种基于XML的汽车ECU故障

诊断信息匹配方法。

发明内容

为了解决汽车ECU故障诊断仪的各车厂的故障诊断信息数据库需要通过周期性地

升级诊断仪程序才能得到更新的问题,本发明提出了一种基于XML的汽车ECU

故障诊断信息匹配方法。该方法通过将诊断仪所需的故障诊断信息数据库从诊断仪

的系统程序中剥离出来,存放到诊断仪的外部存储器SD卡中,并且建立数据库,

数据库中每一个车厂的故障诊断信息存放到一个故障匹配信息txt文件和一个数据

流信息txt文件,故障匹配信息和数据流信息采用XML语言

(Extensible Markup Language,可扩展标记语言)编写并存放在txt文件中。如此,

当某个车厂的故障诊断信息需要更新时,只需将诊断仪SD卡中存放该车厂的故障

匹配信息txt文件和数据流信息txt文件替换即可,而不必再升级诊断仪程序。同

时,用XML语言编写的txt文件具有良好的扩展性和跨平台特性,可以方便地在

不同的操作系统平台上进行建立和更新诊断信息数据库文件。

本发明的技术方案具体包括:采用分割原理,将故障诊断信息数据库从诊断仪程序

中分离出来,存放到诊断仪的外部存储器SD卡中,建立数据库,数据库包括:为

每个汽车厂商建立一个故障匹配信息txt文件和一个数据流信息txt文件,以方便

管理和维护各车厂的故障诊断信息,故障匹配信息和数据流信息采用XML语言编

写并分别存放在对应txt文件中。当需要更新某车厂的故障诊断信息时,替换诊断

仪SD卡中该车厂对应的txt文件,本发明用XML语言将各车厂的故障诊断信息编

写并存放在txt文件中,以此建立各车厂的诊断信息数据库。此外,从SD卡中调

用和解析车厂的XML文件匹配ECU故障信息,通过此 方法可以方便实现诊断仪

的故障码解析和数据流信息解析的工作。具体为:

1.一种基于XML的汽车ECU故障诊断信息匹配方法,根据各汽车厂商定义的故障

代码表、数据流信息说明表,建立相应车厂的故障诊断信息数据库,存入诊断仪的

SD卡中;故障诊断阶段,读取汽车故障码,查询SD卡中故障诊断信息数据库,

调用并解析故障诊断信息数据库中XML文件匹配ECU故障信息,将读取的故障

码逐行与XML文件故障匹配信息中存储的故障码作比较,找到相同故障码所对应

的故障信息;当执行对某车厂的汽车ECU读取数据流时,从诊断仪SD卡中读取

该车厂的数据流信息txt文件,解析出数据标识符DID填写到UDS服务的读取数

据服务请求里,向汽车ECU发送请求,解析出诊断仪SD卡中存储的数据换算公

式,换算出对应该DID数据的实际物理信息,输出到显示单元进行显示。建立故

障诊断信息数据库具体为:建立一个故障匹配信息txt文件和一个数据流信息txt

文件;文本编辑器编辑故障匹配信息txt文件和数据流信息txt文件,依次将故障

代码表中的内容填写到故障匹配信息txt文件中建立故障码与故障信息对照表,将

数据流说明表中的一个数据标识符DID对应一个数据流描述、一个数据换算公式、

一个数据流单位存储到数据流信息txt文件中。当诊断仪读取单元获取某车厂的汽

车ECU的故障码时,从SD卡故障诊断信息数据库中读取存储该车厂故障匹配信

息txt文件,将ECU的故障码与故障匹配信息txt文件中的第一个“=”后的故障码逐

行作比较,当与某一行存储的故障码则匹配,读取故障码所对应的故障信息,输出

进行故障信息显示。解析数据标识符DID的步骤具体包括:读取SD卡数据库中存

储数据流信息txt文件,从第一行开始,逐行对txt文件中存储的数据流信息进行

解析,将每一行中的第一个“=”后的引号内的数字提取出来,并转换成整数,分别

存储在一个2字节大小的变量中。换算出对应该DID数据的实际物理信息,输出

到显示单元进行显示具体包括:将换算公式中参数“N”替换成ECU响应的数据获

得字符串表达式,将字符串表达式换算出对应该DID数据的实际物理信息,按照

“数据流名称:物理信息+单位”的字符串格式输出到显示单元进行显示。

本发明将故障信息数据库从诊断仪程序中剥离出来,存放在诊断仪的外部 存储器

SD卡中,并且数据库文件设计成每一个车厂的故障信息对应一个故障匹配信息txt

文件和一个数据流信息txt文件。如此,当汽车厂商定义了新的故障代码表或数据

流信息表后,用户只需将SD卡中存放该车厂的故障匹配信息txt文件和数据流信

息txt文件替换即可,而不必再升级诊断仪程序,从而从根本上解决了诊断信息数

据库只能通过周期性升级诊断仪程序来得到更新的问题,并且故障诊断信息数据库

用XML语言编写的txt文件组成,可以方便地在不同的操作系统平台上进行建立

和更新诊断信息数据库文件。

附图说明

图1 为本发明解析和匹配故障码信息的功能示意图;

图2 为本发明解析和匹配故障码信息的工作流程图;

图3 为本发明的读取和解析数据流信息的功能示意图;

图4 为本发明的读取和解析数据流信息的工作流程图。

具体实施方式

本发明将故障诊断信息数据库从诊断仪程序中剥离出来,存放到诊断仪外部存储器

SD卡中,并且将数据库设计成:为每一个汽车厂商建立一个故障匹配信息txt文件

和一个数据流信息txt文件的形式。如此,当需要更新某车厂的故障诊断信息时,

只需将诊断仪SD卡中该车厂对应的txt文件替换即可,通过此方法可以从根本上

解决诊断仪的故障诊断信息数据库需要通过周期性地升级诊断仪程序才能得到更新

的问题。同时,本发明设计了一种简易的用XML语言将各车厂的故障诊断信息编

写并存放在txt文件中的方法并以此来建立各车厂的诊断信息数据库。本发明可方

便地从SD卡中调用和解析车厂的XML文件匹配ECU故障信息。

根据各汽车厂商定义的故障代码表(故障码与故障信息对应表)、数据流信息说明

表(数据标识符列表、数据流描述、数据换算公式及数据流单位的说明表)建立原

始资料数据库;为每个车厂分别建立一个存储故障匹配信息txt文件和一个存储数

据流信息txt文件;文本编辑器打开存储故障匹配信息txt文件,根据故障代码表

中的一个故障码对应一条故障信息的原则,用XML语言将 一条故障码与对应的故

障信息填写在一行XML语句中,依次将故障代码表中的内容全部用XML语言填

写到存储故障匹配信息txt文件中;文本编辑器打开存储数据流信息txt文件,根

据数据流说明表中的一个数据标识符(DID),对应一个数据流描述、一个数据换算

公式、一个数据流单位的原则,用XML语言将一条数据流信息填写在一行XML

语句中,依次将数据流信息说明表中的内容全部用XML语言填写到存储数据流信

息txt文件中,如此,建立了一个车厂的故障诊断信息数据库。依次分别建立好各

车厂的故障诊断信息数据库,该数据库存储到诊断仪的SD卡中。

从SD卡中调用和解析车厂的XML文件匹配ECU故障信息。包括解析与匹配故障

码信息,以及读取和解析数据流信息。具体包括:诊断仪信息采集单元从汽车

ECU中读取故障码,比较单元从SD卡中读取该车厂对应的故障匹配信息txt文件,

将读取的故障码与故障匹配信息txt文件每一行中存储的故障码作比较,寻找到相

同故障码时,将该行中存储的对应该故障码的故障信息输出到诊断仪进行显示单元,

完成一次解析与匹配故障码信息的过程。

当诊断仪执行对某车厂的汽车ECU进行读取数据流功能时,从SD卡中读取该车

厂的数据流信息txt文件,将数据流信息txt文件每一行中存储的数据标识符(DID)

解析出来,并把解析出的DID填充到UDS(Unified Diagnostic Services,统一诊断

服务)服务的读取数据服务请求中,向汽车ECU发送请求。当接收到汽车ECU响

应的数据后,将数据流信息txt文件当前行中与该DID对应的数据换算公式解析出

来,根据换算公式将汽车ECU响应的数据进行换算获得故障代码,将故障代码和

存储在txt文件当前行中与该DID对应的数据流名称以及数据流单位按照“数据流

名称:故障代码+单位”的字符串格式,输出到诊断仪显示单元,直到将整个txt文

件的每一行的DID数据全部读完,完成了一次读取和解析数据流信息的过程。

以下结合附图和具体实例对本发明的具体实施方式进行描述。

本发明采用XML语言将各车厂的故障诊断信息编写并存放在txt文件中,并建立

各车厂的诊断信息数据库。具体过程为:首先采集各汽车厂商定义的故 障代码表

(故障码与故障信息对应表)、数据流信息说明表(数据标识符列表、数据流描述、

数据换算公式及数据流单位的说明表);根据上述信息为建立一个存储故障匹配信

息txt文件和一个存储数据流信息txt文件;文本编辑器打开存储故障匹配信息txt

文件(如表1:故障码与故障信息对照表),将故障代码表中的一个故障码对应一

条故障信息。

表1:故障码与故障信息对照表

如故障码(Diagcode code)“1A000300”对应的故障信息(codeinform)是“DCDC输出

过功率”,用XML语言将此故障码与对应的故障信息填写在一条XML语句中,在

每一行语句的第一个“=”之后存放故障码,第二个“=”后存放的是故障码对应的中文

故障信息。如表1所示,采用的编写方式如

“<Diagcode code="1A000300" codeInform_chinese="DCDC输出过功率

"></Diagcode>”,然后依次将故障代码表中的内容全部用XML语言填写到

存储故障匹配信息txt文件中,表1所示为存储故障匹配信息的txt文件内容。

文本编辑器打开存储数据流信息txt文件,编辑数据流说明表,将数据流说明表中

的一个数据标识符(DID)对应一个数据流描述、一个数据换算公式、一个数据流单

位。如表2所示。如DID为“F2B0”所对应的数据流名称是“电池电压”、单位是“V”,

换算公式是“N/10”,其中N表示汽车ECU响应的数据,就用XML语言将一条数

据流信息填写在一行XML语句中,XML语句的第一个“=”后存放DID,第4个“=”

后的引号内对应某个DID数据的换算公式。本发明采用的编写方式如

“<dataflow DID="F2B0" name_chinese="电池电压

" unit="V" Converform="N/10" ></dataflow>”,依次将数据流信息说明表中

的内容全部用XML语言填写到存储数据流信息txt文件中,如表2所示为存储数

据流信息的txt文件内容。如此,建立相应车厂的故障诊断信息数据库。依次分别

建立各车厂的故障诊断信息数据库,将故障诊断信息数据库文件存入诊断仪的SD

卡中。

表2:存储数据流信息的txt文件内容

故障诊断阶段。查询SD卡中故障诊断信息数据库,调用并解析车厂的XML文件

匹配ECU故障信息,包括解析和匹配故障码信息,以及读取和解析数据流信息。

如图1所示为解析和匹配故障码信息功能示意图,包括,读取ECU故障码并解析,

查找SD卡中故障诊断信息数据库的XML文件集合故障码信息并与之匹配,输出

ECU故障信息。解析和匹配故障码信息的工作流程如图2所示。

S11:从SD卡故障诊断信息数据库中读取故障匹配信息txt文件。诊断仪读取单元

获取某车厂的汽车ECU的故障码时,从SD卡故障诊断信息数据库中读取存储该

车厂故障匹配信息的txt文件;

S12:将ECU读到的故障码与数据库中故障匹配信息文件中第一行语句的第一个

“=”后的故障码作比较。将读取到的故障码与故障匹配信息文件中每一行存储的故

障码比较,根据数据库中故障码与故障信息对照表结构,在每一行语句的第一个

“=”之后存放的是存储码;

S13:判断故障码是否相同。将读取到的故障码与故障匹配信息文件中存储 的故障

码逐行作比较,如与某一行故障码相同,则匹配,即可找到这个故障码所对应的故

障信息;

S131:读取当前行的第二个“=”后的故障信息,输出进行故障信息显示。当判断出

读取的故障码与存储在故障匹配信息文件中某一行的故障码相同时,将第二个“=”

后的字符串(故障码对应的中文故障信息)输出给诊断仪进行故障信息显示。

S132:判断是否读取到故障匹配信息文件的末尾;

S1321:提示未找到故障码对应的故障信息的错误信息;

S1322:将读到的故障码与故障匹配信息文件中下一行语句中的第一个“=”后的故

障码作比较,进行下一次判断。

在判断出当前行存储的故障码与读取到的故障码不相同时,则读取下一行存储的故

障码,并与从ECU中读取到的故障码作比较。

如图3所示为读取和解析数据流信息的功能示意图,读取和解析数据流信息的工作

流程如图4所示。

S21:读取SD卡数据库中存储数据流信息的txt文件。当执行对某车厂的汽车

ECU进行读取数据流功能时,从诊断仪SD卡中读取该车厂的数据流信息txt文

件;

S22:从第一行开始,逐行对txt文件中存储的数据流信息进行解析和处理。由于

本发明设计的用XML语言将数据流信息填写到txt文件中的规则是将一条数据流

信息填写在一行XML语句中,在解析数据流信息时,采用逐行解析数据流信息的

方式进行处理;

S23:判断是否读到文件末尾;

S231:将当前行中存储的数据标识符(DID)解析出来;

将当前行中的第一个“=”后的引号内的数字提取出来,并转换成整数,存 储在一个

2个字节大小的变量中;

S232:结束读取数据流功能;

S24:将解析出的DID填写到UDS服务的读取数据服务请求里,向汽车ECU发送

请求。

将解析出的DID填写到UDS服务的读取数据服务请求里,读取数据服务请求报文

的第二,第三字节为DID,因此将解析出的两个字节大小的DID,按高低字节填

写到读取数据服务请求报文内,再向汽车ECU发送请求,可从ECU中得到该DID

对应的数据信息。

S25:当接收到汽车ECU响应的数据信息后,从当前行中解析出存储的数据换算

公式。

在接收到ECU响应的数据,从txt文件的当前行的第4个“=”后的引号内解析出对

应某个DID数据的换算公式;

S26:根据解析出的换算公式,将ECU响应的数据换算成对应的实际物理意义数

据。具体为:假如解析出的换算公式是“N/10”,ECU响应的数据是“2000”时,将公

式中字符“N”对应的位置,替换成ECU响应的数据,如“2000/10”,再根据这个字

符串表达式,换算出对应该DID数据的实际物理信息。

S27:将实际物理意义信息和存储在当前行中与该DID对应的数据流名称以及数据

流单位按照“数据流名称:物理信息+单位”的字符串格式,如“电池电压:220V”,

输出给诊断仪显示单元进行显示。

诊断仪在显示数据流信息时显示数据流名称、实际物理意义数据、单位信息,因此,

将实际物理意义数据与该DID对应的数据流名称以及数据流单位按照“数据流名称:

物理意义数据+单位”的字符串格式,如“电池电压:220V”的形式输出进行显示,

如此诊断仪就可以直接将得到的字符串信息进行数据流 信息显示,完成读取数据

流的功能。

需要说明的是,普通的技术人员针对上述的实施例还可以很容易想到用其他语言并

以与本发明类似的编码方式将故障代码表及数据流信息说明表的内容编写并存储在

SD卡的文件中,只要这些技术方案在本发明的构思范围内,应等同于本专利的技

术方案,属于本专利的保护范围。


本文标签: 信息 故障 诊断仪 文件 数据流