一种基于MATLAB/Simulink实现上层逻辑与底层代码的集成方法与流程

文档序号:11677273阅读:5143来源:国知局
一种基于MATLAB/Simulink实现上层逻辑与底层代码的集成方法与流程

【技术领域】

本发明属于汽车电子控制技术领域,具体涉及一种基于matlab/simulink实现上层逻辑与底层代码的集成方法。



背景技术:

目前,基于matlab/simulink模型的设计开发流程,已在汽车电子领域得到广泛应用与认可。该开发流程的代码由模型生成,模型与需求挂接,在仿真中一经验证即可直接生成嵌入式代码。而基于模型的上层逻辑代码与底层开发环境代码的集成,则需要手动完成,容易造成bug,不方便不熟悉c代码集成的用户使用,且降低嵌入式开发效率。



技术实现要素:

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于matlab/simulink实现上层逻辑与底层代码的集成方法,避免了手动集成可能造成的bug,并且为不熟悉c代码集成的工程师提供了方便,提高了嵌入式开发效率。

本发明采用以下技术方案:

一种基于matlab/simulink实现上层逻辑与底层代码的集成方法,在模型开发初期准备底层变量和can报文与上层模型程序的接口,通过调用build.m程序实现上层逻辑与底层代码的集成,并生成可刷写的mot文件,用于测试标定的map文件以及a2l文件。

进一步的,包括以下步骤:

s1、在底层程序中对系统变量及报文做接口程序,并在simulink程序中建立相应变量;

s2、在matlab/simulink环境下对系统can报文进行解析与反解析;

s3、编写dos命令行,依次运行build模型生成代码;集成生成代码与底层程序;调用makefile集成编译;生成可刷写文件;运行刷写软件完成上层逻辑与底层代码的集成。

进一步的,步骤s1中,将底层程序中对应于pin脚的系统变量和对应于can报文的数组以赋值的形式与matlab/simulink层面以datastorememory模块建立的变量进行一一对应,变量的声明由自动生成代码实现,建立底层与simulink层的接口程序。

进一步的,所述接口程序包括signal_in、signal_out、can_in和can_out,所述signal_in表示底层变量的输入,所述signal_out表示底层变量的输出,所述can_in表示报文的接收,所述can_out表示报文的发送。

进一步的,步骤s2中,以simulink模块库中的demux模块将一个八位的报文数组分解为八个信号,再分别进行移位、比例放大/缩小以及减去偏移量操作,完成报文解析。

进一步的,步骤s2中,所述反解析具体为:对信号进行移位、比例放大/缩小以及减去偏移量操作,以mux模块将八个信号组合成一个报文数组,完成报文的反解析。

进一步的,所述步骤s3中,将simulink模型自动生成代码与底层开发环境代码集成,通过调用编写的makefile文件实现matlab环境下集成编译全系统文件,再以命令行的方式实现一键刷写,将生成的map文件以及a2l文件自动拷贝至指定路径,实现一键build工作。

进一步的,所述map文件以及a2l文件的生成过程为:在matlab环境下通过dos命令运行文件,调用底层编译器;将所述dos命令与文件复制、修改等命令整合为一个bat文件,并在build.m文件中运行,实现一键完成编译、刷写、生成map文件以及a2l文件工作。

与现有技术相比,本发明至少具有以下有益效果:

本发明一种基于matlab/simulink实现上层逻辑与底层代码的集成方法,提出了一种上层变量和can报文与底层的变量接口方案:通过matlab/simulink模块库中的datastorememory模块建立上层逻辑中的变量与报文,并在底层开发环境中建立变量对应的c代码,无需在后续开发中修改matlab/rtw自动生成的代码;

