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

    文章

    6511

    浏览量

    87595
  • 信号
    +关注

    关注

    11

    文章

    2639

    浏览量

    75384
收藏 人收藏

    评论

    相关推荐

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

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

    鸿蒙原生应用开发——分布式数据对象

    01、什么是分布式数据对象 在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个 sessionId,使得加入的多个数据对象
    发表于 12-08 10:01

    【开发者说】鸿蒙原生应用开发——分布式数据对象

    在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个sessionId,使得加入的多个数据对象之间可以同步数据,也就是说,当某一数据
    的头像 发表于 12-07 21:40 497次阅读
    【开发者说】鸿蒙原生应用开发——分布式<b class='flag-5'>数据</b><b class='flag-5'>对象</b>

    javascript的内置对象有哪些

    JavaScript是一门广泛应用于Web开发的脚本语言,它有很多内置对象,用于处理不同的数据类型、执行不同的操作和提供各种功能。在这篇文章中,我将详尽介绍JavaScript的内置对象
    的头像 发表于 12-03 11:39 757次阅读

    Simulink中如何创建一个Publisher

    Home>Simulink来打开Simulink的起始页。 2.在Simulink开始页,单击空白模型创建并打开一个新的Simulink模型。 3.在
    的头像 发表于 11-15 17:32 296次阅读
    <b class='flag-5'>Simulink</b>中如何创建一个Publisher

    数据对象的一些基本知识

    数据库的功能就是组织管理和存储各种数据对象数据库中的对象是我们进行数据管理的基本。本篇会回顾
    的头像 发表于 10-09 16:42 369次阅读

    MBD的Simulink使用技巧:Simulink代码生成的基本概念(1)

    MATLAB/Simulink中一共提供三个代码生成的工具
    的头像 发表于 07-13 15:11 1402次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:<b class='flag-5'>Simulink</b>代码生成的基本概念(1)

    介绍一下simulink的模型工作区

    simulink模型工作区与 MATLAB 工作区的差异在于每个模型都带有自己的工作区以存储变量值。
    的头像 发表于 06-29 15:17 1858次阅读
    <b class='flag-5'>介绍</b>一下<b class='flag-5'>simulink</b>的模型工作区

    基于龙伯格观测器Luenberger的无感控制+Matlab/Simulink仿真

    本章节采用龙伯格观测器进行永磁同步电机的无传感器控制,首先分析了龙伯格观测器的原理,然后设计了PMSM的全阶龙伯格观测器,最后通过Matlab/Simulink对该观测器方案进行仿真分析,为了进行
    发表于 06-08 14:46 2217次阅读
    基于龙伯格观测器Luenberger的无感控制+Matlab/<b class='flag-5'>Simulink</b>仿真

    PyTorch教程14.6之对象检测数据

    电子发烧友网站提供《PyTorch教程14.6之对象检测数据集.pdf》资料免费下载
    发表于 06-05 11:23 0次下载
    PyTorch教程14.6之<b class='flag-5'>对象</b>检测<b class='flag-5'>数据</b>集

    如何建立matlab和freemaster的关系?如何将freemaster数据导入matlab/simulink

    你能帮助我们的客户解决以下问题吗? 如何建立matlab和freemaster的关系? 如何将freemaster数据导入matlab/simulink
    发表于 05-29 08:25

    永磁同步电机流频比I/F控制原理及Matlab/Simulink仿真分析

    本章节采用流频比I/F控制方法驱动永磁同步电机的转动,首先分析流频比I/F的控制原理,然后在Matlab/Simulink中进行永磁同步电机流频比I/F控制系统的仿真分析,为后续PMSM无感启动做铺垫。
    的头像 发表于 05-24 11:36 1421次阅读
    永磁同步电机流频比I/F控制原理及Matlab/<b class='flag-5'>Simulink</b>仿真<b class='flag-5'>分析</b>

    SVPWM控制技术的基本原理及Matlab/Simulink仿真分析

    本章节首先介绍SVPWM控制技术的原理,然后详细分析SVPWM控制算法的具体实现方式包括7段式SVPWM与5段式SVPWM算法,并通过Matlab/Simulink对SVPWM控制算法进行仿真
    的头像 发表于 05-24 11:10 5115次阅读
    SVPWM控制技术的基本原理及Matlab/<b class='flag-5'>Simulink</b>仿真<b class='flag-5'>分析</b>

    永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析(一)

    本章节采用恒压频比的开环控制方法驱动永磁同步电机的转动,首先分析恒压频比的控制原理,然后在Matlab/Simulink中进行永磁同步电机恒压频比开环控制系统的仿真分析,最后将Simulink
    的头像 发表于 05-23 14:43 2433次阅读
    永磁同步电机恒压频比开环控制系统Matlab/<b class='flag-5'>Simulink</b>仿真<b class='flag-5'>分析</b>(一)

    RT-Thread所包含的对象以及对象的方法函数分析

      RTT这个RTOS虽然是全部是用C编写,但全程使用的都是面向对象的编程方式。所以最好的研究方式,就是从对象入手,分析代码各部分所包含的对象以及
    发表于 04-27 11:46