自适应多车型CAN数据自动解析方法及系统与流程

文档序号:29789866发布日期:2022-04-23 17:20阅读:540来源:国知局
自适应多车型CAN数据自动解析方法及系统与流程
自适应多车型can数据自动解析方法及系统
技术领域
1.本发明涉及车辆智能化领域,更具体地,涉及一种自适应多车型can数据自动解析方法、系统、电子设备及介质。


背景技术:

2.can(controller area network,控制器局域网络)总线是汽车内部网络应用最广泛的总线。对于汽车行业而言,can数据是一个很重要的数据来源。
3.不同的发动机厂家,基于差异性和保密性的考虑,其can网络协议也各不相同。每次在对接新的发动机时,都需要去重新解析不同的can网络协议。一份can网络协议,少则包括几十份can报文协议,多则包括几百分can报文协议,而解析can报文的传统方式是按照can协议手动解析can报文中的每一项数据,这是一项重复繁杂、没有技术含量并且容易出错的工作。基于传统的解析can数据的缺点,本发明提出了一种全新的解析can数据的方法。


技术实现要素:

4.本发明提供了一种自适应多车型can数据自动解析方法、系统、电子设备及介质,可以通过python脚本自动化地对can数据进行解析,并将解析出来的can信号写入共享内存,提高了解析can数据的工作效率并降低了错误率。
5.具体地,本发明是通过以下技术方案来实现的:
6.第一方面,本发明提供了一种自适应多车型can数据自动解析方法,该方法包括:
7.定义用于解析can数据的模板文件;
8.获取定义了所需can报文及过滤规则的dbc文件;
9.解析所述定义了过滤规则的dbc文件,得到第一c代码;
10.基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所述第二c代码写入共享内存。
11.进一步地,所述模板文件为手动编辑文件,并且与所述待解析的dbc文件的类型无关。
12.进一步地,所述获取定义了过滤规则的dbc文件,包括:自定义过滤规则,并将过滤规则添加到dbc文件。
13.进一步地,所述过滤规则用于获得所关心的can数据。
14.进一步地,所述解析所述含有过滤规则的dbc文件,得到第一c代码,包括:通过调用第三方开源库can tools来自动生成所述待解析的dbc文件的所述第一c代码。
15.进一步地,所述基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,包括:以所述第一c代码和所述模板文件为输入,在python脚本的驱动下,得到所述第二c代码。
16.进一步地,所述基于所述模板文件对所述第一c代码进行渲染,得到第二c代码即解析can数据的c代码,包括:基于所述jinja2模板引擎的渲染规则对所述第一c代码进行渲
染。
17.第二方面,本发明提供了一种自适应多车型can数据自动解析系统,该系统包括:
18.模板文件定义单元,用于定义解析can数据的模板文件;
19.dbc文件及过滤规则定义单元,用于获得含有所需can报文及过滤规则的dbc文件;
20.第一c代码单元,用于解析所述经过滤的dbc文件,得到第一c代码;
21.can数据解析单元,用于基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所述第二c代码写入共享内存。
22.第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面中的任一项所述的自适应多车型can数据自动解析方法的步骤。
23.第四方面,本发明提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中的任一项所述的自适应多车型can数据自动解析方法的步骤。
24.本发明通过定义用于解析can数据的模板文件,过滤待解析的dbc文件,解析经过滤的dbc文件得到第一c代码,基于模板文件对第一c代码进行渲染得到第二c代码,并且将第二c代码写入共享内存,从而实现了从对can数据进行解析到将解析出来的can信号写入共享内存整个过程的自动化,由此可以提高解析can数据的工作效率并降低错误率。
附图说明
25.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1是根据本发明的一个实施例的自适应多车型can数据自动解析方法的流程图;
27.图2是根据本发明的一个实施例的自适应多车型can数据自动解析系统的示意图;以及
28.图3是根据本发明的又一实施例的电子设备的结构示意图。
具体实施方式
29.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.图1是根据本发明的一个实施例的自适应多车型can数据自动解析方法的流程图。参照图1,该方法可以包括如下步骤:
31.步骤101:定义用于解析can数据的模板文件;
32.步骤102:获取定义了所需can报文及过滤规则的dbc文件;
33.步骤103:解析所述含有过滤规则的dbc文件,得到第一c代码;
34.步骤104:基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所
述第二c代码写入共享内存。
35.具体地,在本实施例中,需要说明的是,在步骤101中,首先可以定义用于解析can数据的模板文件。该模板文件为手动编辑文件,并且基于jinja2模板引擎的渲染规则,定义该模板文件。jinja2主要有如下三种渲染规则:
36.a、控制结构{%%}
37.b、变量取值{{}}
38.c、注释{##}
39.另外,该模板文件与待解析的dbc文件的类型无关,即与发动机的型号无关。针对不同的dbc文件或不同的项目,只需要获取对应的dbc文件,就可以自动完成对can数据的解析工作,可以大大地提高工作效率。
40.在步骤102中,首先从发动机厂家获取待解析的dbc文件,待解析的dbc文件为标准dbc文件,然后自定义一套过滤规则,并将这一套过滤规则定义到文件中,从而可以从dbc文件获得所关心的can数据。例如,一套完整的过滤规则可以如表1所示。需要说明的示,对于canid不一样但是pgn一样的数据的解析,为了增加解析数据的通用性,可以在dbc文件中增加掩码的概念,只要是pgn一样的can数据就可以按照相同的规则去解析can数据。
41.表1dbc文件过滤规则
[0042][0043]
在步骤103中,具体地,可以通过调用python的第三方开源库cantools来自动解析在步骤102中得到的含有过滤规则的dbc文件,得到第一c代码,该第一c代码包含所关心的报文和信号等信息。
[0044]
在步骤104中,可以首先以第一c代码和模板文件为输入,在python脚本的驱动下,对第一c代码进行渲染,得到第二c代码,然后将第二c代码写入共享内存中。其中,可以基于jinja2模板引擎的渲染规则对第一c代码进行渲染。第二c代码为可写入共享内存的包含所关心的报文和信号等信息的代码。另外,该共享内存为车载存储系统的缓冲区(buf)。
[0045]
另外,在本发明中,可以通过excel表的方式来维护can数据的存储地址。can数据的存储地址的示例如下面的表2所示。参照表2,其中第一列的代码元素与dbc中定义的信号
名一一对应,第二列的数据类型表示信号占用的缓冲区的大小,各种数据类型对应的数据长度如下面的表3所示。
[0046]
表2 can数据的存储地址
[0047]
代码元素数据类型位置偏移canvehispeedjccvsword102canclutchswitchjccvsbyte148canbrakeswitchjccvsbyte149cancruiseactivejccvsbyte150canenginespeedjeec1word104canenginetorquejeec1byte151cantorquedemandjeec1byte152cantorquemodejeec1byte153cancoolanttempjet1byte154canenginefuelratejlfeword106cantotalfuelusedjlfcdword24cantotalfuelusedjgfcdword28cantotaldistancejvdhrdword32cantotalhourjhoursdword36cancurgearjetc2byte155canpedalposition1jeec2byte156canfuellevel1jddbyte157canbattpotentialjvep1word108canoilpressjp1word110canintakemanifold1pressjic1dword40canintakemanifold1tempjic1byte158cangrosscombinationjcvwdword44canbrakepedalpositionjebc1byte159cancatalysttankleveljat1t1ibyte160cancatalysttanktempjat1t1ibyte161cancircuit1airpressjair1word112cancircuit2airpressjair1word114
[0048]
表3各种数据类型对应的数据长度
[0049]
[0050][0051]
在表2中,第三列的位置偏移表示的是当前信号在共享内存中的偏移地址;将表2中的数据信息通过python脚本进行解析,可以生成如下的代码片段:
[0052]
enum tsrtpiddefinetag
[0053]
{
[0054]
vehispeedjccvs=0x00000000,///《word can车速
[0055]
clutchswitchjccvs=0x00000002,///《byte离合器状态
[0056]
brakeswitchjccvs=0x00000003,///《byte刹车状态
[0057]
cruiseactivejccvs=0x00000004,///《byte巡航控制使能
[0058]
enginespeedjeec1=0x00000005,///《word发动机转速
[0059]
enginetorquejeec1=0x00000007,///《byte实际发动机扭矩
[0060]
torquedemandjeec1=0x00000008,///《byte驾驶员请求扭矩
[0061]
torquemodejeec1=0x00000009,///《byte发动机扭矩模式
[0062]
coolanttempjet1=0x0000000a,///《byte发动机冷却液温度
[0063]
enginefuelratejlfe=0x0000000b,///《word发动机燃油率(瞬时油耗)
[0064]
totalfuelusedjlfc=0x0000000d,///《dword总油耗
[0065]
totalfuelusedjgfc=0x00000011,///《dword总气耗
[0066]
totaldistancejvdhr=0x00000015,///《dword高分辨率总里程
[0067]
totalhourjhours=0x00000019,///《dword发动机总工作时间
[0068]
curgearjetc2=0x0000001d,///《byte当前档位
[0069]
pedalposition1jeec2=0x0000001e,///《byte油门
[0070]
fuellevel1jdd=0x0000001f,///《byte燃油液位
[0071]
battpotentialjvep1=0x00000020,///《word电瓶电压
[0072]
oilpressjp1=0x00000022,///《word机油压力
[0073]
intakemanifold1pressjic1=0x00000024,///《dword进气压力
[0074]
intakemanifold1tempjic1=0x00000028,///《byte进气温度
[0075]
grosscombinationjcvw=0x00000029,///《dword整车总质量
[0076]
brakepedalpositionjebc1=0x0000002d,///《byte制动踏板位置
[0077]
catalysttankleveljat1t1i=0x0000002e,///《byte尿素液位
[0078]
catalysttanktempjat1t1i=0x0000002f,///《byte尿素温度
[0079]
circuit1airpressjair1=0x00000030,///《word制动回路1气压
[0080]
circuit2airpressjair1=0x00000032,///《word制动回路2气压
[0081]
};
[0082]
上面的代码片段中的枚举定义的名字与信号名是一一对应的,最后可以将解析出来的信号值写入到对应的共享内存的地址。
[0083]
由上述实施例可知,本发明可以通过定义用于解析can数据的模板文件,定义了过滤规则的dbc文件,得到第一c代码,基于模板文件对第一c代码进行渲染得到第二c代码,并且将第二c代码写入共享内存,实现从对can数据进行解析到将解析出来的can信号写入共享内存整个过程的自动化,由此可以提高解析can数据的工作效率并降低错误率。
[0084]
图2是根据本发明的另一实施例的自适应多车型can数据自动解析系统的示意图。
[0085]
在本实施例中,需要说明的是,参照图2,根据本发明的自适应多车型can数据自动解析系统可以包括:模板文件定义单元201,用于定义解析can数据的模板文件;dbc文件及过滤规则定义单元202,用于获取定义了所需can报文及过滤规则的dbc文件;can数据解析单元203,用于解析所述定义了过滤规则的dbc文件,得到第一c代码;第二c代码单元204,用于基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所述第二c代码写入共享内存。
[0086]
由于本发明实施例提供的自适应多车型can数据自动解析系统,可以用于执行上述实施例所述的自适应多车型can数据自动解析方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
[0087]
在本实施例中,需要说明的是,本发明实施例的装置中的各个单元可以集成于一体,也可以分离部署。上述单元可以合并为一个单元,也可以进一步拆分成多个子单元。
[0088]
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图3,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信。
[0089]
所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述的自适应多车型can数据自动解析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:定义用于解析can数据的模板文件;获取定义了过滤规则的dbc文件;解析定义了过滤规则的dbc文件,得到第一c代码;基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所述第二c代码解析出来的can信号写入共享内存。
[0090]
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
[0091]
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的自适应多车型can数据自动解析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:定义用于解析can数据的模板文件;获取定义了过滤规则的dbc文件;解析所述定义了过滤规则的dbc文件,得到第一c代码;基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所述第二c代码解析出来的can信号写入共享内存。
[0092]
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
[0093]
基于相同的发明构思,本发明又一实施例提供了一种计算机程序产品,所计算机程序产品包括有计算机程序,该计算机程序被处理器执行时实现上述的自适应多车型can数据自动解析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:定义用于解析can数据的模板文件;获取定义了过滤规则的dbc文件;解析所述定义了过滤规
则的dbc文件,得到第一c代码;基于所述模板文件对所述第一c代码进行渲染,得到第二c代码,并将所述第二c代码解析出来的can信号写入共享内存
[0094]
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
[0095]
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0096]
以上所描述的装置实施例仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0097]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的自适应多车型can数据自动解析方法。
[0098]
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0099]
此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0100]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可
以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1