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

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

3天内不再提示

关于如何控制变量在生成代码里的作用分析和介绍

MATLAB 来源:djl 作者:柚籽 2019-09-17 16:18 次阅读

在自动生成代码时,Simulink模型里的两类数据是我们需要考虑的:信号(signal)和参数(parameter)。信号对应于Simulink模块连线,仿真时一般都会变化;而参数则对应于双击模块时所设置的变量,仿真时一般保持不变。

如何控制这些变量在生成的代码里的实现?

点击末尾的 “阅读原文” 下载本文的案例模型

信号和参数的声明和定义

要得到:

模型参数p1定义为:int32 p1 = 3;extern int32 p1

模型信号mySig定义为:int16 mySig;extern int16 mySig

怎么做:用Data Object。

实例二

1. 建一个简单的Simulink模型

关于如何控制变量在生成代码里的作用分析和介绍

2. 代码生成基本配置

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

系统目标文件:ert.tlc

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在base workspace里定义参数数据对象p1,进行如图设置:

关于如何控制变量在生成代码里的作用分析和介绍

这样在生成代码的时候,参数p1就会定义为int32的数据类型,并且声明为extern。而且它的声明和定义代码会分别写入myHdr.h以及mySrc.c。

类似的,新建一个 Simulink.Signal,命名为 mySig,设置如图。它的定义和声明就会默认的在模型名.c和模型名.h里 :

关于如何控制变量在生成代码里的作用分析和介绍

4. 信号关联

在信号线上右键,将信号与Base Workspace的数据对象关联在一起。

关于如何控制变量在生成代码里的作用分析和介绍

参数k不需要手动关联。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,得到参数p1的定义如图,写到自定义的.c.h文件里去了:

关于如何控制变量在生成代码里的作用分析和介绍

信号mySig的声明和定义如图,在模型名.c和模型名.h文件里:

关于如何控制变量在生成代码里的作用分析和介绍

E-Coder里对数据的默认定义:

关于如何控制变量在生成代码里的作用分析和介绍

总结

所以说,可以使用数据对象(Data Object)来定义数据在所生成的代码里的表达方式。

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

    关注

    11

    文章

    2780

    浏览量

    76628
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28329
收藏 人收藏

    评论

    相关推荐

    探索设计稿自动生成Flutter代码的技术方案

    的工具和方法,最后尝试大模型生成flutter代码在项目中的实践。 一、美团的探索 美团在2021年3月25日发表了一篇关于设计稿自动生成代码
    的头像 发表于 11-08 10:09 812次阅读
    探索设计稿自动<b class='flag-5'>生成</b>Flutter<b class='flag-5'>代码</b>的技术方案

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 202次阅读
    如何自动<b class='flag-5'>生成</b>verilog<b class='flag-5'>代码</b>

    生成式AI工具作用

    生成式AI工具是指那些能够自动生成文本、图像、音频、视频等多种类型数据的人工智能技术。在此,petacloud.ai小编为您整理生成式AI工具作用
    的头像 发表于 10-28 11:19 175次阅读

    STM32CUBEMX生成freeRTOS代码的时候出现警告

    to use HAL timebase source other than the Systick. HAL函数如果是阻塞型呼叫,內部会用到HAL_Delay(),FreeRTOS应该还是使用SystTick。如果使用的时基操作來源一样,怕有不可预期问题出现,故选择其他定时器。 此时在生成
    发表于 09-04 14:13

    ISEDA首发!大语言模型生成代码到底好不好使

    在大模型席卷一切、赋能百业的浪潮,“码农”也没能独善其身。各种代码自动生成的大模型,似乎描绘了一个人人都能像资深工程师一样写代码的美好未来。 但在这个理想成为现实之前,有一个不能回避
    发表于 05-16 13:41 298次阅读
    ISEDA首发!大语言模型<b class='flag-5'>生成</b>的<b class='flag-5'>代码</b>到底好不好使

    使用LL库时在CUBEMX中设置了重映射,在生成代码中却没有重映射是为什么?

    我在使用LL库时在CUBEMX中设置了重映射,但是在生成代码中却没有重映射,于是人工添加LL_GPIO_AF_RemapPartial_TIM3(); 然后防真但是走到这里就出现不能继续防真的情况
    发表于 04-24 07:26

    STM32CubeMX生成代码软件卡死的原因?怎么解决?

    STM32CubeMX 生成代码 软件卡死!在生成代吗时,一直卡死在如图所示的状态,进度条一直就不走了。试过多次,一直如此。请问如何解决该问题,原因可能是什么?STM32CubeMX版本5.1.0
    发表于 04-10 06:03

    变量位置不同会死机?郭天祥老师视频的遗留问题分析答案

    在郭天祥老师视频有一个问题分享,是EXMC初始化的一个变量定义和初始化位置不同会导致程序死机,最终定位到程序是进入hardfault死机,但暂时没有后续分析了,这里我们来继续
    的头像 发表于 02-26 09:12 338次阅读
    <b class='flag-5'>变量</b>位置不同会死机?郭天祥老师视频的遗留问题<b class='flag-5'>分析</b>答案

    如何配置RTR位以在生成的CAN_NODE_0中接收远程帧?

    但我们无法在代码中配置 RTR 位,能否请你解释一下如何配置 RTR 位以在生成的 CAN_NODE_0 中接收远程帧。
    发表于 01-19 06:38

    IMC101T-T038恒功率控制如何修改变量转向?

    IMC101T-T038 芯片使用脚本功能,恒功率如何控制变量转向
    发表于 01-19 06:21

    自动控制系统中的操纵变量指什么

    自动控制系统中的操纵变量指的是在系统中由控制控制的可调节参数,用于调节或改变被控对象的输出或状态。操纵变量是自动
    的头像 发表于 01-15 11:29 4763次阅读

    TSMaster报文发送的信号生成器操作说明

    信号生成器功能是TSMaster分析中的报文发送模块。信号生成器用于发送和配置每个CAN/LIN信号的值变化行为,简而言之,这是一个可以控制和调整CAN/LIN信号值的功能。我们可选择
    的头像 发表于 12-23 08:21 928次阅读
    TSMaster报文发送的信号<b class='flag-5'>生成</b>器操作说明

    在SpinalHDL在顶层一键优化Stream/Flow代码生成

        在SpinalHDL在顶层一键优化代码中Stream/Flow代码生成的payload,fragment。 难看的代码      
    的头像 发表于 12-14 09:05 643次阅读

    switch括号可以有几个变量

    expression处,可以是一个整型或字符型的变量、常量、表达式,或者返回整型或字符型的函数调用。 在case行后面的constant处,可以是整型或字符型的常量、枚举变量。每个case都对应一个代码块,根据
    的头像 发表于 11-30 14:31 993次阅读

    能够生成java文档注释的命令

    文档的包名和源代码文件名,@files表示指定一个文本文件,它会列出其他要包含在生成的文档中的包名和源代码文件名。 下面是一些常用的选项: -d directory :指定生成的文档保
    的头像 发表于 11-29 14:12 807次阅读