0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于使用Simulink.AliasType数据对象的分析和应用介绍

MATLAB 来源:djl 2019-09-17 17:09 次阅读

虽然说基于模型的设计(Model Based Design,MBD)就是未来嵌入式控制开发的主流方法,但是很多工程师都是C代码的高手,对Simulink并不是很熟悉,尤其是自动代码生成。在进行Simulink模型代码自动生成的时候,也会习惯性的去想生成的代码如何匹配脑子里所想的C代码。

那么,Let's Go!
Typedef

要得到:typedef double float_64;

怎么做:用Simulink.AliasType数据对象。

实例一

因为是第一个例子,过程会稍微介绍得详细一些。

1. 建一个简单的Simulink模型

信号分别命名为u1和y1,Gain模块的参数设置为k。

关于使用Simulink.AliasType数据对象的分析和应用介绍

2. 代码生成基本配置

求解器:定步长—离散求解器

系统目标文件:ert.tlc

这时候Ctrl+B,可以生成代码了。只不过此时u1,y1以及k都不是我们想要的定义方式。

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在base workspace里定义如图三个数据对象。

新建Simulink.AliasType,名字为float_64,并把Base type设置为double。这样,在生成代码的时候,就会出现这一句:typedef double float_64。

新建Simulink.Signal,名字为u1;新建Simulink.Parameter命名为k。注意它们Data Type与Storage class的定义。

关于使用Simulink.AliasType数据对象的分析和应用介绍

4. 将Simulink信号线与workspace的数据对象关联

在信号线u1上右键,设置它的属性,勾选Signal name must resolve to Simulink signal object,信号线上会出现如后图的蓝色小叉子。这样这个信号u1就会使用它所关联的数据对象u1所定义的方式来生成代码。

除了这种关联的方式之外,还可以直接设置信号的属性。比如右键单击信号y1,设置它的属性如图。

关于使用Simulink.AliasType数据对象的分析和应用介绍

参数k不需要手动关联。

显示模块端口的数据类型,得到如下图的显示。( 点击模型的菜单Display -> Signal&Ports -> Ports Data Type)

关于使用Simulink.AliasType数据对象的分析和应用介绍

5. 生成代码查看结果

Ctrl+B生成代码。

代码生成报告打开,在模型名_types.h文件里,看得到了这句typedef。这是之前定义Simulink.AliasType得到的结果。

关于使用Simulink.AliasType数据对象的分析和应用介绍

里面的real_T是E-Coder默认的对double的typedef:

关于使用Simulink.AliasType数据对象的分析和应用介绍

同时,可以看到模型中的u1,y1以及k的定义,这是之前将信号和参数绑定到数据对象而得到的结果。

关于使用Simulink.AliasType数据对象的分析和应用介绍

总结

要得到:typedef double float_64;

怎么做:用Simulink.AliasType数据对象

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7081

    浏览量

    89201
  • 信号
    +关注

    关注

    11

    文章

    2794

    浏览量

    76893
