一种基于matlab生成控制器can交互层的方法及系统的制作方法

文档序号:6490099阅读:101来源:国知局
一种基于matlab生成控制器can交互层的方法及系统的制作方法
【专利摘要】本发明提供了一种基于MATLAB自动生成控制器CAN交互层C代码的方法及系统,所述方法包括以下步骤:步骤S01,获取运行信号;步骤S02,根据运行信号,查找CAN数据库的文本信息;步骤S03,将查找到的CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息;步骤S04,根据生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。该方法和系统不需要手动编写交互层代码,从而减少开发代码的时间,提高了工作效率。
【专利说明】—种基于MATLAB生成控制器CAN交互层的方法及系统
【技术领域】
[0001]本发明涉及计算机和自动控制【技术领域】,尤其涉及一种基于MATLAB生成控制器CAN交互层的方法及系统。
【背景技术】
[0002]CAN (Controller Area Network)已经成为一种最为常用的车用控制器局域网通信协议,这种通信协议规定了每帧最长64位的数据包。在控制器软件应用中,需要将这种数据包根据事先定义好的数据库,解析成具有物理意义的实际信号。
[0003]根据CAN数据库将数据包解析成实际物理信号,在控制器软件分层中称为“交互层”。交互层的软件开发复杂度,会随着CAN数据库的增大而增加。特别是车用局域网上的CAN信号量十分巨大,从而导致CAN信号的软件解析以及其它的相关软件处理工作量很大。如果采用手写代码方式,那么手动C语言编程需要消耗大量时间,而且如果CAN数据库做一些细小的修改,都需要软件工程师根据数据库的改动去手动修改代码,浪费大量人力物力,并且不能保证准确度。另外,在交互层代码中,只要指定了其中一帧CAN信号的解析方式,其它CAN信号的解析方式需要根据CAN数据库里的信息进行类似处理。因此如果采用手写代码的方式去编写CAN信息的交互层需要耗费大量时间和精力,并且维护和修改十分不方便。

【发明内容】

[0004]本发明的目的旨在至少解决上述技术缺陷之一,提供一种基于MATLAB自动生成控制器CAN交互层C代码的方法及系统。
[0005]本发明提供一种基于MATLAB生成控制器CAN交互层的方法,所述方法包括以下步骤:
[0006]步骤SOI,获取运行信号;
[0007]步骤S02,根据运行信号,查找CAN数据库的文本信息;
[0008]步骤S03,将查找到的CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息;
[0009]步骤S04,根据生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。
[0010]本发明还提供一种基于MATLAB生成控制器CAN交互层的系统,所述系统与MATLAB工具连接,所述系统包括获取模块、查找模块、处理模块以及生成模块;
[0011]获取模块,用于获取运行信号;
[0012]查找模块,用于根据获取模块的运行信号,查找CAN数据库的文本信息;
[0013]处理模块,用于将查找模块中CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息;
[0014]生成模块,用于根据处理模块的生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。
[0015]从上述的方案可以看出,通过获取到脚本程序的运行信号,使得从搜集CAN数据库的文本信息到生成交互层代码文件的过程都是自动生成的,不需要手动编写交互层代码,提高交互层代码的准确性以及开发代码的时间,从而减少控制器的开发时间,提高了工作效率且提高控制器的安全性,另外在软件修改和维护过程中,如果更改了 CAN数据库的相关内容,只需修改CAN数据库,然后重新获取一次脚本程序的运行信号,便可以重新得到改动后CAN数据库的交互层代码了,缩短控制器的开发周期且提高控制器的安全性。
【专利附图】

