MBD之代码生成——自定义数据类型别名

目录

应用背景

实现步骤

1、Model Explore中添加Simulink AliasType

2、Configuration Parameters设置数据类型别名替换

结果演示


 

应用背景

在Simulink模型及生成的代码中,都有其默认的数据类型,默认的一些基本数据类型如下图所示:

默认设置的情况下,代码生成后基本的数据类型会如下所示,如:uint8_T、int16T、uint16_T...

例如,我们的模型算法如下所示:

Simulink模型中信号线、端口的数据类型在默认情况下只能设置成base type中的数据类型,即以下红框中的数据类型

而实际应用中,希望生成的变量、函数参数或返回值类型使用UInt8、UInt16、Bool等这种自定义的数据类型的别名。

要实现这种替换成自定义的数据类型别名,需要添加Simulink AliasType并在Configuration Parameters中的Data Type Replacement选项卡下进行替换设置。

 

实现步骤

 

1、Model Explore中添加Simulink AliasType

 

 

数据类型的别名,以UInt8为例,添加的Alias重新命名为UInt8,并在左侧Base type选择uint8,自定义的UInt8别名与Simulink中默认的uint8进行联系。

同样的步骤,可对Bool、Float、UInt16、Int16等数据类型别名进行设置

 

AliasType设置好后,如果Simulink.Parameter或者Simulink.Signal,可以选择默认的Base type,也可以选择你新建的数据类型别名,如将Diff_Gain设置为Float类型(如下拉菜单中没有显示你上面新建的AliasType的数据类型,可以Refresh data types更新一下)

2、Configuration Parameters设置数据类型别名替换

Data type Replacement选项中勾选Replace data type names in the generated code,填入需要替换的数据类型别名(Replacement Name要和上面增加的Simulink AliasType保持一致,不然会出错)

以上就完成了别名的替换,更新一下模型,我们可以看到数据类型别名已经变成你自定义的了,当然部分模块的输出数据类型还是会保持Simulink默认的数据类型别名,例如下图的AND模块,数据类型仍旧为默认的boolean,但不影响最终的代码生成。

如果你希望模型中所有的模块输入输出类型都变成你自定义的数据类型别名,那就需要对各个模块指定好数据类型,例如上面的AND模块,双击打开参数设置窗口:

Data Type选项卡下,也可以选择Bool作为输出类型,最终可以让整个模型可以都采用自定义的数据类型别名

 

因为我们在上面对Data type Replacement进行了设置,实际不管你在模型中的数据类型别名选择的是默认的还是你自定义的,最终生成的代码中都会进行替换。所以,没有必要的情况下,不需要对每个模块的输出数据类型重新选择为自定义的数据类型别名。

另外,其实上面对Simulink.Parameter或者Simulink.Signal的定义中,也不一定采用自定义的数据类型别名,选择Simulink默认的数据类型,最终生成的代码中也都会进行替换,只是在模型层面显示的数据类型不是自定义数据类型别名而已。

 

结果演示

最终我们生成代码如下:全局变量和临时变量都会采用自定义的数据类型别名进行定义

我们可以在生成的rtwtypes.h头文件中看一下,会比原先多了以下代码

通过重新typedef的方式,对原先默认的Simulink数据类型别名进行了替换。


如果你觉得本文能够帮助到你,请长按识别下方二维码关注公众号,另有知乎同名专栏同步更新,欢迎分享转载

