Simulink自动代码生成2——生成嵌入式代码(generating embedded code)

写在前面,一个小tips:用低版本打开高版本slx的方法如下,这个方法不是万能的,可能会引发一些错误,谨慎使用。
在这里插入图片描述

目录

1. 代码生成的常用界面

2. 代码基本结构

  • 代码文件的主结构
  • 主循环函数
  • 生成代码中的数据综述
  • 信号声明与定义
  • 参数声明与定义
  • 入口函数
  • 模型的数据结构

3. 代码生成过程

  • 模型编译
  • 代码生成
  • 可执行文件生成(可选)

1. 代码生成的常用界面

以官方slx文件(piCtrl.slx)为基础,以matlab 2019b为工具,
在这里插入图片描述
在这里插入图片描述
该模型实现的是如下公式:
在这里插入图片描述

有如下几个常用界面:
1)configset里的solver界面
在这里插入图片描述
2)configset里的code generation界面
在这里插入图片描述
3)这里有特别重要的几个界面:

  • c code:可在APP里搜索embedded coder调出该界面,该界面用于代码生成和测试的主界面;
  • code:显示生成的代码和模型的链接关系(如下图,点击模型中具体模块,就可链接到对应code);
  • model data editor:设置模型中数据属性;
  • code mapping:设置代码中数据和函数属性的默认行为。
    在这里插入图片描述
    在这里插入图片描述

2. 代码基本结构

代码文件的主结构
生成后的代码如下在这里插入图片描述
好多人搞不清这些文件有什么区别和联系,包含了什么什么东西。这里拆解分析一下,生成的文件一般分为7个:

  • model.c:定义3个入口函数(entry points function),initial_func,step_func(其中包含算法),terminal_func
  • model.h:声明模型中的数据结构(data structure),全局数据和全局函数(extern)
  • model_private.h:模型或子模型的局部变量(local),一般被model.c所#include;
  • model_types.h:包含实时模型(real-time model)的数据结构声明,一般函数复用时的函数声明会放在该文件中。
  • model_data.c:对模型中tunable的参数(parameter)进行赋初值,或者对I/O口数据结构声明(待定)。(该文件不一定每次都生成出来,具体看configset对参数的设置:inline不生成,tunable会生成)。
  • rtwtypes.h:宏定义数据类型,为了统一matlab中数据类型和目标板中数据类型的名称。
  • ert_main.c:代码生成的默认主函数,用来调用入口函数的。其中还包含一个overrun的标志位判断,防止程序超时。

在这里插入图片描述

主循环函数

ert_main.c是默认生成的主循环函数,用来调用3个入口函数:

  • model_initialize :程序开始运行前执行(定义在model.c中)。包含错误标志位初始化、外部输入输出初始化、初始状态初始化。
  • rt_OneStep:由周期中断调用该函数,内部包含OverrunFlag的标志位检测和model_step函数(定义在model.c中)
  • model_terminate:程序执行结束后执行(定义在model.c中)

ert_main.c截取如下(model_initialize / rt_OneStep / model_terminate):
在这里插入图片描述
在这里插入图片描述
piCtrl.c截取和对应公式如下(OverrunFlag / model_step):
在这里插入图片描述
生成代码中的数据综述

生成的代码中有3大类数据:signal,parameter和state。

在这里插入图片描述
上图数据可通过model data editor进行编辑,注意红框内容
在这里插入图片描述

其默认的命名方式如下,熟记命名规则有利于快速理解梳理代码。
在这里插入图片描述
设置在这里:
在这里插入图片描述

信号声明与定义

信号一般分为:状态,输入和输出。simulink一般会先在.h中定义信号的数据类型,再在.h中用该数据类型声明变量,最后再.c中定义信号并使用。

  • 信号的数据类型定义

在这里插入图片描述

  • 信号的声明

在这里插入图片描述

  • 信号的定义

在这里插入图片描述

参数声明与定义

configset对参数有个重要的控制项:inline和tunable。默认为inline即内联,将参数直接用初值生成到代码中。tunable适配标定,将参数设置为变量然后赋初值,这样使得该参数可标定。
在这里插入图片描述

下面说下tunable的情况:参数与信号类似,但simulink一般把参数打包成一个结构体,先在.h中定义结构体,然后在types.h中用typedef对结构体类型另命名,再在.h中用typedef定义的结构体类型生成实例,最后在data.c中对结构体赋初值。

  • 在.h中定义参数结构体

