本发明涉及一种基于dbc文件解析生成车载网关路由表的处理方法。
背景技术:
1、
2、随着汽车通信需求和要求的提高,汽车各个通道之间的can网关通信也越来越重要。但是随着各个公司的不同业务需求,can网关的转发路由表也不尽相同。cn114979314a的专利文献公开了一种汽车can数据自动解析方法及系统、计算机可读存储介质、电子设备,该方法包括的步骤为:编辑dbc文件,删除不需要解析的can信号的定义信息并加载编辑后的dbc文件;加载第i个can报文文件,识别编辑后的dbc文件中需要解析的can信号的id,基于id对can报文文件进行处理,即删除can报文文件中不需要的报文帧;找到处理之后的can报文文件的首帧报文id以及首帧报文id对应的所有报文帧位置。该技术能够从原始报文数据中提取出指定信号的1hz报文数据,在解析计算时只针对1hz的报文数据,在处理长时间的过程数据时,1hz的解析结果数据也使得最终的数据分析处理更加便利,还可以实现多can报文文件的自动化处理,使得can报文解析工作的效率显著提升。但是显著缺点是:不能实现对dbc文件制作问题的解析,最终找到dbc缺少元素。cn210609213u的专利文献公开了一种可配置化协议转换网关,包括mcu、can控制器、收发器、文件传输模块;所述mcu为主控芯片,通过并口eim与can控制器连接;通过文件传输模块将外部配置文件写入mcu中;所述can控制器为can报文收发芯片,通过收发器接收发送外部报文;所述文件传输模块包括wifi、以太网、usb、sd卡、emc、qspi。其显著效果是:具备更多路can信号的网关,并且能够导入dbc文件自动生成相应代码;可以通过脚本实现can信号的解析;实现不同网段和不同网络协议之间的信号交互;可通过ftp在线更新数据;支持usb、tf、以太网等相关需求的功能定制;实现网关路由相关功能,并且使得配置路由信息表更简单。但是,本方案缺少对于具体信号的转换处理。
技术实现思路
1、本发明的目的在于克服上述不足,并实现基于dbc文件解析生成车载网关路由表的处理方法,其有效解决can报文转发excel关系表转化为可供操作的数据列表的问题。
2、为了实现上述目的,本发明采用的技术方案为:一种基于dbc文件生成车载网关路由表的处理方法,其特征在于,包括:
3、根据厂商提供的excel文件,自行制作网关路由表基础信号节点的dbc文件和网关路由表转发关系的dbc后缀文件,上述dbc文件使用candb++生成can.dbc,根据can.dbc标准格式的关键字,建构解析dbc模块框架;
4、根据所述解析dbc模块框架编写解析dbc模块,通过所述解析dbc模块解析can.dbc获取到最基础的路由信号节点;
5、创建connect.txt的转发关系文件,前期修改填充其中元素,后期制作完成则更改后缀为connect.dbc文件;
6、最后,根据connect.dbc文件自定义的关键字,建构dbc链接解析框架,编写链接解析模块,完成对于转发关系文档的解析,获取到路由表节点间联系的线性关系。
7、进一步地,建构解析dbc模块框架,包括:
8、手动使用candb++生成can.dbc文件;
9、使用fopen函数打开对应的can.dbc文件;
10、根据dbc标准的bo_sg_ba_解析获取报文信息,信号信息,周期信息,生成对应日志;
11、获取到的上述信息,填入对应的数组,分别为发送报文数组,发送信号数组,接收报文数组,接收信号数组,数组直接的联系依据报文id和信号起始位相连;
12、以写的方式打开一个hex文件,结合转发关系生成的数组,把所有数组放在一个结构体内,最后按照hex文件格式定义输出信息到固定的hex文件。
13、进一步地,打开对应的can.dbc文件,包括:打开和应用程序同一文件下的dbc文件和dbc后缀文件,文件命名格式can.dbc和connect.dbc。
14、进一步地,所述解析获取报文信息,包括:标准dbc文件关键字的解析,dbc的bo_关键字,包含报文的id和长度,节点,通过特殊命名节点知晓其所在can网络,接收报文通道号,发送还是接收报文。
15、进一步地,dbc文件后缀关键字解析,包括:自定义关键字,sts_关键字包含了m报文的i信号转发到n报文的j信号,操作模式,操作数,值改变表,根据报文id和基础信号表相关联,mtm_关键字解析,完整转发关系,m报文数据转发到n报文上,m和n分属不同can网络。
16、进一步地,所述生成对应日志,包括:根据所解析的关键字行生成对应的log.txt文本格式的记录日志,另外一个解析日志则是data.txt,这个文件包含了路由表所有元素的打印信息,如果发现打印信息对不上,则根据log.txt的解析关键字信息,排查路由表解析问题。
17、进一步地,所述按照hex文件格式定义输出信息到固定的hex文件,包括:根据解析到报文的所有信息,报文id,报文长度,所属通道号,接收或者发送,信号起始位,长度,信号格式,信号对信号转发关系,报文对报文转发关系,未接收信号发送默认值,未接收到报文发送固定值,操作模式,操作数,值改变表等所有路由表构成信息,转换成有意义数形成固定数组表格。
18、进一步地,还包括:通过将表格转换成字符形式的数据,按照hex和bin文件格式去填充数据,最终生成hex文件和bin文件。
19、进一步地,建构dbc链接解析框架,包括:
20、第一步:打开转发关系文档,此处为使用fopen函数打开工作目录下的connect.dbc文档;
21、第二步:解析connect.dbc内自定义的转发关系关键字;
22、第三步:sts_等信号关系转换成数组,生成转发关系表,sts_关键字后含有接收报文id,接收信号起始位,发送报文id,发送信号起始位,两个坐标确定一个点,sts_含有两个点坐标,包括:报文id和信号长度;
23、第四步:根据sts_自定义的值改变信号定义格式,解析每个信号转发时是否需要数据转换;
24、第五步:将数据转换解析后的数据存放到数据改变表内;
25、第六步:所有表格生成后,自动地形成连接关系网,接收报文id信号起始位对应发送报文id信号起始位就完全链接了。
26、本发明的有益效果为:
27、实现简单,通过基于dbc文件设计规范,excel报文转发列表,转换为最终报文收发的路由表所需要经过的操作流程。最终效果为excel转换表手动生成dbc文件,编写自定义转发关系文档,程序根据dbc文件和转发关系文档,生成对应的hex和bin文件。最终can报文转发路由表由网关根据对应hex和bin文件提取出来,去形成可供依据的can报文转发关系。能够实现can报文转发excel关系表转化为可供操作的数据列表。根据dbc文件去制作路由表,可将解析报文文件利用起来,不用制作多余的信号文件。拥有两种可烧录文件格式,能更好适用于上位机或其余文件传输手段。可自定义的转发关系,可以让客户在报文定义方面拥有更多的灵活度。满足不同元器件直接报文信号的差异。日志模块,dbc和自定义的转发关系文档可能会解析错误。可通过日志解析文档和基础信号表文档找出程序设计缺陷或者显示dbc文件或转发关系文档格式的问题。