收藏 人收藏

    评论

    相关推荐

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移

    使用分布式数据对象迁移数据,当需要迁移的数据较大(100KB以上)或需要迁移文件时,可以使用分布式数据
    发表于 12-24 10:11

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据

    使用分布式数据对象迁移数据,当需要迁移的数据较大(100KB以上)或需要迁移文件时,可以使用分布式数据
    发表于 12-24 09:40

    Simulink与 Simscape的结合使用

    。用户可以利用 Simulink 进行系统建模、仿真、测试和验证,以及生成代码。 Simscape 简介 Simscape 是一个用于创建基于物理的模型的仿真环境。它提供了一个库,包含各种物理组件,如机械、电气、液压和热力系统等。Simscape 允许用户以直观的方式构建和分析
    的头像 发表于 12-12 09:31 384次阅读

    Simulink中的状态机建模方法 Simulink数据可视化与分析功能

    1. Simulink中的状态机建模方法 1.1 理解状态机的基本概念 在开始建模之前,了解状态机的基本概念是必要的。状态机由以下几个部分组成: 状态(States) :系统可能处于的不同条件或情况
    的头像 发表于 12-12 09:27 544次阅读

    Simulink与 MATLAB 的结合使用 Simulink中的信号处理方法

    在工程和科学研究中,信号处理是一个重要的领域,涉及到信号的采集、分析、处理和生成。MATLAB 提供了丰富的信号处理工具箱,而 Simulink 提供了一个直观的图形界面,使得复杂的信号处理系统可以
    的头像 发表于 12-12 09:25 389次阅读

    Simulink模型仿真与分析技巧

    1. 模型构建基础 1.1 理解系统需求 在开始构建模型之前,明确系统的需求和目标是至关重要的。这包括了解系统的动态特性、输入输出关系以及预期的性能指标。 1.2 选择合适的模块 Simulink
    的头像 发表于 12-12 09:23 837次阅读

    Simulink自定义模块开发教程 Simulink 在控制系统中的应用

    在控制系统的设计和分析中,Simulink 提供了一个强大的工具集,允许工程师通过图形化界面快速构建和测试复杂的系统模型。然而,Simulink 的标准库可能不包含所有特定的功能,这时就需要开发
    的头像 发表于 12-12 09:21 461次阅读

    关于对象存储和云硬盘区别,你了解多少?

    对象存储和云硬盘是两种不同的云存储解决方案。对象存储适合处理大规模非结构化数据,通过WebAPI接口访问,具有高扩展性和高可用性,适用于数据归档、备份和大
    的头像 发表于 11-01 10:57 184次阅读

    鸿蒙开发接口数据管理:【@ohos.data.distributedDataObject (分布式数据对象)】

    本模块提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。
    的头像 发表于 06-07 17:51 1506次阅读
    鸿蒙开发接口<b class='flag-5'>数据</b>管理:【@ohos.data.distributedDataObject (分布式<b class='flag-5'>数据</b><b class='flag-5'>对象</b>)】

    求助,关于AD采集到的数据分析问题

    的时候已经知道采样频率,该频率为定时器产生,精度应该为单片机晶振的精度。 分析对象为一个数组,该数组中存储的值为AD采样值,0到4095(12bit AD); 现状:已经能够采集到一组数据;放到
    发表于 05-09 07:40

    Vivado 使用Simulink设计FIR滤波器

    领域都有着广泛的应用。 Vivado自带的FIR滤波器IP核已经很好用,这里借FIR滤波器的设计,介绍Simulink图形设计编程方法。Simulink可以使设计更直观,使硬件资源得到更为高效的利用
    发表于 04-17 17:29

    电路仿真软件simulink的工作原理

    Simulink是MATLAB的一个模块,它采用图形化的方式来创建动态系统模型并进行仿真分析Simulink的工作原理主要基于模块化的建模和仿真方式。
    的头像 发表于 03-29 15:21 1778次阅读

    simulink常用模块有哪些 simulink模块执行顺序

    Simulink是一个基于图形的仿真环境,广泛应用于动态系统和控制设计的多领域建模和仿真。
    的头像 发表于 02-18 17:18 4579次阅读

    如何提高Simulink仿真性能呢?有哪些使用技巧?

    无论模型的复杂程度如何,每个 Simulink 用户都希望提高仿真性能。本文介绍了许多实用技巧和技术,来帮助您在仿真工作流中获得最佳的性能。
    的头像 发表于 01-18 10:01 1329次阅读
    如何提高<b class='flag-5'>Simulink</b>仿真性能呢?有哪些使用技巧?

    YOLOv8实现旋转对象检测

    YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测(OBB),基于DOTA数据集,支持航拍图像的15个类别对象检测,包括车辆、船只、典型
    的头像 发表于 01-11 10:43 1898次阅读
    YOLOv8实现旋转<b class='flag-5'>对象</b>检测