在这里插入图片描述

  • 在types.h中用typedef对结构体类型另命名

在这里插入图片描述

  • 在.h中用typedef定义的结构体类型生成实例

在这里插入图片描述

  • 在data.c中对结构体赋初值

在这里插入图片描述

入口函数

  • 在.h中对函数原型进行声明

在这里插入图片描述
在.c中对函数进行定义
在这里插入图片描述
在这里插入图片描述

模型的数据结构

模型的数据结构(model data structure)指的是根模型的timing,solvers等real-time信息。如ert_main.c中的OverrunFlag标志位。
model data structure和参数(parameter)很类似,如下:

  • 在.h中结构体类型定义

在这里插入图片描述

  • 在types.h中结构体typedef另命名

在这里插入图片描述

  • 在.c中用extern将另命名后的结构体实例化声明

在这里插入图片描述

  • 在.c中进行变量或指针的定义

在这里插入图片描述

  • 在主函数中使用

在这里插入图片描述

3. 代码生成过程

过程分为3块:模型编译,代码生成,可执行文件生成(可选)。
编译过程:model.slx → model.rtw(描述文件:输入输出/变量) → .c.h → 通过makefile生成model.exe,图示如下:
在这里插入图片描述
详细描述3个步骤示图:

模型编译

在这里插入图片描述

代码生成

在这里插入图片描述

可执行文件生成(可选)

在这里插入图片描述

  • 22
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: MMC (Modular Multilevel Converter)逆变器是新一代的高压直流输电技术。该技术具有高电压级别、高转换效率和低谐波输出等特点,适用于大型电力系统的长距离高效输电。而Simlink是MathWorks公司所开发的一款连接MATLAB和Simulink的交互式环境,可用来建立和分析控制系统的模型。 因此,MMC逆变器Simlink是指使用Simlink软件建立并模拟MMC逆变器的控制系统模型,用来优化MMC逆变器在高压直流输电系统中的性能并预测其行为。通过MMC逆变器Simlink模型,可对MMC逆变器进行故障仿真、参数调节等操作,得到更加准确的控制系统设计。此外,MMC逆变器Simlink技术还可用于对大型电力系统的电力传输进行可靠性分析和优化,在提高输电效率、降低能源损失和保障电力系统稳定性等方面具有很大作用。 总之,MMC逆变器Simlink技术是一种先进的电力系统控制和优化技术,可为电力系统的高效稳定运行提供有力保障。 ### 回答2: MMC逆变器Simulink是一种可编程的电源电子工具,用于逆变器系统的建模和仿真分析。MMC即多电平模块化换流器,是一种高效的电力转换设备,被广泛应用于可再生能源发电系统、电力传输和储能等领域。 Simulink是一种基于模型的设计和仿真环境,可以在MATLAB软件中执行。通过Simulink,用户可以建立一个逆变器的数学模型,并进行仿真分析和验证。 MMC逆变器Simulink可以对逆变器的工作状态进行分析,可以进行多种操作,如控制算法、电路参数和电路拓扑等的优化设计。此外,MMC逆变器Simulink还可以模拟电流和电压的波形,并计算电压和电流的有效值和相位等参数,使电路的工作状态更加清晰可见。 总之,MMC逆变器Simulink是一种基于模型的电力系统仿真工具,可以帮助工程师对逆变器进行精准设计和优化,提高电力系统的效率和可靠性。 ### 回答3: MMC(模块化多电平变流器)逆变器是一种高性能、高可靠性的电力变流器,用于将直流能源转换为交流电源,并广泛应用于大型直流输电、电力转换及交流电网等领域。 而simlink是一种MATLAB与Simulink配合使用的工具,可以用于模型建立、仿真及嵌入式代码自动生成。 因此,mmc逆变器simlink指的是通过simlink工具,使用MATLAB与Simulink对MMC逆变器进行建模、仿真及嵌入式代码生成的过程。通过该过程,可以实现MMC逆变器的高精度仿真及优化,并最终将其应用于实际的电力转换和交流电网控制中,提高系统的性能和可靠性。 总之,mmc逆变器simlink的应用为MMC逆变器的研发和应用提供了强大的工具支持和技术保障,具有非常重要的意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值