1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > [Matlab]利用Simulink进行模型设计和代码自动生成

[Matlab]利用Simulink进行模型设计和代码自动生成

时间:2022-08-17 12:52:07

相关推荐

[Matlab]利用Simulink进行模型设计和代码自动生成

上一期讲到线性插值法在数值近似上的应用,末尾简单提了下直接利用Matlab进行验证和代码生成。

今天接着上一讲说说具体的方法以及如何通过配置选项进行优化,从而使之适用于嵌入式芯片上运行。

准备工作

Matlab b。当然有更高版本的也一样。大家可以去官网申请试用版,土豪可以直接购买。

Microsoft Visual Studio 。之前试过Matlab b与VS关联,总是提示错误,缺少x86 SDK。所以建议用VS。

两个软件进行关联。之所以要关联,是因为C代码自动生成以后,Matlab会调用C编译器编译一次生成的代码。不过即便不关联也无所谓,你可以copy到你的嵌入式芯片IDE中进行编译。关联方法参见前面几期的内容:

如何在Matlab中与VS关联编译和调试C代码

模型建立

还是类似上一期的例子,假定有一款PTC温度传感器的温度与其分压得到的电压值关系如下。

我们首先利用Simulink的look up table组件进行线性插值,将数据填入对应配置窗口。类似上一讲的方式,简单验证下模型输入输出是否如设想一样。

初版代码生成

在Simulink组件中找到in和out端子,放在lookup table两端。另外,只有在solver选择了Fixed-step才能进行代码自动生成。配置方法如下,选择设置按钮,找到Solver选项:

- Type:Fixed-step,意思为固定仿真补偿,简单的理解就是按固定的频率跑一次;

- Solver:我一般选择ode1。通俗的来说,不同的Solver表示不同数学解法。限于篇幅就不展开了,具体可以自己百度一下。

- Fixed-step size:0.02,单位是s,意思是每20ms跑一次仿真。参数的设置取决于你这段代码实际想在嵌入式芯片运行的频率。

然后在Code选项找到C/C++ Code,然后选择Build Model,等待完成。完成后会有窗口弹出。还可以在command窗口看生成代码历经的整个过程。

完成之后,可以在模型所在文件夹找到生成的源码。

乍一看是不是很失望?代码文件很多,而且代码行数也很多,排布有点杂乱。别急,接下来开始优化配置。

优化代码生成

优化1:创建子模块,并定义函数名和文件名

- 全选模型的所有组件,创建一个Subsystem。

- 将创建好的子系统,右击进行如下配置:

- 勾选红色框部分的内容

- 可以选择自定义的执行函数名以及生成的代码文件的文件名。

优化2:优化生成代码格式

- 选择Embedded coder模式生成代码

- 选择内联参数。不勾选的话,它会把常量也定义为一个结构,会增加代码量。

- 根据你的芯片配置你期望的硬件平台。

优化3:设置代码生成报告的内容,方便代码生成以后查看情况。

以下是生成的报告和代码文件

- 代码总体概览,如代码行数,变量个数等

- 实际生成代码。是不是比之前默认配置生成的代码简洁且清晰多了?

本期小结:本期以线性插值为例,详细讲述了如何在Simulink中进行各项操作,以生成更加适合在嵌入式芯片中运行的代码。在更高版本的Matlab中,除了上述的优化配置以外,还有许多其他方法选项进一步优化生成的代码,有兴趣的话可以参考前面几期的内容:[Matlab]Matlab 深圳站主题演讲资料分享。本期就这样啦。觉得不错的话,欢迎扫码关注本公众号。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。