当前位置:网站首页>Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」
Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」
2022-07-25 23:02:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
前言:
上一篇文章详细学习了如何通过Simulink建立系统模型,进而生成嵌入式代码。本文通过实例进一步加深对代码自动生成的理解和应用。
一、建立系统框图
为了方便起见,在这里我们实现一个
的简单算法,我们在simulink中建立系统框图如下所示:
在生成代码之前,给k输入一个数,在命令行输入k=3,如下所示:
然后配置一些参数,ctrl+E调出Configuration Parameters,首先设置Solver标签页,如下所示:
然后设置Code Generation标签页,如下所示:
然后在Report子标签页,配置允许生成报告,如下所示:
再按o
二、代码生成
当参数配置完成以后,我们就可以利用ctrl+B快捷键生成代码:
不巧,产生错误了,这个只需要更改一下文件保存路径就好了,我们将红框中的路径更改为要保存文件的地址,我就放在桌面,如下所示:
重新进入simulink,ctrl+B编译模型,可以看到算法的基本代码已经生成了,如下所示:
但是可以看到,上面生成的代码比较复杂,无法直接使用到嵌入式系统中去,接下来我们使用Embedded Coder来生成接近我们使用的嵌入式代码。
三、代码优化
我们再次打开代码配置管理器(ctrl+E),按下图配置,将系统目标文件更改为ert.tlc,如下所示:
再次生成的代码,可以看到代码文件数量明显减少,算法也慢慢接近我们想看到的:
但是,生成的代码名称都是结构体,看起来略显复杂,能不能简单化呢?
接下来将使用“数据对象”进行数据管理,让代码看起来更简单化。
便于管理,首先将模型文件中所有模块选中,然后生成子模块,如下所示:
子系统的建立,有两种方法,一种是将模型文件中所有模块选中,按ctrl+G快捷键;一种是将模型文件中所有模块选中,选择Diagram->Subsystem & Model Reference ->Create Subsystem from Selection,如下所示:
在各个信号线上双击,添加信号名,x,y和z,如下:
然后进入Model Explorer:
添加信号对象和信号名关联起来,添加MPT Signal的信号对象x,y,z,步骤如下:
如此重复三遍即可添加MPT Signal的信号对象x,y,z,如下所示:
添加x,y,z信号对象后,需要关联信号名,关联信号名,在信号线上右键,点击Signal Properties…,点击Signal Properties…后,按下图勾选Signal name must resolve to Simulink signal object ,让信号名解析到信号对象上去 ,x,y,z都按如下设置,设置之后图变为右边所示,保存。
我们再按下ctrl+B快捷键,生成的代码如下:
注意,在MATLAB关闭后,工作空间里的东西就没了,为此我们必须保存workspace里的环境,在命令窗口输入save(‘my_dat_data.mat’),这样我们的工作空间就保存为了my_dat_data.mat文件,下次运行该模型之前,可以先load(‘my_dat_data.mat’)加载工作空间,恢复环境。还可以使用Simulink.saveVars(‘my_m_data.m’)保存,需要的时候,拖拽进命令行,则直接打开工作空间,如下:
我们生成的算法,也许在很多地方被调用,这是就需要把我们的算法模块单独出来作为一个子系统,可以把算法单独放在一个文件中,首先选中算法子模块,在菜单栏点击Diagram->Block Parameter (Subsystem ):
弹出如下菜单,设置我们需要的子模块名称及文件名称:
再按下ctrl+B快捷键,子模块及其功能代码就生成了,如下:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127890.html原文链接:https://javaforall.cn
边栏推荐
- The third experiment OSPF
- Qt的TQTreeWidget控件
- CUDA environment construction
- [opencv] edge detection [API and source code implementation]
- What is the difference between bio, NiO and AIO?
- Summary of common methods of string:
- AI chief architect 12 AICA industrial landing analysis under the industrial production process optimization scenario
- Zcmu--5015: complete the task
- Anaconda~Upload did not complete.
- 码蹄集 万民堂大厨
猜你喜欢

5 ROS仿真建模(3- rviz+gazebo+控制仿真机器人)

Websocket summary

Use of qvariant

MathType安装和解决不能Crtl+V的问题

AI首席架构师12-AICA-工业生产过程优化场景下产业落地解析

Von Neumann architecture

Basic knowledge of radar

【自然语言处理】【向量表示】AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法

The new media operation strategy (taking xiaohongshu as an example) helps you quickly master the creative method of popular models

Single model common sense reasoning first surpasses human beings! HFL summit openbookqa challenge
随机推荐
【自然语言处理】【向量表示】AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法
技术美术百人计划学习笔记(1)--基础渲染管线
[literature reading] - HRL -[hrl with universal policies for multi step robotic control]
Panzer_ Jack's personal blog founding day
Simple setting method of search box
连续三年成为云AI服务领导者,亚马逊云科技做对了什么?
2020-09-17
Network Security Learning (XIII) data link layer
SSH服务器CBC加密模式漏洞(CVE-2008-5161)
HJ7 取近似值
Single model common sense reasoning first surpasses human beings! HFL summit openbookqa challenge
Express framework
CMU AI PhD 第一年总结
依法严厉打击违规自媒体运营者:净化自媒体行业迫在眉睫
Hj7 take approximate value
JVM memory area
Notification(状态栏通知)详解
Matrixcube unveils the complete distributed storage system matrixkv implemented in 102-300 lines
Structure principle of micro ball vibration switch with chip
[PTA] 7-19 check face value (15 points)