文章中的示例模型或代码均可联系小编免费获取,若对文章有任何意见或建议,欢迎在文章下方留言,也可进入公众号选择‘联系方式’,加小编微信进行交流

                                                             

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C2000是德州仪器公司(TI)推出的一款高性能数字信号处理器(DSP)系列产品,在嵌入式控制和电力电子应用中使用广泛。MBD代表模型驱动开发,这是一种软件开发方法,利用数学模型来进行系统设计和开发,以生成代码。 C2000 MBD生成代码可以通过将数学模型和系统规范直接转化为可执行代码,从而实现快速且高效的系统开发。MBD生成代码的过程包括以下几个步骤: 首先,需要建立一个数学模型,该模型描述了系统的物理特性和行为。数学模型可以使用Simulink等建模工具来创建,其中包括了系统的输入、输出和中间变量等。 然后,利用MBD工具将数学模型转化为可执行代码。在C2000 MBD生成代码中,可以使用工具如Embedded Coder将Simulink模型快速转化为C语言代码。生成的代码将包含系统的控制逻辑和算法,以及与C2000 DSP硬件平台的接口。 接下来,生成的代码将进行自动代码优化,并进行编译和调试。优化可以提高代码的执行效率和资源利用率,以适应嵌入式系统的要求。编译和调试过程确保生成的代码与目标硬件平台的兼容性和正确性。 最后,生成的代码可以下载到C2000 DSP硬件平台上,通过其内嵌的DSP核心来执行系统控制和信号处理任务。生成的代码可以实现系统规范要求,并且适应复杂的嵌入式应用环境。 通过C2000 MBD生成代码,开发人员可以更高效地进行系统设计和开发,实现快速原型开发和迭代。同时,采用模型驱动开发方法可以提高开发过程的可重复性和可维护性,减少测试和调试的工作量,从而降低开发成本和时间。 ### 回答2: C2000是德州仪器(TI)推出的一款微控制器系列,MBD(Model-Based Design)是一种基于模型的设计方法。生成代码通常是指使用MBD工具将模型转换为可在嵌入式系统中运行的C代码。 使用C2000 MBD生成代码的过程大致可分为以下几个步骤: 首先,我们需要使用MBD工具(如MATLAB Simulink)来建立我们的系统模型。这可以通过拖拽和连接各种功能块来构建模型,例如传感器部件、算法模块和输出设备。 接下来,我们需要对模型进行参数配置和仿真测试。这样可以确保模型在软件环境中的行为与我们预期一致。 完成参数配置后,我们可以使用MBD工具来生成相应的C代码。这一过程中,工具会根据我们在模型中定义的算法和功能,将其转换为可在C2000微控制器上运行的C代码。 生成的C代码可以包括初始化函数、数据结构定义、算法实现以及与外部硬件交互的代码等。这些代码将直接在C2000微控制器上执行,实现我们在模型中设计的功能。 在生成代码后,我们需要将其下载到C2000微控制器上进行调试和验证。通过连接开发板和调试器,我们可以对代码的执行进行监控,并查看实际硬件上的运行情况。 总的来说,C2000 MBD生成代码是一种将模型转换为可嵌入式系统中运行的C代码的方法。它可以帮助开发者通过模型快速设计和验证系统功能,并在嵌入式系统中实现所需的算法和控制逻辑。 ### 回答3: C2000 MBD是指使用C2000系列微控制器进行模型驱动开发(Model-Based Development,MBD)并生成代码的过程。C2000微控制器是德州仪器(Texas Instruments)生产的一款高性能、实时控制特性强大的微控制器系列,常用于工业自动化、电机控制等领域。 在C2000 MBD中,开发者可以使用Matlab/Simulink等工具对系统进行建模和仿真。首先,开发者需要创建系统模型,包括输入、输出、控制逻辑以及系统的动态行为等内容。接着,开发者可以使用Simulink中的多种模块和功能对模型进行调整和优化,确保系统的性能和可靠性。在模型的开发过程中,开发者可以使用C2000 MBD提供的实时目标机仿真功能,将模型与实际硬件环境进行连接和交互,以验证系统的正确性。 当系统模型开发完成后,开发者可以使用C2000 MBD提供的代码生成工具将模型转化为C语言代码,以便在C2000微控制器上运行。代码生成工具会根据模型自动生成标准的C语言代码,包括系统的初始化、数据处理、控制循环等内容。生成的代码可以直接在C2000微控制器上进行编译和烧录,从而实现对系统的实时控制。 通过C2000 MBD生成的代码具有高效、可靠的特点。由于代码是从系统模型中自动生成的,因此避免了手动编写代码可能存在的错误和繁琐的工作。此外,C2000 MBD还提供了代码优化和调试工具,可以对生成的代码进行性能优化和故障诊断,进一步提高系统的性能和可靠性。 综上所述,C2000 MBD可以简化系统开发的流程,提高系统的开发效率和质量,并为开发者提供了强大的控制功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值