Simulink模型生成C语言

16 篇文章 4 订阅

本文详细介绍了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 %f\n", rtU.In1, rtY.Out1); //写入
      printf("%f %f\n", rtU.In1, rtY.Out1);
  }
  fclose(file_path);//关闭文件

保存的数据如下所示
在这里插入图片描述
我们看一下转成C代码运行的效果(将上面数据绘制图形)
在这里插入图片描述

  • 35
    点赞
  • 242
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Simulink是一个基于模型的设计工具,它可以帮助用户在图形化界面下进行系统建模和仿真。而C语言是一种通用的编程语言,它可以用于开发各种类型的软件,包括嵌入式系统的控制程序。 在Simulink中,用户可以使用Stateflow来进行C语言代码的集成。Stateflow是一个可视化的状态机工具,它可以将用户定义的状态机模型转换为C语言代码,并与Simulink模型进行整合。用户可以在Stateflow中使用基本的C语言语法,如if语句、for循环、函数调用等。 另外,在Simulink中还有一些针对嵌入式系统开发的工具箱,如Embedded Coder和Simulink Coder。这些工具可以将Simulink模型自动转换为C语言代码,并提供了一些优化选项,以帮助用户生成高效的嵌入式软件。 ### 回答2: Simulink是由MathWorks开发的一种模块化仿真环境,用于建立、模拟和分析动态系统。它允许工程师和科学家通过图形化界面来设计、测试和验证各种系统的行为。而C语言是一种通用的编程语言,用于开发各种类型的软件和应用程序。 SimulinkC语言可以结合使用,通过Simulink中的Stateflow和Embedded Code功能,可以将C代码嵌入到模型中,实现更复杂的仿真和控制系统设计,以及对实时应用程序的开发。这为工程师提供了更高的灵活性和可扩展性,以满足不同的设计和开发需求。 SimulinkC语言开发中具有以下几个优点: 1. 简化开发:Simulink提供了丰富的图形化界面和预定义的模块库,让用户可以直观地设计系统模型。这样可以大大简化C语言开发的过程,使代码编写更加高效和易于维护。 2. 仿真与验证:Simulink能够将C代码直接转换为仿真模型,并提供完整的仿真和验证功能。可以通过观察系统响应、调整参数和验证设计来优化C代码,以实现更好的系统性能。 3. 自动生成可执行代码Simulink可将模型转换为C代码,并自动生成可执行文件,实现快速展示和验证系统功能。这样可以加快开发速度,降低出错概率。 4. 支持庞大的C语言库:C语言具有丰富的库函数,可以实现各种功能。通过SimulinkC语言的结合,可以利用已有的C语言库,提高开发效率和功能实现。 因此,通过结合SimulinkC语言,工程师可以更加高效地进行系统设计和开发,实现各种应用程序和控制系统,提升工程质量和生产效率。 ### 回答3: Simulink是一种用于模拟和建模动态系统的工具,而C语言是一种广泛使用的编程语言。结合SimulinkC语言可以实现复杂系统的模拟和控制设计。 首先,Simulink提供了一个图形化界面,用户可以通过拖放和连接各种模块来创建一个系统模型。这些模块可以代表各种不同类型的元件,例如传感器、执行器、控制器等。组合这些模块可以生成一个动态系统的模型。 然后,用户可以使用Simulink内建的仿真器来验证系统模型的行为。仿真器可以根据所设置的输入条件和参数对模型进行仿真,以获得系统在不同情况下的动态响应。这样可以帮助用户评估和优化系统的性能。 C语言是一种功能强大且广泛使用的编程语言,可以与Simulink结合使用以实现更复杂的系统功能。通过使用SimulinkC语言代码生成器,用户可以将Simulink模型转化为C语言代码,并将其嵌入到具体的硬件平台或嵌入式系统中。这样可以实现对系统的精确控制和实时反馈。 SimulinkC语言生成器还可以生成可执行代码或库文件,这样用户可以直接在C语言开发环境中进行进一步的调试和优化。同时,用户还可以使用C语言编写自定义的功能模块,这些模块可以通过Simulink中的S-Function进行集成和调用。 综上所述,通过SimulinkC语言的结合,用户可以实现复杂系统的建模、仿真和控制设计,以及与具体硬件平台的集成。这种组合使得系统开发和优化更加高效和灵活,并可以应用于各种工程和科学领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RNG_uzi_

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值