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

    文章

    2634

    浏览量

    75369
  • 变量
    +关注

    关注

    0

    文章

    594

    浏览量

    28110
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

    (DataPort())))    val source=master(Stream(Fragment(DataPort())))  }  noIoPrefix()  io.source       很简单的功能,一个Stream接口的Pipeline打拍。在生成RTL代码
    的头像 发表于 12-14 09:05 322次阅读

    从HumanEval到CoderEval: 你的代码生成模型真的work吗?

    本文主要介绍了一个名为CoderEval的代码生成大模型评估基准,并对三个代码生成模型(CodeGen、PanGu-Coder和ChatGP
    的头像 发表于 11-25 15:55 736次阅读
    从HumanEval到CoderEval: 你的<b class='flag-5'>代码</b><b class='flag-5'>生成</b>模型真的work吗?

    for循环里的变量是局部变量

    作用是重复执行一段代码,循环变量则是在每次迭代中改变其值,以便控制循环的次数或迭代的范围。循环变量
    的头像 发表于 11-23 14:50 974次阅读

    simulink自动生成ROS代码

    当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink的代码生成器,
    的头像 发表于 11-15 17:53 328次阅读
    simulink自动<b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>

    Java中注解的作用

    、方法参数等的前面,用来对这些元素进行说明,注释。作用分类: 编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 代码
    的头像 发表于 09-30 10:12 316次阅读
    Java中注解的<b class='flag-5'>作用</b>

    西门子SCL语言for循环事例简析

    FOR语句在控制变量处于指定的值范围内时用来重复语句序列。控制变量必须是INT或DINT类型的本地变量的标识符。
    的头像 发表于 08-30 09:13 2629次阅读
    西门子SCL语言for循环事例简析

    Andon系统看板在生产环境中发挥多种作用

    Andon系统看板在生产环境中具有即时通知和报警、故障识别和定位、数据收集和分析、信息共享和沟通、指导和反馈等作用。这些作用有助于提高生产效率、质量和安全性,推动持续改进和优化。
    的头像 发表于 08-08 10:44 250次阅读
    Andon系统看板<b class='flag-5'>在生</b>产环境中发挥多种<b class='flag-5'>作用</b>

    MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)

    上一篇文章中提到,生成嵌入式代码,必须选择定步长求解器。实际中,生成嵌入式代码几乎不会使用Simulink模型库中的连续模型,往往需要通过最简单的离散模块来实现算法模型。
    的头像 发表于 07-13 15:13 2935次阅读
    MBD的Simulink使用技巧:详解<b class='flag-5'>代码</b><b class='flag-5'>生成</b>中的模型与<b class='flag-5'>代码</b>(2)

    ChatGPT上线最强应用:分析数据、生成代码都精通

    有了 Code Interpreter,语言模型不仅可以生成代码,还可以独立执行代码。这个插件允许用户直接在 ChatGPT 对话窗口直接调用 Python,直接进行数据上传、下载、分析
    的头像 发表于 07-13 14:52 631次阅读
    ChatGPT上线最强应用:<b class='flag-5'>分析</b>数据、<b class='flag-5'>生成</b><b class='flag-5'>代码</b>都精通

    如何用proc sql生成变量

    上节我们讲了PROC SQL的基本结构,以及一些sql命令的使用,这节我们主要讲一下case...when...、order by 、group by 、update、delete语句以及如何用proc sql生成变量
    的头像 发表于 05-19 16:13 1508次阅读
    如何用proc sql<b class='flag-5'>生成</b>宏<b class='flag-5'>变量</b>?

    浅谈AI和模型预测控制结合的神经网络模型

    Ju(zk) 用于量化控制输入与目标控制变量跟踪效果(在很多应用中,控制器还需要保证控制变量(MV)保持在某个目标附近,尤其在控制量数目远多
    发表于 05-11 14:54 1751次阅读
    浅谈AI和模型预测<b class='flag-5'>控制</b>结合的神经网络模型

    verilog怎么将一个边沿触发信号的上升沿作为控制变量呢?

    verilog怎么将一个边沿触发信号的上升沿作为控制变量呢?
    发表于 05-10 10:38