CN107132832B - 一种基于can通讯的dbc文件解析及其程序设计方法 - Google Patents

一种基于can通讯的dbc文件解析及其程序设计方法 Download PDF

Info

Publication number
CN107132832B
CN107132832B CN201610110673.1A CN201610110673A CN107132832B CN 107132832 B CN107132832 B CN 107132832B CN 201610110673 A CN201610110673 A CN 201610110673A CN 107132832 B CN107132832 B CN 107132832B
Authority
CN
China
Prior art keywords
frame
dbc
file
communication
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610110673.1A
Other languages
English (en)
Other versions
CN107132832A (zh
Inventor
陈建明
何伟
周成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Crrc Times Electric Drive Technology Co ltd
Original Assignee
Zhuzhou Nanche Times Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuzhou Nanche Times Electric Co Ltd filed Critical Zhuzhou Nanche Times Electric Co Ltd
Priority to CN201610110673.1A priority Critical patent/CN107132832B/zh
Publication of CN107132832A publication Critical patent/CN107132832A/zh
Application granted granted Critical
Publication of CN107132832B publication Critical patent/CN107132832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0208Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterized by the configuration of the monitoring system
    • G05B23/0213Modular or universal configuration of the monitoring system, e.g. monitoring system having modules that may be combined to build monitoring program; monitoring system that can be applied to legacy systems; adaptable monitoring system; using different communication protocols

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种基于CAN通讯的DBC文件解析及其程序设计方法,包括:设置CAN通讯参数配置,以实现CAN通讯正常连接;创建DBC文件,DBC文件包括帧信息报文;编写DBC文件解析程序,解析给定变量赋值帧的数量、帧名称及帧ID号;动态创建与帧信息报文中帧数量相同的控件及帧字符显示;动态创建DBC文件中信号名称的控件及名称显示;动态创建DBC文件中信号值的控件及信号值显示;实现帧信息报文中每一帧数据的接收或发送。本发明能够满足用户实时监控整车控制器信息的要求,既节约了时间、减少开发成本,同时也降低了文件解析的错误率。

Description

一种基于CAN通讯的DBC文件解析及其程序设计方法
技术领域
本发明涉及电气测控领域,尤其是涉及一种应用于汽车网络的基于CAN通讯的DBC文件解析及其程序设计方法。
背景技术
CAN总线协议是ISO国际标准化的一种串行通信协议,由于它具有极好的抗干扰能力、极强的差错检测和处理能力,能够满足信息传输实时性的要求,同时具有控制接口结构简单、易于配置的优点,因此在汽车电子等领域得到了日益广泛的应用。随着技术的进步及人们对驾驶要求的不断提高,汽车网络中的CAN节点不断增加,网络中的数据也越来越庞大。因此,为了便于整车的设计和维护,现有技术中提出了采用DBC数据库文件对汽车CAN数据进行解析和管理的技术方案。
DBC文件是一个标准的数据库文件,绝大多数汽车生产厂家都有相应的DBC文件数据库。DBC解析的过程就是将汽车CAN网络传输的十六进制数据转换成通常熟知的物理量,比如车速、转速、温度等。在现有技术中,多采用USB转CAN卡2进行上位机1与汽车控制器3之间的通讯,以实现对汽车运行状态的实时监测,如附图1所示。而在现有技术中,对CAN文件进行读取主要由以下几种方式:
现有方案1为用户直接根据既有的CAN通讯协议逐一进行Bit位解析。用户在上位机软件中逐一对报文的格式进行详细解析,完成包括移位、比例、偏移等程序编写。这种方案的缺陷是:通过CAN通讯协议在上位机软件中逐一进行报文详细解析的方法,当CAN节点数量较多时,人工输入代码工作量大,且繁琐容易出错。一旦协议稍有改动,代码修改也是费时费力。同时,应对不同的通讯协议,用户需建立其特定的一套上位机软件,通用性较弱。
现有方案2为购买能实现对汽车的DBC数据库文件进行解析的设备读取CAN文件。用户需采购能够实现对汽车的DBC数据库文件进行解析的CAN卡设备,并使用该设备配套的软件。这种方案的缺陷是:通过购买CAN卡设备的方式,由于满足能加载DBC文件的CAN卡对配置要求较高,因此选择度较少、影响产品开发进度、增加产品开发成本。现今可以实现DBC文件解析的CAN卡设备,其国外的价格偏高,而国内的满足要求的型号又较少,且只能使用其配套软件,用户不仅增加了采购成本,而且不能对软件进行维护修改,如增加其他所需功能等,提高了产品维护难度。
现有方案3为广州汽车集团股份有限公司于2012年10月23日申请,并于2014年05月07日公开,公开号为CN103777934A的中国发明专利申请《一种基于MATLAB生成控制器CAN交互层的方法及系统》。该发明申请公开了一种基于CAN数据库文件即DBC文件将数据包解析成实际物理信息的方案。这种方案在车用局域网上的CAN信号量十分巨大,从而导致CAN信号的软件解析以及其他的相关软件处理工作量大。对于不同的DBC文件,用户往往需建立多个不同的上位机监控软件,编写代码时将需实现每一信号位的逐一提取,一旦帧数量庞大,其过多的数学运算,将无疑会增加出错率。此外,在技术层面,该申请只提到了利用MATLAB软件以文本格式打开CAN 数据库文件,得到CAN数据库文件文本代码信息的内容。
发明内容
有鉴于此,本发明的目的在于提供一种基于CAN通讯的DBC文件解析及其程序设计方法,解决现有CAN文件解析方法代码输入量大、维护难度大、数据处理量大的技术缺陷,以满足用户实时监控整车控制器信息的要求。
为了实现上述发明目的,本发明具体提供了一种基于CAN通讯的DBC文件解析程序设计方法的技术实现方案,一种基于CAN通讯的DBC文件解析程序设计方法,包括以下步骤:
S101:设置CAN通讯参数配置,以实现CAN通讯正常连接;
S102:创建DBC文件,所述DBC文件包括帧信息报文;
S103:编写DBC文件解析程序,解析给定变量赋值帧的数量、帧名称及帧ID号;
S104:动态创建与所述帧信息报文中帧数量相同的控件及帧字符显示;
S105:动态创建所述DBC文件中信号名称的控件及名称显示;
S106:动态创建所述DBC文件中信号值的控件及信号值显示;
S107:实现所述帧信息报文中每一帧数据的接收或发送。
优选的,所述步骤S101进一步包括以下过程:
设置CAN通讯包括波特率、验收码、屏蔽码、帧类型在内的配置。
优选的,所述步骤S102进一步包括以下过程:
根据CAN网络通讯协议定义数据,新建包括帧ID号、帧类型在内的帧信息报文,再对每一帧信息新建包括类型、起始位、位长度、偏移值、最大值、最小值和变换比例在内的信号信息,待所需数据全部定义完成之后,将定义数据另存为所需的DBC文件。
优选的,所述步骤S103进一步包括以下过程:
解析所述DBC文件中以BO_和SG_开头的所有行,解析给定变量赋值帧的数量、帧名称及帧ID号,并解析给定变量赋值每一帧内所有信号的名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例。
优选的,所述步骤S107中实现每一帧数据发送的过程进一步包括:
S108:实现每一帧数据的单次发送;
S109:实现每一帧数据按一定时间间隔连续发送。
优选的,所述步骤S104进一步包括以下过程:
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在上位机界面动态创建与帧数量相同的帧控件;
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在创建的帧控件内各添加一个下拉列表,所述下拉列表的名称包括发送、单次发送和连续发送;
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在创建的帧控件内各添加一个发送按钮,进行发送数据时的操作;
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在创建的帧控件内各添加一个时间间隔输入框,通过设定时间间隔,实现帧信息报文的连续发送;
通过所述步骤S103的解析,根据所述帧信息报文中的帧名称、帧ID号,将帧名称_ID号的连接字符作为标签添加至创建的各自帧控件。
优选的,所述步骤S105进一步包括以下过程:
通过所述步骤S103的解析,在上位机界面动态创建的每一个帧控件内,再动态创建与每一帧信号相同数量的信号控件,所述信号控件在所述帧控件内排列;
通过所述步骤S103的解析,每一个信号控件显示相应的信号名称。
优选的,所述步骤S106进一步包括以下过程:
通过所述步骤S103的解析,在上位机界面动态创建的每一个帧控件内,动态创建与每一帧信号相同数量的信号文本框。
优选的,所述步骤S108进一步包括以下过程:
根据所述步骤104,对需要进行发送的帧数据,在所述帧控件内的下拉列表选择单次发送;
设置最大值、最小值用于限制所述帧数据发送值的范围,确保所述帧数据的有效性;
通过所述步骤S101的CAN通讯,在每个帧控件内设定信号文本框的值,点击发送按钮发送帧数据。
优选的,所述步骤S109进一步包括以下过程:
根据所述步骤S104,对需要进行发送的帧数据,在所述帧控件内的下拉列表选择连续发送;
通过所述步骤S101的CAN通讯,在每个帧控件内,设定信号文本框的值,点击发送按钮发送帧数据;
根据步骤所述步骤S104,对需要进行发送的帧数据,在所述帧控件内设定时间间隔值,点击发送按钮发送帧数据。
优选的,在所述步骤S107之后还包括以下步骤:
S110:根据对所述DBC文件的解析生成CAN相关嵌入式代码的.c及.h文件。
优选的,所述步骤S110进一步包括以下过程:
应用Print语句,定义.c及.h文件的文件头;
应用Print语句,定义.c文件的“#include”语句;
根据所述步骤S104,应用Print语句,以邮箱为单位循环创建.c文件的void函数;
应用Print语句,定义.h文件的“#include”语句;
应用Print语句,定义.h文件的“#ifndef”语句;
应用Print语句,定义.h文件的“#define”语句;
根据所述步骤S104,应用Print语句,循环创建.h文件的typedef struct结构体;
根据所述步骤S104,应用Print语句,循环创建.h文件的typedef union共同体。
本发明还另外具体提供了一种基于CAN通讯的DBC文件解析方法的技术实现方案,一种基于CAN通讯的DBC文件解析方法,包括以下步骤:
S201:执行根据上述方法设计的基于CAN通讯的DBC文件解析程序,建立CAN通讯的正常连接;
S202:打开DBC文件;
S203:判断所述DBC文件读取是否成功;
S204:如果读取错误则重新选择DBC文件读取;
S205:如果DBC文件读取成功,则逐行解析所述DBC文件,并去除无需解析的行;
S206:解析所述DBC文件中以“BO_”为标记的行,确定帧数量,动态增加帧控件及相应帧控件名称;
S207:解析所述DBC文件中以“SG_”为标记的行,解析信号的名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例,在每一个帧控件内动态增加信号控件及相应信号控件名称。
优选的,所述方法还包括以下步骤:
S208:根据对所述DBC文件的解析生成CAN相关嵌入式代码的.c或.h文件。
优选的,所述帧控件包括:显示每一帧信息的控件,以及接收、单次发送,连续发送的下拉控件。
优选的,所述信号控件包括:显示每一信号名称的控件,以及每一个信号值的文本框控件。
通过实施上述本发明提供的基于CAN通讯的DBC文件解析及其程序设计方法的技术方案,具有如下有益效果:
(1)本发明基于现有的通用USB转CAN卡设备,采用统一、通用的上位机软件环境进行编程,解决了用户需创建多个上位机软件的问题,能够满足大多数机型的要求,大幅降低了软件的维护要求和采购成本;
(2)本发明对于不同的DBC文件,只需使用相同的上位机监控软件,并采用统一的工具软件创建DBC文件,对特定行的数据进行解析,无需对每一信号位的逐一提取,降低了帧数据量和数学运算量,降低了数据解析过程的出错率;
(3)本发明通过创建通用的上位机监视软件,既可加载不同的DBC文件,实现对控制器的实时监控,又可实现自动生成CAN相关嵌入式代码*.c及*.h文件,实现嵌入式调用,方便了对CAN报文信息解析的文件调用,节约了时间、减少开发成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1是现有技术中汽车运行状态实时监测系统的结构原理框图;
图2是本发明基于CAN通讯的DBC文件解析程序设计方法一种具体实施方式的程序流程图;
图3是本发明基于CAN通讯的DBC文件解析方法一种具体实施方式的程序流程图;
图4是本发明基于CAN通讯的DBC文件解析方法一种具体实施方式中DBC文件创建过程的程序流程图;
图5是本发明基于CAN通讯的DBC文件解析程序设计方法中CAN通信参数设置界面的示意图;
图6是本发明基于CAN通讯的DBC文件解析程序设计方法中DBC文件创建界面的示意图;
图7是本发明基于CAN通讯的DBC文件解析程序设计方法中帧控件、信号控件和信号值控件创建界面的示意图;
图8是本发明基于CAN通讯的DBC文件解析程序设计方法中帧数据单次发送界面的示意图;
图9是本发明基于CAN通讯的DBC文件解析程序设计方法中帧数据连续发送界面的示意图;
图中:1-上位机,2-USB转CAN卡,3-汽车控制器。
具体实施方式
为了引用和清楚起见,将下文中使用的技术名词、简写或缩写记载如下:
CAN:Controller Area Network,控制器局域网总线的简称;
USB:Universal Serial Bus,通用串行总线的简称;
Kvaser:一种CAN总线测试开发仿真和控制软件;
DBC: Database Container,数据库容器的简称;
Message:报文。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如附图2至附图9所示,给出了本发明基于CAN通讯的DBC文件解析及其程序设计方法的具体实施例,下面结合附图和具体实施例对本发明作进一步说明。
如附图2所示,一种基于CAN通讯的DBC文件解析程序设计方法的具体实施例,包括以下步骤:
S101:设置CAN通讯参数配置,以实现CAN通讯正常连接。
步骤S101进一步包括以下过程:
设置CAN通讯包括波特率、验收码、屏蔽码、帧类型在内的配置,如附图5所示。
这一步骤的目的是通过用户编写代码实现CAN通讯连接。通常,USB转CAN卡的设备厂家都会提供有相应的适用于某种上位机软件的CAN通讯范例,用户编程可以参考编写CAN通讯代码。
作为本发明一种典型的具体实施例,步骤S101在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
S102:创建DBC文件,DBC文件包括帧信息报文。
步骤S102进一步包括以下过程:
根据CAN网络通讯协议定义数据,新建包括帧ID号、帧类型在内的帧信息报文,再对每一帧信息新建包括名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例在内的信号信息,待所需数据全部定义完成之后,将定义数据另存为所需的DBC文件,如附图4和附图6所示。
步骤S102的详细过程为:基于Kvaser工具软件(一种CAN总线开发测试软件),进入Kvaser Database Editor编辑器,根据汽车CAN网络通讯协议,新建帧信息报文(Message),包含:帧ID号、帧类型等。然后再对每一帧信息新建信号信息(Signal),包含:名称(Name)、类型(Type)、起始Bit位(Start Bit)、位长度(Length)、偏移值(offset)、最大值(Maximum)、最小值(Minimum)和变换比例(Factor)等。待所需数据全部定义之后,另存为所需的*.dbc文件,生成的.dbc文件即是标准格式的DBC文件,用户无需进行修改。
作为本发明一种典型的具体实施例,步骤S102在Kvaser软件环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。当用户需要解析基于CAN通讯的DBC文件时,打开采用Visual Basic编写的基于CAN通讯的DBC文件解析程序,然后导入*.dbc文件,即可实现基于CAN通讯的DBC数据实时读取,自动接收来自于控制器(如汽车控制器3)的信息,并实时显示。
S103:编写DBC文件解析程序,解析给定变量赋值帧的数量、帧名称及帧ID号。
步骤S103进一步包括以下过程:
用户主要解析该DBC文件的特定标记部分,即解析DBC文件中以BO_和SG_开头的所有行,解析给定变量赋值帧的数量、帧名称及帧ID号,并解析给定变量赋值每一帧内所有信号的名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例。编写代码时需要考虑通用性,满足对任一标准DBC文件均能使用一套源代码即可解析的标准,如下所示即为一段DBC文件代码的范例。
VERSION "HIPBNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY/4/%%%/4'%**4YYY///"
NS_:
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BS_:
BU_:
BO_336 MCU1: 8 Vector__XXX
SG_MCU_checksum1:0|8@1+ (1,0) [0|255] "" Vector__XXX
..
..
..
..
..
..
CM_SG_
..
作为本发明一种典型的具体实施例,步骤S103在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
S104:动态创建与帧信息报文中帧数量相同的控件及帧字符显示,如附图7中区域A所示。
步骤S104进一步包括以下过程:
通过步骤S103的解析,根据帧信息报文中的帧数量,在上位机界面动态创建与帧数量相同的控件(定义为帧控件)。在未执行步骤S103时,保留上位机界面在需创建控件所在的面板保留空白。编写的代码需满足控件的宽度、高度及间距可随帧数量的变化进行适当调整,以保证显示界面的完整和美观。
通过步骤S103的解析,根据帧信息报文中的帧数量,在创建的帧控件内各添加一个下拉列表,下拉列表的名称包括发送、单次发送和连续发送。
通过步骤S103的解析,根据帧信息报文中的帧数量,在创建的帧控件内各添加一个发送按钮,进行发送数据时的操作。
通过步骤S103的解析,根据帧信息报文中的帧数量,在创建的帧控件内各添加一个时间间隔输入框,通过设定时间间隔,实现帧信息报文的连续发送。
通过步骤S103的解析,根据帧信息报文中的帧名称、帧ID号,将帧名称_ID号的连接字符作为标签添加至创建的各自帧控件。
作为本发明一种典型的具体实施例,步骤S104在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
S105:动态创建DBC文件中信号名称的控件及名称显示,如附图7中区域B所示。
用户编写源代码时,解析DBC文件中关于信号名称的部分,应当保证信号名称在相应帧所在的窗体内整齐排列显示。
步骤S105进一步包括以下过程:
通过步骤S103的解析,在上位机界面动态创建的每一个帧控件内,再动态创建与每一帧信号相同数量的控件(定义为信号控件)。信号控件在帧控件内整齐排列,编写的代码需满足控件的宽度,高度及间距可随信号帧数量的变化进行适当调整,以保证显示的完整性。
通过步骤S103的解析,每一个信号控件显示相应的信号名称。
作为本发明一种典型的具体实施例,步骤S105在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
S106:动态创建DBC文件中信号值的控件及信号值显示,如附图7中区域C所示。
步骤S106进一步包括以下过程:
通过步骤S103的解析,在上位机界面动态创建的每一个帧控件内,动态创建与每一帧信号相同数量的文本框(定义为信号文本框)。
基于步骤S101的正常通讯,在信号文本框内将自动接收控制器(如汽车控制器3)的信息,并实时显示。
作为本发明一种典型的具体实施例,步骤S106在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
S107:实现帧信息报文中每一帧数据的接收或发送。
步骤S107中实现每一帧数据发送的过程进一步包括:
S108:实现每一帧数据的单次发送,如附图8所示。
步骤S108进一步包括以下过程:
根据步骤104,对需要进行发送的帧数据,在帧控件内的下拉列表选择单次发送。
设置最大值、最小值用于限制帧数据发送值的范围,确保帧数据的有效性。
通过步骤S101的CAN通讯,在每个帧控件内设定信号文本框的值,点击发送按钮发送帧数据。
作为本发明一种典型的具体实施例,步骤S108在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
S109:实现每一帧数据按一定时间间隔连续发送,如附图9所示。
步骤S109进一步包括以下过程:
根据步骤S104,对需要进行发送的帧数据,在帧控件内的下拉列表选择连续发送。
通过步骤S101的CAN通讯,在每个帧控件内,设定信号文本框的值,点击发送按钮发送帧数据。
根据步骤S104,对需要进行发送的帧数据,在帧控件内设定时间间隔值,点击发送按钮发送帧数据。
作为本发明一种典型的具体实施例,步骤S109在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
作为本发明一种较佳的具体实施例,在所述步骤S107之后还包括以下步骤:
S110:根据对DBC文件的解析生成CAN相关嵌入式代码的*.c及*.h文件。
步骤S110进一步包括以下过程:
应用Print语句,定义*.c及*.h文件的文件头。
应用Print语句,定义*.c文件的“#include”语句。
根据步骤S104,应用Print语句,以邮箱为单位循环创建*.c文件的void函数。
应用Print语句,定义*.h文件的“#include”语句。
应用Print语句,定义*.h文件的“#ifndef”语句。
应用Print语句,定义*.h文件的“#define”语句。
根据步骤S104,应用Print语句,循环创建*.h文件的typedef struct结构体。
根据步骤S104,应用Print语句,循环创建*.h文件的typedef union共同体。
作为本发明一种典型的具体实施例,步骤S110在Visual Basic软件编程环境下完成,当然该步骤也可以在其它类似的软件编程环境下完成。
通过实施以上步骤S101~步骤S110,就完成了整个基于CAN通讯的DBC文件解析程序的编写和设计。
如附图3所示,一种基于CAN通讯的DBC文件解析方法的具体实施例,包括以下步骤:
S201:执行根据如上所述方法设计的基于CAN通讯的DBC文件解析程序,建立CAN通讯的正常连接;
S202:打开DBC文件;
S203:判断DBC文件读取是否成功;
S204:如果读取错误则重新选择DBC文件读取;
S205:如果DBC文件读取成功,则逐行解析DBC文件,并去除无需解析的行;
S206:解析DBC文件中以“BO_”为标记的行,确定帧数量,动态增加帧控件及相应帧控件名称;
S207:解析DBC文件中以“SG_”为标记的行,解析信号的名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例,在每一个帧控件内动态增加信号控件及相应信号控件名称。
基于CAN通讯的DBC文件解析方法还包括以下步骤:
S208:根据对DBC文件的解析生成CAN相关嵌入式代码的*.c或*.h文件。
帧控件包括:显示每一帧信息的控件,以及接收、单次发送,连续发送的下拉控件。
信号控件包括:显示每一信号名称的控件,以及每一个信号值的文本框控件。
本发明上述具体实施例提出了一种针对基于CAN通信的标准DBC文件进行解析并读取报文信息的方法及其程序设计方法,实现报文接收、单次发送或按设定时间间隔多次发送的通用化CAN网络测控。除此之外,本发明具体实施例还提出了一种通过解析DBC文件生成CAN相关嵌入式代码*.c及*.h文件的方法,生成的文件可在特定程序架构内调用,解决了在其它软件开发过程中代码嵌入调用的技术问题。本发明具体实施例描述的技术方案在基于任何一个USB转CAN卡设备实现整车控制器与上位机(PC机)正常通讯的基础上,采用Visual Basic上位机软件编程,通过在其内加载DBC文件实现数据的解析和处理,满足了用户在PC机上即可实时监控整车控制器信息的要求。
需要特别说明的是,在本发明具体实施例中,生成DBC文件的软件可能有所不同,只要能生成满足DBC文件标准格式的方法都属于本发明请求保护的范围。参照DBC文件格式自定义的网络协议文件(包含协议相关的内容),也是本发明请求保护的范围。此外,用户编写基于CAN通讯的DBC文件解析程序代码的软件可能有所不同,用户使用其他上位机软件实现同样的功能也属于本发明请求保护的范围。
通过实施本发明具体实施例描述的基于CAN通讯的DBC文件解析及其程序设计方法的技术方案,能够产生如下技术效果:
(1)本发明具体实施例描述的基于CAN通讯的DBC文件解析及其程序设计方法基于现有的通用USB转CAN卡设备,采用统一、通用的上位机软件环境进行编程,解决了用户需创建多个上位机软件的问题,能够满足大多数机型的要求,大幅降低了软件的维护要求和采购成本;
(2)本发明具体实施例描述的基于CAN通讯的DBC文件解析及其程序设计方法对于不同的DBC文件,只需使用相同的上位机监控软件,并采用统一的工具软件创建DBC文件,对特定行的数据进行解析,无需对每一信号位的逐一提取,降低了帧数据量和数学运算量,降低了数据解析过程的出错率;
(3)本发明具体实施例描述的基于CAN通讯的DBC文件解析及其程序设计方法通过创建通用的上位机监视软件,既可加载不同的DBC文件,实现对控制器的实时监控,又可实现自动生成CAN相关嵌入式代码*.c及*.h文件,实现嵌入式调用,方便了对CAN报文信息解析的文件调用,节约了时间、减少开发成本。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明的精神实质和技术方案的情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同替换、等效变化及修饰,均仍属于本发明技术方案保护的范围。

Claims (15)

1.一种基于CAN通讯的DBC文件解析程序设计方法,其特征在于,包括以下步骤:
S101:设置CAN通讯参数配置,以实现CAN通讯正常连接;
S102:创建DBC文件,所述DBC文件包括帧信息报文;
S103:编写DBC文件解析程序,解析给定变量赋值帧的数量、帧名称及帧ID号;
S104:动态创建与所述帧信息报文中帧数量相同的控件及帧字符显示;
S105:动态创建所述DBC文件中信号名称的控件及名称显示;
S106:动态创建所述DBC文件中信号值的控件及信号值显示;
S107:实现所述帧信息报文中每一帧数据的接收或发送;
所述步骤S107中实现每一帧数据发送的过程进一步包括以下步骤:
S108:实现每一帧数据的单次发送;
S109:实现每一帧数据按一定时间间隔连续发送。
2.根据权利要求1所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S101进一步包括以下过程:
设置CAN通讯包括波特率、验收码、屏蔽码、帧类型在内的配置。
3.根据权利要求1或2所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S102进一步包括以下过程:
根据CAN网络通讯协议定义数据,新建包括帧ID号、帧类型在内的帧信息报文,再对每一帧信息新建包括名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例在内的信号信息,待所需数据全部定义完成之后,将定义数据另存为所需的DBC文件。
4.根据权利要求3所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S103进一步包括以下过程:
解析所述DBC文件中以BO_和SG_开头的所有行,解析给定变量赋值帧的数量、帧名称及帧ID号,并解析给定变量赋值每一帧内所有信号的名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例。
5.根据权利要求1、2或4所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S104进一步包括以下过程:
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在上位机界面动态创建与帧数量相同的帧控件;
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在创建的帧控件内各添加一个下拉列表,所述下拉列表的名称包括发送、单次发送和连续发送;
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在创建的帧控件内各添加一个发送按钮,进行发送数据时的操作;
通过所述步骤S103的解析,根据所述帧信息报文中的帧数量,在创建的帧控件内各添加一个时间间隔输入框,通过设定时间间隔,实现帧信息报文的连续发送;
通过所述步骤S103的解析,根据所述帧信息报文中的帧名称、帧ID号,将帧名称_ID号的连接字符作为标签添加至创建的各自帧控件。
6.根据权利要求5所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S105进一步包括以下过程:
通过所述步骤S103的解析,在上位机界面动态创建的每一个帧控件内,再动态创建与每一帧信号相同数量的信号控件,所述信号控件在所述帧控件内排列;
通过所述步骤S103的解析,每一个信号控件显示相应的信号名称。
7.根据权利要求6所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S106进一步包括以下过程:
通过所述步骤S103的解析,在上位机界面动态创建的每一个帧控件内,动态创建与每一帧信号相同数量的信号文本框。
8.根据权利要求6或7所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S108进一步包括以下过程:
根据所述步骤104,对需要进行发送的帧数据,在所述帧控件内的下拉列表选择单次发送;
设置最大值、最小值用于限制所述帧数据发送值的范围,确保所述帧数据的有效性;
通过所述步骤S101的CAN通讯,在每个帧控件内设定信号文本框的值,点击发送按钮发送帧数据。
9.根据权利要求8所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S109进一步包括以下过程:
根据所述步骤S104,对需要进行发送的帧数据,在所述帧控件内的下拉列表选择连续发送;
通过所述步骤S101的CAN通讯,在每个帧控件内,设定信号文本框的值,点击发送按钮发送帧数据;
根据步骤所述步骤S104,对需要进行发送的帧数据,在所述帧控件内设定时间间隔值,点击发送按钮发送帧数据。
10.根据权利要求1、2、4、6、7或9所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,在所述步骤S107之后还包括以下步骤:
S110:根据对所述DBC文件的解析生成CAN相关嵌入式代码的.c及.h文件。
11.根据权利要求10所述的基于CAN通讯的DBC文件解析程序设计方法,其特征在于,所述步骤S110进一步包括以下过程:
应用Print语句,定义.c及.h文件的文件头;
应用Print语句,定义.c文件的“#include”语句;
根据所述步骤S104,应用Print语句,以邮箱为单位循环创建.c文件的void函数;
应用Print语句,定义.h文件的“#include”语句;
应用Print语句,定义.h文件的“#ifndef”语句;
应用Print语句,定义.h文件的“#define”语句;
根据所述步骤S104,应用Print语句,循环创建.h文件的typedef struct结构体;
根据所述步骤S104,应用Print语句,循环创建.h文件的typedef union共同体。
12.一种基于CAN通讯的DBC文件解析方法,其特征在于,包括以下步骤:
S201:执行根据权利要求1至11中任一项所述方法设计的基于CAN通讯的DBC文件解析程序,建立CAN通讯的正常连接;
S202:打开DBC文件;
S203:判断所述DBC文件读取是否成功;
S204:如果读取错误则重新选择DBC文件读取;
S205:如果DBC文件读取成功,则逐行解析所述DBC文件,并去除无需解析的行;
S206:解析所述DBC文件中以“BO_”为标记的行,确定帧数量,动态增加帧控件及相应帧控件名称;
S207:解析所述DBC文件中以“SG_”为标记的行,解析信号的名称、类型、起始位、位长度、偏移值、最大值、最小值和变换比例,在每一个帧控件内动态增加信号控件及相应信号控件名称。
13.根据权利要求12所述的基于CAN通讯的DBC文件解析方法,其特征在于,所述方法还包括以下步骤:
S208:根据对所述DBC文件的解析生成CAN相关嵌入式代码的.c或.h文件。
14.根据权利要求12或13所述的基于CAN通讯的DBC文件解析方法,其特征在于,所述帧控件包括:显示每一帧信息的控件,以及接收、单次发送,连续发送的下拉控件。
15.根据权利要求14所述的基于CAN通讯的DBC文件解析方法,其特征在于,所述信号控件包括:显示每一信号名称的控件,以及每一个信号值的文本框控件。
CN201610110673.1A 2016-02-29 2016-02-29 一种基于can通讯的dbc文件解析及其程序设计方法 Active CN107132832B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610110673.1A CN107132832B (zh) 2016-02-29 2016-02-29 一种基于can通讯的dbc文件解析及其程序设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610110673.1A CN107132832B (zh) 2016-02-29 2016-02-29 一种基于can通讯的dbc文件解析及其程序设计方法

Publications (2)

Publication Number Publication Date
CN107132832A CN107132832A (zh) 2017-09-05
CN107132832B true CN107132832B (zh) 2019-10-11

Family

ID=59721691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610110673.1A Active CN107132832B (zh) 2016-02-29 2016-02-29 一种基于can通讯的dbc文件解析及其程序设计方法

Country Status (1)

Country Link
CN (1) CN107132832B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753277A (zh) * 2017-11-06 2019-05-14 联合汽车电子有限公司 Can总线代码的自动生成装置及方法
CN107992026B (zh) * 2017-12-13 2020-09-08 南京越博动力系统股份有限公司 一种基于labveiw的解析dbc分析报文的方法
CN108471401A (zh) * 2018-02-07 2018-08-31 山东省科学院自动化研究所 一种can信号封装、解析方法及装置
CN108965293B (zh) * 2018-07-13 2021-06-11 智车优行科技(北京)有限公司 报文解析方法和装置、电子设备
CN109040061A (zh) * 2018-08-01 2018-12-18 吉林大学珠海学院 一种数据自动匹配解析方法、系统、装置和存储介质
CN109491660B (zh) * 2018-09-30 2021-10-29 大连莱克科技发展有限公司 一种机车事件数据动态解析方法
US11539782B2 (en) * 2018-10-02 2022-12-27 Hyundai Motor Company Controlling can communication in a vehicle using shifting can message reference
CN109639789A (zh) * 2018-12-05 2019-04-16 广东国鸿氢能科技有限公司 燃料电池模块数据监测方法及系统
CN110445752B (zh) * 2019-06-28 2022-08-30 福建星云电子股份有限公司 一种支持多种can设备并灵活解析各类can报文的实现方法
CN110769002A (zh) * 2019-11-01 2020-02-07 上海电气集团股份有限公司 基于LabVIEW的报文解析方法、系统、电子设备和介质
CN111181948B (zh) * 2019-12-25 2023-04-07 潍柴动力股份有限公司 非标准报文驱动已有功能的方法及装置
CN113094029B (zh) * 2020-01-08 2023-08-22 广汽埃安新能源汽车有限公司 一种capl代码自动生成方法、系统及汽车
CN113259214B (zh) * 2020-02-12 2023-01-13 彩虹无线(北京)新技术有限公司 行车数据监控系统
CN111309684A (zh) * 2020-03-13 2020-06-19 佛山市飞驰汽车制造有限公司 一种基于脚本工具解析汽车网络dbc文件的方法
CN111427940B (zh) * 2020-03-26 2023-09-05 陶朝林 一种自适应数据库转换方法及装置
CN111817938B (zh) * 2020-07-15 2022-04-01 上汽通用五菱汽车股份有限公司 一种汽车can通讯矩阵编制的方法、系统及存储介质
CN112378420A (zh) * 2020-10-30 2021-02-19 北斗星通智联科技有限责任公司 用于汽车导航测试的信号模拟方法、系统及电子设备
CN112947376A (zh) * 2021-02-19 2021-06-11 中国第一汽车股份有限公司 一种试验车使用监管方法和监管系统
CN113067821A (zh) * 2021-03-22 2021-07-02 聊城大学 基于单个或多个dbc文件的can报文的解析方法
CN113438211A (zh) * 2021-06-07 2021-09-24 杭州鸿泉物联网技术股份有限公司 Dbc格式解析和报文解析方法、装置、电子设备及介质
CN113568875A (zh) * 2021-07-26 2021-10-29 广州小鹏自动驾驶科技有限公司 一种数据库dbc文件的生成方法和装置
CN113702850B (zh) * 2021-08-27 2024-04-16 深圳市新威尔电子有限公司 基于工步流程发送can报文的电池检测方法
CN113867318B (zh) * 2021-09-30 2023-07-18 东风汽车集团股份有限公司 Can通讯控制器硬件在环测试工程的自动化集成方法
CN114064041B (zh) * 2021-11-18 2022-08-02 宁波波导易联电子有限公司 通过Android系统将控车矩阵文件生成控车代码的方法及系统
CN114257617A (zh) * 2021-12-09 2022-03-29 北京天融信网络安全技术有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN114915548B (zh) * 2022-05-09 2023-10-31 中国船舶重工集团公司第七0七研究所九江分部 一种基于单片机can协议可视化配置和自动解析方法
CN115499341A (zh) * 2022-09-14 2022-12-20 苏州挚途科技有限公司 数据通信状态的检测方法、装置以及电子设备
CN116132558A (zh) * 2023-02-03 2023-05-16 重庆赛力斯新能源汽车设计院有限公司 一种数据解析方法、装置、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102857402A (zh) * 2011-06-29 2013-01-02 腾讯科技(深圳)有限公司 发送网络消息的方法及系统
US8544051B1 (en) * 2009-03-30 2013-09-24 Cisco Technology, Inc. Broadcast solution for cable IPTV
CN103777934A (zh) * 2012-10-23 2014-05-07 广州汽车集团股份有限公司 一种基于matlab生成控制器can交互层的方法及系统
CN104182219A (zh) * 2014-08-07 2014-12-03 上海航天电源技术有限责任公司 一种电池组系统的可视化测试方法
CN104980516A (zh) * 2015-06-26 2015-10-14 武汉光庭科技有限公司 一种面向多车型的车身信息采集系统的可配置方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331292B (zh) * 2014-11-03 2019-01-22 重庆邮电大学 一种车联网中间件协议转换的配置生成方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8544051B1 (en) * 2009-03-30 2013-09-24 Cisco Technology, Inc. Broadcast solution for cable IPTV
CN102857402A (zh) * 2011-06-29 2013-01-02 腾讯科技(深圳)有限公司 发送网络消息的方法及系统
CN103777934A (zh) * 2012-10-23 2014-05-07 广州汽车集团股份有限公司 一种基于matlab生成控制器can交互层的方法及系统
CN104182219A (zh) * 2014-08-07 2014-12-03 上海航天电源技术有限责任公司 一种电池组系统的可视化测试方法
CN104980516A (zh) * 2015-06-26 2015-10-14 武汉光庭科技有限公司 一种面向多车型的车身信息采集系统的可配置方法

Also Published As

Publication number Publication date
CN107132832A (zh) 2017-09-05

Similar Documents

Publication Publication Date Title
CN107132832B (zh) 一种基于can通讯的dbc文件解析及其程序设计方法
CN108965293B (zh) 报文解析方法和装置、电子设备
CN101651683B (zh) 一种信令消息解析源代码生成方法
US20130338800A1 (en) Method for Connecting a Switching Station Automation Device According to IEC61850 to an Industry Automation Field Bus
CN105072130B (zh) 一种asn.1解码器代码自动生成方法
CN107038118B (zh) 一种不同电子设备组装进行测试的通用处理方法
CN109445771A (zh) 一种cs架构下网络层模块代码自动生成工具及方法
CN106990983A (zh) 单片机烧写方法、装置、系统及单片机
CN113904967A (zh) 一种汽车can通信模块接口软件自动测试装置及测试方法
CN108809741A (zh) Can总线的测试方法及装置
CN106850614A (zh) 多功能数字化网络联调装置
CN103746873A (zh) 通信模块测试系统和方法
CN106775607A (zh) 一种将接口控制文件自动生成头文件数据接口的方法
CN105607909B (zh) 一种基于mvc框架改进列表开发效率的方法和系统
CN109753277A (zh) Can总线代码的自动生成装置及方法
CN103542865A (zh) 测控方法和装置
CN103763153B (zh) 自动将设备链路信息转换为拓扑图形的方法及系统
CN114845328B (zh) 一种多态性nr射频测试系统、测试例生成方法及测试方法
CN115712537A (zh) 一种低成本的车辆控制器can信号模拟系统
CN115657646A (zh) 一种can控制器的测试方法及装置
CN111416672B (zh) Ais设备测试系统、方法和计算机可读存储介质
CN112015726B (zh) 一种用户活跃度预测方法、系统及可读存储介质
CN105630466A (zh) 业务的控制方法及装置
CN105530288B (zh) 一种数据交互的方法
CN104569650B (zh) 一种基于信号的仪器驱动实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: The age of 412001 in Hunan Province, Zhuzhou Shifeng District Road No. 169

Patentee after: ZHUZHOU CRRC TIMES ELECTRIC Co.,Ltd.

Address before: The age of 412001 in Hunan Province, Zhuzhou Shifeng District Road No. 169

Patentee before: ZHUZHOU CSR TIMES ELECTRIC Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20240117

Address after: 412005, No. 255 Tongxia Road, Tongtangwan Street, Shifeng District, Zhuzhou City, Hunan Province

Patentee after: Hunan CRRC Times Electric Drive Technology Co.,Ltd.

Address before: The age of 412001 in Hunan Province, Zhuzhou Shifeng District Road No. 169

Patentee before: ZHUZHOU CRRC TIMES ELECTRIC Co.,Ltd.

TR01 Transfer of patent right