基于Simulink模型的嵌入式代码生成详解.pptVIP

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Simulink模型的嵌入式代码生成详解

基于Simulink模型的嵌入式代码生成 主要内容 使用Simulink Coder生成代码 使用Embedded Coder生成代码 -使用数据对象进行数据管理 -代码生成的优化设置 -模型级算法函数原型的控制 -子系统算法函数以及文件的控制 -平台化模型的代码生成 -代码的等效性测试 实例: 一.建立一个Simulink模块,使用Simulink Coder生成代码 1.打开Simulink模型管理器。 2.创建一个Simulink模型,名为demo_model1.mdl,并保存。 3.按图下所示,在Simulink库中,添加各功能模块 到demo_model1.mdl文件中,并连接信号线。 这里,我们实现一个out1=(ln1+ln2)*k的简单算 法。 4.在生成代码之前,给k输入一个数,在命令行输入k=3,然后配置一些参数,打开菜单栏simulation?Configuration Parameters,按照下图配置代码执行频率0.01(10ms)。 5.配置目标文件及语言 Real-Time Workshopreg;( RTW ) 从Simulink模型生成优化的,可移植的和可定制的ANSI C代码,我们在这里面进行一系列的配置。 6.配置允许生成报告,这样在building后,可以打开看代码 7.Apply,并点击Building开始生成代码,或按快捷键Ctrl+B 8.可以看到算法的基本代码已经生成了 二.使用Embedded Coder生成代码 ----使用数据对象进行数据管理 1.可以看到上面生成的代码比较复杂,无法直接使用到嵌入式系统中去,接下来我们使用Embedded Coder来生成接近我们使用的嵌入式代码。 打开我们的代码配置管理器(ctrl+E),按下图配置。 2.再次生成的代码如下所示,可以看到代码文件数量明显减少,算法也 慢慢接近我们想看到的。 3.生成的代码名称都是结构体,看起来略显复杂,能不能简单化呢? 接下来将使用“数据对象”进行数据管理,让代码看起来更简单化。 首先将demo_model1.mdl文件中所有模块选中,点Edit?Create subsyetem,生成子模块,便于管理 在各个信号线上双击,添加信号名,x,y和z 4.添加信号对象和信号名关联起来,添加MPT Signal的信号对象x,y,z 5.添加x,y,z信号对象后,需要关联信号名 6. 关联信号名,在信号线上右键,点击Signal Properties… 7. 点击Signal Properties…后 按下图勾选Signal name must resolve to Simulink signal object 让信号名解析到信号对象上去 x,y,z都按如下设置,设置之后图变为右边所示,保存。 8. 我们再按下ctrl+B快捷键,生成的代码如下 9. 可以看到代码变得简单了,但是还有一个k还是结构体变量,我们继续优化,我们删除原来的变量k,添加一个MPT Parameter,命名为k,值为3 10. 设置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’)保存,需要的时候,拖拽进命令行,则直接打开工作空间。 ----代码生成的优化设置 1.可以设置产生代码的一些限定条件和执行效率。 ----模型级算法函数的原型的控制 1.我们可以自定义生成的代码函数原型,包括函数名,输入参数,输出参数等,使其符合我们的上层调用接口 2.我们可以自定义生成的代码函数原型,包括函数名,输入参数,输出参数等,使其符合我们的上层调用接口 3.自定义函数原型需要把x,y,z信号对象存储类型设为Auto 4.自定义函数原型后,生成的代码如下所示 ----子系统算法函数以及文件的控制 1.我们生成的算法,也许在很多地方被调用,这是就需要把我们的算法模块单独出来作为一个子系统,可以把算法单独放在一个文件中,首先选中算法子模块,在菜单栏点击Edit?Subsystem Parameter,弹出如下菜单,设置我们需要的子模块名称及文件名称。 2.子

文档评论(0)

cc880559 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档