Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

前言:   上一篇文章详细学习了如何通过Simulink建立系统模型,进而生成嵌入式代码。本文通过实例进一步加深对代码自动生成的理解和应用。一、建立系统框图      为了方便起见,在这里我们实现一个的简单算法,我们在simulink中建立系统框图如下所示:  在生成代码之前,给k输入一个数,在命令行输入k=3,如下所示:然后配置一些参数,ctrl+E调出Configuration …

大家好,又见面了,我是你们的朋友全栈君。

前言:

      上一篇文章详细学习了如何通过Simulink建立系统模型,进而生成嵌入式代码。本文通过实例进一步加深对代码自动生成的理解和应用。

一、建立系统框图

        为了方便起见,在这里我们实现一个Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」的简单算法,我们在simulink中建立系统框图如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

   在生成代码之前,给k输入一个数,在命令行输入k=3,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

然后配置一些参数,ctrl+E调出Configuration  Parameters,首先设置Solver标签页,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

然后设置Code Generation标签页,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

然后在Report子标签页,配置允许生成报告,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

再按ok,如下:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

二、代码生成

     当参数配置完成以后,我们就可以利用ctrl+B快捷键生成代码:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

不巧,产生错误了,这个只需要更改一下文件保存路径就好了,我们将红框中的路径更改为要保存文件的地址,我就放在桌面,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

重新进入simulink,ctrl+B编译模型,可以看到算法的基本代码已经生成了,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

     但是可以看到,上面生成的代码比较复杂,无法直接使用到嵌入式系统中去,接下来我们使用Embedded Coder来生成接近我们使用的嵌入式代码。

三、代码优化

     我们再次打开代码配置管理器(ctrl+E),按下图配置,将系统目标文件更改为ert.tlc,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

      再次生成的代码如下所示,可以看到代码文件数量明显减少,算法也慢慢接近我们想看到的:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

      但是,生成的代码名称都是结构体,看起来略显复杂,能不能简单化呢?  

      接下来将使用“数据对象”进行数据管理,让代码看起来更简单化。    

      便于管理,首先将模型文件中所有模块选中,然后生成子模块,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

       子系统的建立,有两种方法,一种是将模型文件中所有模块选中,按ctrl+G快捷键;一种是将模型文件中所有模块选中,选择Diagram->Subsystem & Model Reference ->Create Subsystem from Selection,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

     在各个信号线上双击,添加信号名,x,y和z,如下:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

    然后进入Model Explorer:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

      添加信号对象和信号名关联起来,添加MPT Signal的信号对象x,y,z,步骤如下:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

   如此重复三遍即可添加MPT Signal的信号对象x,y,z,如下所示:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

      添加x,y,z信号对象后,需要关联信号名,关联信号名,在信号线上右键,点击Signal Properties…,点击Signal Properties…后,按下图勾选Signal name must resolve to Simulink signal object ,让信号名解析到信号对象上去 ,x,y,z都按如下设置,设置之后图变为右边所示,保存。

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

我们再按下ctrl+B快捷键,生成的代码如下:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

    注意,在MATLAB关闭后,工作空间里的东西就没了,为此我们必须保存workspace里的环境,在命令窗口输入save(‘my_dat_data.mat’),这样我们的工作空间就保存为了my_dat_data.mat文件,下次运行该模型之前,可以先load(‘my_dat_data.mat’)加载工作空间,恢复环境。还可以使用Simulink.saveVars(‘my_m_data.m’)保存,需要的时候,拖拽进命令行,则直接打开工作空间,如下:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

        我们生成的算法,也许在很多地方被调用,这是就需要把我们的算法模块单独出来作为一个子系统,可以把算法单独放在一个文件中,首先选中算法子模块,在菜单栏点击Diagram->Block Parameter (Subsystem ):

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

弹出如下菜单,设置我们需要的子模块名称及文件名称:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

再按下ctrl+B快捷键,子模块及其功能代码就生成了,如下:

Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127890.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Mysql5.5升级到5.7的过程已经踩到的坑

    Mysql5.5升级到5.7的过程已经踩到的坑

    2021年10月22日
  • 学习MySQL这一篇就够了

    第一章数据库概述1.1、数据库的好处将数据持久化到本地提供结构化查询功能1.2、数据库的常见概念DB:数据库,存储数据的仓库DBS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理DB,常见的有MySQL、Oracle、DB2、SQLServerSQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言1.3、数据库的存储特点数据存放到表中,然后表再放到库中一个库中可以有多张表,每张表具有唯一的表名用来标识

    2022年4月7日
  • MySQL的索引类型及创建索引

    MySQL的索引类型及创建索引一、介绍MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语法CREATETABLEtable_name[col_namedatatype][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.unique|fulltext…

    2022年6月3日
  • Landsat 9 数据详细介绍

    Landsat 9 数据详细介绍1.基本情况Landsat9号是Landsat系列中最新的一颗卫星,计划于2020年12月在加利福利亚范登堡空军基地加利福尼亚由AtlasV401火箭搭载进行发射,实际于于2021年9月27日发射,并已经开始采集第一批数据,2021年10月31日获取到遥感数据。Landsat9是继续Landsat系列对地球表面观测不可替代的记录。为了减少建造时间和观测缺口的风险,Landsat9在很大程度上复制了它的前身Landsat8。来源:原文链接…

    2022年7月23日
  • win10桌面快捷方式图标变白卡死_win10桌面快捷方式图标变白删除

    win10桌面快捷方式图标变白卡死_win10桌面快捷方式图标变白删除桌面快捷方式变成白色图标是由于缓存文件的问题导致,删除IconCache.db这个文件后重启文件资源管理器。一、找到路径C:\Users\你的用户名\AppData\Local\IconCache.dbAppData文件夹和IconCache.db这2个文件默认是隐藏的需要更改:文件夹选项>查看>隐藏文件和文件夹>显示隐藏的文件、文件夹和驱动器选…

    2022年10月19日
  • 树莓派是什么?能干什么?和单片机有什么区别?「建议收藏」

    树莓派是什么?能干什么?和单片机有什么区别?「建议收藏」什么是树莓派?树莓派是由树莓派基金会发布的卡片式电脑,起初的目的是为了让更多的孩子们可以学习计算机编程,但是发布以后受到了广大计算机爱好者的喜爱。树莓派被称为卡片式电脑,顾名思义它可以安装操作系统,并且接上显示屏鼠标键盘就可以正常使用,在上面可以用python或者C语言编程并运行。树莓派和单片机的区别?树莓派是卡片式电脑可以装操作系统,可以直接在上面编程并运行,而单片机是没有操作系统的它…

    2022年5月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号