Simulink自动代码生成:生成代码的基本设置
Simulink自动代码生成也被称作基于模型开发(BMD),相比于传统的手写代码方式能够尽量减少人为错误。模型本身可以用于仿真,单元测试等,更便于提前发现逻辑错误。同时只要约定好模型接口,就可以多人协作,每个人单独开发一个功能模块缩短了开发周期,最终将每个人生成的代码集成到一起就可以构成一个完整的工程。因此,基于模型开发的方式受到很多大公司的欢迎,尤其是车企更是将其作为首要的开发方式。
目录
- 一. 新建一个简单的模型
- 二. 更改模型配置参数
- 三. 自动生成代码
- 四. 总结
一. 新建一个简单的模型
笔者使用的是MALAB2020a,以前用的MATLAB2016b及MATLAB018b也基本差不多,只是最新版本多了一些功能。打开MATLAB/Simulink,新建一个简单的计算模型,实现以下功能:
Y1=(X1+X2)∗X3Y1 = (X1+X2) * X3 Y1=(X1+X2)∗X3
所搭建的模型如下:
二. 更改模型配置参数
首先打开Model configuration parameters,对模型配置参数进行设置。
(1)对求解器进行设置,对于生成代码而言第三步不是必须的,求解器的类型也可以根据实际情况而定,但定步长(Fixed-step)是必须的。
(2)对硬件进行设置,我现在所使用的是TI公司的C2000系列芯片(以前做模型开发时用的是车规级芯片TC275),硬件芯片根据自己的实际情况进行选择。
(3)进行代码生成配置,系统目标文件选择嵌入式代码,语言为C语言。
(4)在代码生成选项卡下选择报告,可以自动生成代码报告,这一步不是必须的,不影响代码生成,但有助于我们查看代码,因此还是做如下设置比较好。
至此,代码生成最基本的配置已经完成,接下来就可以进行代码生成了。
三. 自动生成代码
(1)MATLAB2020a与以前的版本有所不同,代码生成功能在APPS选项卡下,打开APPS,选择Embedded Coder就会出现C CODE选项卡。
(2)进入C CODE选项,选择Build,也可以使用快捷键Ctrl+D进行编译,检查模型是否有错误。
(3)编译后发现错误,原因是模型不在工作目录下。
(4)将Simulink模型保存到CodeGeneration文件夹下,并命名为Calculation(命名随意,不要含有违规字符即可),然后将MATLAB工作目录换成CodeGeneration所在路径,如图所示。
(5)在此Build将不会再出现错误,然后进行代码生成,选择步骤(2)图片中的第二步,也可以使用快捷键Ctrl+B进行代码生成,代码生成后如下图。
(6)选择Calculation.c可以看到实现了我们所需要的函数功能,变量的声明在.h文件中,读者可自行查看。
(7)生成的代码全部在Calculation_ert_rtw文件夹下,此文件夹是系统自动生成的,前缀是根据搭建的模型来定的,后面是系统默认添加的。
四. 总结
以上就是生成代码的基本步骤,注意这里仅仅讲解了基本配置,更复杂的配置及代码优化将在后续的系列文章中进行详细的讲解。不进行其它配置,这样的代码无法用于实际项目中,如何使得代码按照自己想要的样子生成,这才是自动代码生成的关键。
Simulink自动代码生成:生成代码的基本设置相关推荐
- Simulink自动代码生成:数据字典的建立及代码优化
在上一节<Simulink自动代码生成:生成代码的基本设置>的基础上,我们来对模型进行优化,使得生成的代码更能满足实际的需求,没看过我上一篇文章的可以点开如下链接: Simulin ...
- 一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b)
一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b) 写在前面 1.stm32cub ...
- Simulink自动代码生成(一)
一个simulink模型能够生成代码首先要满足的条件: 1:确保模型仿真的正确性2:将需要的输入和输出改成input和output模块3:离散化模型,设置求解器为离散,固定步长 满足上面条件后,接 ...
- Simulink自动代码生成
Simulink学习笔记(二)--Simulink自动代码生成(一) Simulink学习笔记(三)--Simulink自动代码生成(二)
- Simulink自动代码生成3——优化生成的代码(optimizing generated code)
代码优化综述 使用simulink代码生成之后,如果需要进一步对执行效率或者内存优化,可以看下面提到的方法.具体可从以下几个方面考虑: remove initialization code remov ...
- Simulink自动代码生成2——生成嵌入式代码(generating embedded code)
写在前面,一个小tips:用低版本打开高版本slx的方法如下,这个方法不是万能的,可能会引发一些错误,谨慎使用. 目录 1. 代码生成的常用界面 2. 代码基本结构 代码文件的主结构 主循环函数 生成 ...
- Simulink自动代码生成:原子子系统(Atomic Subsystem)
在前两节的基础上我们继续来学习代码的优化,没看过我前两篇文章的可以先去看一下,否则可能觉得模型出现的很突兀.这一节我们来学习原子子系统,废话不多说,我们直接开始学习,看完了这一篇你就会明白什么是原 ...
- Matlab/Simulink 自动代码生成详细步骤
最近一直在忙于FCU控制器的模型搭建,空闲之余也想分享一下自己对Simulink建模过程中的一些想法,从接触simulink到应用simulink大约已经两年多了,随着接触时间,慢慢发现simulin ...
- Simulink 自动代码生成原理
如下图,Simulink模型会先变成一个文本式的 .rtw 模型描述文件,然后再变成 .c,.h,最后编译为最终目标文件. 典型的 Simulink 用户通常都是,用Simulink设计好算法后,做到 ...
最新文章
- LeetCode Online Judge 题目C# 练习 - Minimum Path Sum
- shell中的变量赋值
- ansys中的柱坐标与直角坐标关系
- 笔记-信息化与系统集成技术-智慧城市建设参考模型
- 怎么查看自己linux实验环境,Linux实验
- Python实训day13am【Python网络爬虫综合大作业PPT】
- 2025年公有云或将服务中国过半数字经济
- 如何进行MaxCompute 用户认证?
- 我的世界java版tis,我的世界1.7.10~1.8.8 9tis-3d回到汇编的时代mod
- MySQL命令之mysqlhotcopy -- 热备份
- nvarchar(2048)能写多少个字符_我的拼多多店一个标题能带来多少的免费流量?三个字“非常多”...
- Webpack入门教程十四
- EF BB BF的问题
- CTFHub | HG泄露
- 手把手教您:iOS 6.1~6.12 完美越狱教程
- CDN是什么?如何用Cloudflare CDN加速网站
- 在Ubuntu 8.10 中安装使用新一代输入法ibus Deb包下载
- matlab 三角函数 积化和差,三角函数积化和差与和差化积公式
- 关于在线银行卡支付限额问题 解决方案
- Java 编程语言单词汇总(建议收藏)