进一步的,在底层程序中对系统变量及报文做接口程序,并在simulink程序中建立相应变量,该接口方案,避免了变量的重复定义造成的编译错误,也不需要对matlab自动生成的代码进行任何修改;在matlab/simulink环境下对系统can报文进行解析与反解析,将can报文的解析与反解析程序建立在simulink层面,便于开发人员理解解析规则,也避免了与底层进行更多信号的交互;一键build程序为研发工程师提供了极大的便利,上层逻辑开发工程师,无需关心底层代码如何运行,如何集成编译等问题,甚至无需读懂c代码,这样可以集中精力进行算法逻辑的开发,提高了工作效率,有效避免了代码移植过程中可能造成的各种问题。

进一步的,can报文解析采用搭建simulink模块的方式:将底层收(发)的报文通过接口变量以数组的形式读取至上层模型中的datastoreread模块,借助模块库中的移位、或(与)等模块建立报文解析程序;

进一步的,基于dos命令建立一键build程序:只需运行该程序即可实现build模型、生成代码并与底层环境集成,编写底层编译器的makefile文件,在matlab环境下调用该文件即可实现联合编译,最终生成可刷写文件以及标定文件,并且可直接调用刷写工具开始刷写,将生成的文件copy重命名至指定文件夹,便于文件管理,实现了高效率的软件开发与测试。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

【附图说明】

图1为本发明底层变量与simulink接口程序界面图;

图2为本发明can报文解析程序界面图;

图3为本发明一键build程序流程图。

【具体实施方式】

本发明提供了一种基于matlab/simulink实现上层逻辑与底层代码的集成方法,在模型开发初期做好底层变量和can报文与上层模型程序的接口,通过调用该开发平台的build.m程序,即可一键实现上层逻辑与底层代码的集成,并生成可刷写的mot文件,用于测试标定的map文件以及a2l文件。

本发明公开了一种基于matlab/simulink实现上层逻辑与底层代码的集成方法,包括以下步骤:

s1、在底层程序中对系统变量及报文做接口程序,并在simulink程序中建立相应变量;

在底层程序中分别建立signal_in/out和can_in/out四个c程序文件,对应于底层变量的输入输出与can报文的接收发送。将底层程序中对应于pin脚的系统变量和对应于can报文的数组以赋值的形式与matlab/simulink层面以datastorememory模块建立的变量进行一一对应,变量的声明由自动生成代码实现,至此便建立了底层与simulink层的接口程序。

s2、在matlab/simulink环境下对系统can报文进行解析与反解析;

报文的解析,以simulink模块库中的demux模块将一个八位的报文数组分解为八个信号,再分别进行移位、比例放大或缩小、减去偏移量等操作,完成报文解析。报文的反解析则是进行与上述操作相反的过程,最后以mux模块将八个信号组合成一个报文数组。

s3、编写dos命令行,将simulink模型自动生成代码与底层开发环境代码集成,通过调用编写的makefile文件实现matlab环境下集成编译全系统文件,再以命令行的方式调用刷写工具软件,实现一键刷写,同时将生成的map文件以及a2l文件自动拷贝至指定路径,最终实现一键build工作,完成该二次开发平台的设计。

makefile文件描述了整个工程的编译、连接等规则。编写基于本系统底层编译器的makefile文件,在matlab环境下通过dos命令运行该文件,即可调用底层编译器。将上述dos命令与文件复制、修改等命令整合为一个bat文件,并在build.m文件中运行,即可实现一键完成编译、刷写、生成map文件以及a2l文件等工作。

请参阅图1所示,图1左侧,以datastorememory模块建立变量,右侧以datastoreread模块读取各变量并进行了滤波、数据类型等处理,以bus模块输出到下一系统模型。

请参阅图2所示,以demux模块将一条can报文分为八个信号,再分别进行移位、数据类型转换等操作,最后进行比例放大或缩小,增加偏移量,输出极为解析之后的can报文信号。

请参阅图3所示,首先在simulink中build模型生成代码,再与底层代码集成进行编译,最后生成可刷写文件,运行刷写程序。以上过程均通过运行build.m工具一键完成。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1