基于Simulink模型的嵌入式代码生成.ppt

基于Simulink模型的嵌入式代码生成.ppt

ID:49956928

大小:2.64 MB

页数:32页

时间:2020-03-05

基于Simulink模型的嵌入式代码生成.ppt_第1页
基于Simulink模型的嵌入式代码生成.ppt_第2页
基于Simulink模型的嵌入式代码生成.ppt_第3页
基于Simulink模型的嵌入式代码生成.ppt_第4页
基于Simulink模型的嵌入式代码生成.ppt_第5页
资源描述:

《基于Simulink模型的嵌入式代码生成.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于Simulink模型的嵌入式代码生成主要内容使用SimulinkCoder生成代码使用EmbeddedCoder生成代码-使用数据对象进行数据管理-代码生成的优化设置-模型级算法函数原型的控制-子系统算法函数以及文件的控制-平台化模型的代码生成-代码的等效性测试实例:一.建立一个Simulink模块,使用SimulinkCoder生成代码1.打开Simulink模型管理器。2.创建一个Simulink模型,名为demo_model1.mdl,并保存。3.按图下所示,在Simulink库中,添加各功能模块到demo_model1.mdl文件中,并连接信号线。这里,我们实现一个

2、out1=(ln1+ln2)*k的简单算法。4.在生成代码之前,给k输入一个数,在命令行输入k=3,然后配置一些参数,打开菜单栏simulationConfigurationParameters,按照下图配置代码执行频率0.01(10ms)。5.配置目标文件及语言Real-TimeWorkshop®(RTW)从Simulink模型生成优化的,可移植的和可定制的ANSIC代码,我们在这里面进行一系列的配置。6.配置允许生成报告,这样在building后,可以打开看代码7.Apply,并点击Building开始生成代码,或按快捷键Ctrl+B8.可以看到算法的基本代码已经

3、生成了二.使用EmbeddedCoder生成代码----使用数据对象进行数据管理1.可以看到上面生成的代码比较复杂,无法直接使用到嵌入式系统中去,接下来我们使用EmbeddedCoder来生成接近我们使用的嵌入式代码。打开我们的代码配置管理器(ctrl+E),按下图配置。2.再次生成的代码如下所示,可以看到代码文件数量明显减少,算法也慢慢接近我们想看到的。3.生成的代码名称都是结构体,看起来略显复杂,能不能简单化呢?接下来将使用“数据对象”进行数据管理,让代码看起来更简单化。首先将demo_model1.mdl文件中所有模块选中,点EditCreatesubsyetem,生成

4、子模块,便于管理在各个信号线上双击,添加信号名,x,y和z4.添加信号对象和信号名关联起来,添加MPTSignal的信号对象x,y,z5.添加x,y,z信号对象后,需要关联信号名6.关联信号名,在信号线上右键,点击SignalProperties…7.点击SignalProperties…后按下图勾选SignalnamemustresolvetoSimulinksignalobject让信号名解析到信号对象上去x,y,z都按如下设置,设置之后图变为右边所示,保存。8.我们再按下ctrl+B快捷键,生成的代码如下9.可以看到代码变得简单了,但是还有一个k还是结构体变量,我们继续优

5、化,我们删除原来的变量k,添加一个MPTParameter,命名为k,值为310.设置k的参数内联,并再次Building(Ctrl+b),生成代码11.代码生成如下12.注意,在MATLAB关闭后,工作空间里的东西就没了,为此我们必须保存workspace里的环境,在命令窗口输入save(‘my_dat_data.mat’),这样我们的工作空间就保存为了my_dat_data.mat文件,下次运行该模型之前,可以先load(‘my_dat_data.mat’)加载工作空间,恢复环境。还可以使用Simulink.saveVars(‘my_m_data.m’)保存,需要的时候,拖

6、拽进命令行,则直接打开工作空间。----代码生成的优化设置1.可以设置产生代码的一些限定条件和执行效率。----模型级算法函数的原型的控制1.我们可以自定义生成的代码函数原型,包括函数名,输入参数,输出参数等,使其符合我们的上层调用接口2.我们可以自定义生成的代码函数原型,包括函数名,输入参数,输出参数等,使其符合我们的上层调用接口3.自定义函数原型需要把x,y,z信号对象存储类型设为Auto4.自定义函数原型后,生成的代码如下所示----子系统算法函数以及文件的控制1.我们生成的算法,也许在很多地方被调用,这是就需要把我们的算法模块单独出来作为一个子系统,可以把算法单独放在一

7、个文件中,首先选中算法子模块,在菜单栏点击EditSubsystemParameter,弹出如下菜单,设置我们需要的子模块名称及文件名称。2.子模块及其功能代码以及生成了。3.我们将demo_model1.mdl复制一份,命名为demo_model2.mdl,并将里面的模块全选,按住ctrl拖动复制一份,得到如下图所示4.因为子系统是原子化的,所以生成的代码如下,可以看到同样的功能代码被两次调用,这正是平台化模型代码的生成,而不是一样的算法写两遍,当这些模块被多次调用,相对来说可以大大减少

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。