概述
本文详细介绍了simulink(matlab2021)连续模型离散化,代码生成以及最终运行到Visual Studio 2022环境的详细过程,希望对大家有帮助。
第一步 创建Simulink模型
运行之后,通过Scope查看结果如下
注意:我们要确保模型仿真运行没有问题
第二步 将输入和需要的输出换成input和output模块
第三步 离散化模型
如果创建的Simulink模型中有连续模块,比如积分环节,那麽一定要离散化,否则即使生成C代码也会报错。(为什么报错?先挖个坑)
点击设置
停止时间设置为inf,设置求解器,采样时间。
系统的目标文件
选择为ert.tlc,即采用嵌入形式的C/C++代码生成,其结构更为简洁。生成的语言可选择C或者C++。
代码生成
->接口
在模型资源管理器中查看定义的变量和配置的接口
模型离散化器
对simulink模型进行离散化,离散后的效果如下
第四步 生成C代码
首先,对建立的模型进行离散化
我们借助APP
中的embedded coder工具
生成C代码
进行编译
然后使用快速开始
,按步骤进行生成C代码
其中,我们现在选择的C语言类型为PC格式,还可以选择ARM板格式
生成的C代码如下所示(/xxxx_ert_rtw
文件夹下)
第五步 在VS2022上运行
点击文件
->新建
->从现有的代码中创建
打开ert_main.c
这个文件
OK,我们在while循环中编写控制程序
(下面是写入while循环中的部分程序)
//定义文件地址和名字,指针
FILE* file_path = fopen("simulation.txt", "a+");
int i = 0;
while (i < 20000) {
/* Perform application tasks here */
if (i <= 20)
rtU.In1 = 0;
if (i > 20 && i <= 40)
rtU.In1 = 60;
/* Step the model */
PID_Test_step();
i++;
fprintf(file_path, "%f %fn", rtU.In1, rtY.Out1); //写入
printf("%f %fn", rtU.In1, rtY.Out1);
}
fclose(file_path);//关闭文件
保存的数据如下所示
我们看一下转成C代码运行的效果(将上面数据绘制图形)
最后
以上就是长情过客为你收集整理的Simulink模型生成C语言的全部内容,希望文章能够帮你解决Simulink模型生成C语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复