【附图说明】
[0016]图1为本发明基于MATLAB生成控制器CAN交互层的方法一种实施例的流程图;
[0017]图2为本发明查找CAN数据库的文本信息的方法一种实施例的流程图;
[0018]图3为本发明基于MATLAB生成控制器CAN交互层的方法另一种实施例的流程图;
[0019]图4为本发明生成交互层代码文件的方法一种实施例的流程图;
[0020]图5为本发明基于MATLAB生成控制器CAN交互层的系统一种实施例的结构框图。
【具体实施方式】
[0021]为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0022]本发明提供一种实施例的基于MATLAB生成控制器CAN交互层的方法,如图1所示,所述方法包括以下步骤:
[0023]步骤SOI,获取运行信号;
[0024]步骤S02,根据运行信号,查找CAN数据库的文本信息;
[0025]步骤S03,将查找到的CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息;
[0026]步骤S04,根据生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。
[0027]在步骤SOl中,所述运行信号即脚本程序的运行信号,其中脚本程序包括查找程序、调用程序等,MATALB软件中编写脚本程序,接着运行脚本程序,通过脚本程序过与MATALB软件进行信息交互,便可以自动生成交互层代码文件,然后将交互层代码文件保存到控制器中,控制器根据交互层的协议进行信号通讯。
[0028]从上述的方案可以看出,通过获取到脚本程序的运行信号,使得从搜集CAN数据库的文本信息到生成交互层代码文件的过程都是自动生成的,不需要手动编写交互层代码,提高交互层代码的准确性以及开发代码的时间,从而减少控制器的开发时间,提高了工作效率且提高控制器的安全性,另外在软件修改和维护过程中,如果更改了 CAN数据库的相关内容,只需修改CAN数据库,然后重新获取一次脚本程序的运行信号,便可以重新得到改动后CAN数据库的交互层代码了,从而缩短控制器的开发周期且提高控制器的安全性。
[0029]在具体实施中,如图2所示,所述步骤S02具体包括:
[0030]步骤S021,根据运行信号,以文本格式打开CAN数据库文件;[0031]步骤S022,根据CAN数据库文件的特定标记,查找CAN数据库的文本信息。
[0032]在步骤S021,CAN数据库文件的存储类型为CAN.dbc,如果通过CANdbc++软件打开CAN数据库文件,得到的就是CAN数据库的图形化配置界面,但是在本发明中,需要获取CAN数据库文件的文本信息,因此利用MATLAB软件以文本格式打开CAN数据库文件,得到CAN数据库文件的文本代码信息。
[0033]优选的,如图2所示,所述步骤S022具体包括:
[0034]步骤S0221,逐行读取CAN数据库中的信息;
[0035]步骤S0222,判断当前读取的行信息中是否包含特定标记,如果是,进入步骤S0224保存该信息的内容,如果否,进入步骤S0223 ;
[0036]步骤S0223,判断当前读取的行信息是否为CAN数据库的最后一行,如果否,进入步骤S0221 ;
[0037]步骤S0224,保存该行信息的内容,进入步骤S0223。
[0038]在步骤S0223中,如果当前读取的行信息为CAN数据库的最后一行时,那么逐行读取CAN数据库中的信息的过程结束,即查找过程结束,已经查找到CAN数据库的文本信息。
[0039]在步骤S022中,所述特定标记包括CAN消息的定义标记和信号属性标记,CAN消息的定义标记和信号属性标记在CAN数据库中已经事先设置好的。比如设置CAN消息的定义标记为“B0”,读取CAN数据库中的每一行的信息,当该行中存在“B0”标记时,该标记后的第一个字符为CAN消息的ID号,下一个字符为CAN消息的ID名,再下一个字符为CAN消息的长度,最后一个字符为发送节点名。而设置信号属性标记为“SG”,也是读取CAN数据库中的每一行的信息,当该行中存在“SG”标记时,该标记后的第一个字符为信号名,下一个字符为信号起始位置及长度,再下一个字符为偏移量和比例因子,再下一个字符为信号范围,最后一个字符为接收节点名。也就是说利用MATLAB的库函数,逐行读取CAN数据库中的信息,然后判断当前读取的行信息是否“B0”标记或“SG”标记,如果是就保存“B0”标记或“SG”标记之后的字符信息,即CAN数据库的文本信息。
[0040]那么在步骤S03中,由于每一帧CAN消息实际上是一个8*8的矩阵,在对CAN数据库的文本信息进行处理,主要进行是通过计数的方式计算每一个CAN消息包括多少个信号,以及根据每个信号的起始位置及长度,获得每一帧CAN消息的所有信号在矩阵中的位置等处理,从而得到生成交互层所需的CAN数据库信息。
[0041 ] 在具体实施中,为了方便后续步骤对CAN数据库的信息调用,可以在步骤S02之后或在步骤S03之后,对CAN数据库的信息以表格的形式进行存储。如果在S02之后,在步骤S05中,以表格形式对CAN数据库的文本信息进行存储;
[0042]由于CAN数据库的文本信息需要进行处理之后才能得到生成交互层所需的CAN数据库信息,因此在进行处理之后再进行生成交互层所需的CAN数据库信息的存储,能更好地方便下一步骤的调用,如图3所示,在步骤S03之后,所述方法还包括以下步骤:
[0043]步骤S06,以表格形式对生成交互层所需的CAN数据库信息进行存储。
[0044]在步骤S06中,以表格形式归类存储的方法就是以每个CAN信息为一个大项,在此之下将每个CAN信息所包含的信号以及信号的属性 列出,从而方便下一步骤对表格中信息的调用。
[0045]在具体实施中,在所述步骤S04之前,如图3所示,即所述步骤S06与所述步骤S04之间,所述方法还包括以下步骤:
[0046]步骤S07,获取用户的CAN数据库配置信息。
[0047]在步骤S07中,利用MATLAB的⑶I (图形化用户界面)功能,搜集用户对于CAN数据库的配置信息,通过用户的配置信息可以配置生成交互层代码的文件类型、函数名以及返回值等信息,为用户提供友好的操作界面,使得该方法更加人性化。
[0048]在具体实施中,如图3所示,步骤S04具体为:
[0049]步骤S040,根据生成交互层所需的CAN数据库信息、用户的CAN数据库配置信息以及按照CAN数据库的格式,生成交互层代码文件。
[0050]在本实施例中,如图4所示,所述步骤S040,具体包括:
[0051]步骤S041,创建交互层代码的空文件;
[0052]步骤S042,在所述空文件中生成具有交互层代码特征的函数;
[0053]步骤S043,在交互层代码特征的函数中添加生成交互层所需的CAN数据库信息和用户的CAN数据库配置信息,生成交互层代码文件。
[0054]在步骤S040中,交互层代码的空文件为.C和.H文件,通过MATLAB调用Windows下的接口函数,从而创建为.C和.H文件。接着在空的.C和.H文件中,按照CAN数据库的格式即按照交互层代码的特定形式,生成具有交互层代码特征的函数,然后在交互层代码特征的函数中添加生成交互层所需的CAN数据库信息和用户的CAN数据库配置信息,便生成交互层代码文件,交互层代码文件具体包括拆包代码文件、解包代码文件以及CAN数据库I/O相关代码文件等。
[0055]本发明还提供一种基于MATLAB生成控制器CAN交互层的系统,所述系统与MATLAB软件连接,如图5所示,所述系统包括获取模块1、查找模块2、处理模块3以及生成模块4 ;
[0056]获取模块I,用于获取运行信号;
[0057]查找模块2,用于根据获取模块I的运行信号,查找CAN数据库的文本信息;
[0058]处理模块3,用于将查找模块2中CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息;
[0059]生成模块4,用于根据处理模块3的生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。
[0060]优选地,所述系统还包括存储模块5,所述存储模块5可以用于以表格形式对查找模块CAN数据库的文本信息进行存储,并输出至处理模块3。
[0061]由于CAN数据库的文本信息需要进行处理之后才能得到生成交互层所需的CAN数据库信息,在进行处理之后再进行生成交互层所需的CAN数据库信息的存储,能更好地方便下一步骤的调用,因此在本实施例中,所述系统还包括存储模块5,所述存储模块5用于以表格形式对处理模块3中的CAN数据库信息进行存储,并输出至生成模块4。
[0062]从上述的方案可以看出,通过获取到脚本程序的运行信号,使得从搜集CAN数据库的文本信息到生成交互层代码文件的过程都是自动生成的,不需要手动编写交互层代码,提高交互层代码的准确性以及开发代码的时间,从而减少控制器的开发时间,提高了工作效率且提高控制器的安全性,另外在软件修改和维护过程中,如果更改了 CAN数据库的相关内容,只需修改CAN数据库,然后重新获取一次脚本程序的运行信号,便可以重新得到改动后CAN数据库的交互层代码了,缩短控制器的开发周期且提高控制器的安全性。[0063]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于MATLAB生成控制器CAN交互层的方法,其特征在于:所述方法包括以下步骤: 步骤SOl,获取运行信号; 步骤S02,根据运行信号,查找CAN数据库的文本信息; 步骤S03,将查找到的CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息; 步骤S04,根据生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。
2.如权利要求1所述的方法,其特征在于:所述步骤S02具体包括: 步骤S021,根据运行信号,以文本格式打开CAN数据库文件; 步骤S022,根据CAN数据库文件的特定标记,查找CAN数据库的文本信息。
3.如权利要求2所述的方法,其特征在于:所述步骤S022具体包括: 步骤S0221,逐行读取CAN数据库中的信息; 步骤S0222,判断当前读取的行信息中是否包含特定标记,如果是,进入步骤S0224保存该信息的内容,如果否,进入步骤S0223 ;` 步骤S0223,判断当前读取的行信息是否为CAN数据库的最后一行,如果否,进入步骤S0221 ; 步骤S0224,保存该行信息的内容,进入步骤S0223。
4.如权利要求3所述的方法,其特征在于:所述特定标记包括CAN消息的定义标记和信号属性标记。
5.如权利要求1所述的方法,其特征在于:在步骤S02之后,所述方法还包括以下步骤: 步骤S05,以表格形式对CAN数据库的文本信息进行存储。
6.如权利要求1所述的方法,其特征在于:在步骤S03之后,所述方法还包括以下步骤: 步骤S06,以表格形式对生成交互层所需的CAN数据库信息进行存储。
7.如权利要求1所述的方法,其特征在于:在所述步骤S04之前,所述方法还包括以下步骤: 步骤S07,获取用户的CAN数据库配置信息。
8.如权利要求7所述的方法,其特征在于:步骤S04具体为: 步骤S040,根据生成交互层所需的CAN数据库信息、用户的CAN数据库配置信息以及按照CAN数据库的格式,生成交互层代码文件。
9.如权利要求8所述的方法,其特征在于:所述步骤S040,具体包括: 步骤S041,创建交互层代码的空文件; 步骤S042,在所述空文件中生成具有交互层代码特征的函数; 步骤S043,在交互层代码特征的函数中添加生成交互层所需的CAN数据库信息和用户的CAN数据库配置信息,生成交互层代码文件。
10.一种基于MATLAB生成控制器CAN交互层的系统,所述系统与MATLAB工具连接,其特征在于:所述系统包括获取模块、查找模块、处理模块以及生成模块;获取模块,用于获取运行信号; 查找模块,用于根据获取模块的运行信号,查找CAN数据库的文本信息; 处理模块,用于将查找模块中CAN数据库的文本信息进行处理,得到生成交互层所需的CAN数据库信息; 生成模块,用于根据处理模块的生成交互层所需的CAN数据库信息以及按照CAN数据库的格式,生成交互层代码文件。
11.如权利要求10所述的系统,其特征在于:所述系统还包括存储模块, 所述存储模块,用于以表格形式对查找模块CAN数据库的文本信息进行存储,并输出至处理模块。
12.如权利要求10所述的系统,其特征在于:所述系统还包括存储模块, 所述存储模块,用于以表格形式对处理模块中的CAN数据库信息进行存储,并输出至生成模块。`
【文档编号】G06F9/44GK103777934SQ201210407489
【公开日】2014年5月7日 申请日期:2012年10月23日 优先权日:2012年10月23日
【发明者】何涛, 徐吉汉, 江建山, 伊海霞, 甘新华, 范刚, 罗宇亮, 杨春雷 申请人:广州汽车集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1