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

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

3天内不再提示

关于利用C代码实现条件控制的分析和研究

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

条件控制在C代码中常用的诸如if-else, Switch-Case来表达,那么:

Simulink模型中是如何实现的呢?

又如何配置生成代码呢?

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

条件控制逻辑

要得到:

if (u1 > u2)

{

y1 = u1;

}

else

{

y1 = u2;

}

或者

switch (u1)

{

case 2:

y1 = u2;

break;

case 3:

u3;

break;

default:

y1 = u4;

break;

}

怎么做:

Simulink框图模型里使用Signal Routing以及Ports&Subsystem库里对应的模块,如Switch;在Chart里则根据逻辑来构造流程图;而在MATLAB Function模块里则直接写m脚本。

if-else实例

1. 新建一个简单的Simulink模型

如图使用三种方式来实现条件判断的算法

关于利用C代码实现条件控制的分析和研究

如上图,对于Simulink来说,if-else可以使用Signal Routing库里的Switch模块。而在Chart中,则画出对应的流程图即可,如下图:

关于利用C代码实现条件控制的分析和研究

MATLAB Function则更简单,直接写m脚本。

关于利用C代码实现条件控制的分析和研究

代码生成基本配置

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

系统目标文件:ert.tlc

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在Base Workspace里定义输入、输出信号同名的数据对象。通过数据对象来控制这些信号在将来生成C代码时的定义和声明。

关于利用C代码实现条件控制的分析和研究

4. 信号关联

在信号线上右键,将信号与Base Workspace的数据对象关联在一起。鼠标操作的方式,可以参考之前的帖子里的菜单截图。因为这里的信号略多,一条一条信号线的点击鼠标,略麻烦,所以可以使用命令的方式来实现:

关于利用C代码实现条件控制的分析和研究

此时,第一张模型截图中信号线上的蓝色小叉子就会出现,表示已经关联了。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,三个模块都会得到同样的if-else的代码:

关于利用C代码实现条件控制的分析和研究

接下来看Switch的情况。

Switch实例

1. MATLAB Function

比较简单,跟之前一样按照m语言的语法写代码即可。

2. Stateflow Chart

而对于Stateflow Chart来说,如果不熟悉流程图的画法,可以使用向导自动生成特定的逻辑结构,作为参考:

关于利用C代码实现条件控制的分析和研究

在向导对应的框内填入内容,然后自动生成后边的流程图,可以根据自己的需要再进行调整。Stateflow里面,中括号里的是条件判断语句,大括号里的是执行语句。

关于利用C代码实现条件控制的分析和研究

其实从结构上来讲,得到的流程图和之前的if-else是类似,它其实也完全可以用 if-else if-else的C代码来表示。而实际上,它生成的代码也会是这样:

关于利用C代码实现条件控制的分析和研究

只不过呢,因为下图所示的选择项是会默认勾选上的:

关于利用C代码实现条件控制的分析和研究

所以生成的代码就会变成Switch的模式:

关于利用C代码实现条件控制的分析和研究

Signal Routing里有个Multiport Switch可以用来表达Switch的效果。另外,还有来自Port & Subsystem库里的Switch Case模块。

下图就是它们的用法。感兴趣的可以下载模型生成代码看看。

关于利用C代码实现条件控制的分析和研究

条件控制语句:

对于MATLAB Function,就是直接写对应的m脚本;

对于Stateflow,就是对应不同形式的流程图;

对于Simulink,就是使用对应的模块。

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

    关注

    2

    文章

    818

    浏览量

    29293
  • C代码
    +关注

    关注

    1

    文章

    89

    浏览量

    14177
收藏 人收藏

    评论

    相关推荐

    STM32G4如何利用ADC-DMA对全桥电路实现闭环控制

    ,希望各位大佬分享下相关控制代码进行学习参考,或者大佬指导下该怎样学习,引一下路,谢谢(目前卡在了利用ADC采样值控制芯片输出)。
    发表于 03-22 06:40

    case怎么使用多个条件

    在编写代码时,我们经常需要根据不同的条件来执行不同的操作。在Python中,我们可以使用 if 语句来实现这一目的。 if 语句允许我们设置多个条件,并且根据不同的
    的头像 发表于 11-30 14:34 510次阅读

    python if语句多个条件怎么用

    所有条件都必须为True才会执行if语句中的代码块,or运算符表示只要有一个条件为True就会执行代码块,而not运算符则用于反转条件的结果
    的头像 发表于 11-21 16:45 1011次阅读

    python中if三个条件怎么写

    来确定程序的执行路径。这时,我们可以使用 if-elif-else 结构来处理多个条件。 if-elif-else 结构是一个被广泛使用的控制结构,在许多编程语言中都有类似的实现。它允许我们依次测试多个
    的头像 发表于 11-21 16:42 541次阅读

    利用MAX II CPLD实现LCD控制

    电子发烧友网站提供《利用MAX II CPLD实现LCD控制器.pdf》资料免费下载
    发表于 11-10 09:36 0次下载
    <b class='flag-5'>利用</b>MAX II CPLD<b class='flag-5'>实现</b>LCD<b class='flag-5'>控制</b>器

    利用Simulink自动生成STM32串口代码

    功能:利用Simulink自动生成STM32串口代码,在Keil中编译后直接下载到主芯片,实现串口通讯的功能。
    的头像 发表于 10-25 17:04 1031次阅读
    <b class='flag-5'>利用</b>Simulink自动生成STM32串口<b class='flag-5'>代码</b>

    基于单片机AT89C51的室内灯光控制系统的研究和开发

    本篇论文介绍了就是基于单片机AT89C51的室内灯光控制系统的研究和开发。本系统是以单片机为控制器的核心,本系统主要由光照检测电路、热释电红外线传感器及处理电路、单片机系统及
    发表于 09-25 08:03

    使用STM32的MPU实现代码隔离和访问控制

    • 应用程序使用的MCU为STM32F4• 分析(以F413为例)• F413带有528字节的OTP,可以满足数据一次性写入之后无法被修改的需求• 为了实现只允许部分代码访问OTP的要求,需要将
    发表于 09-12 07:24

    Wasm软件生态系统安全分析

    不足以实现Wasm中的一个微小功能。而且开发者需要熟悉多个段的不同的数据结构才能实现对Wasm中某一功能的重写; (2)结构化控制流与控制流修改:Wasm没有goto-like的跳转指
    发表于 09-05 15:29

    关于一次消谐器的使用条件有哪些

    关于一次消谐器的使用条件有哪些 一次消谐器是电力系统的重要组件之一,主要用于抑制谐波电流,提高电力系统的稳定性和可靠性。但是,使用一次消谐器需要满足一定的条件,否则不仅无法发挥其作用,还会损坏设备
    的头像 发表于 09-04 14:00 194次阅读

    MS51FB9AE怎么利用pwm占空比实现控制屏幕亮度?

    新唐MS51FB9AE 这款芯片 ,怎么利用pwm占空比实现控制屏幕亮度?跪求代码
    发表于 08-30 07:59

    在HMI设备上进行初始值采集和条件分析所涉及的工作原理是什么?

    按照定义的顺序执行 PLC 代码视图中的条件分析评估。本示例介绍了在 HMI 设备上进行初始值采集和条件分析所涉及的工作原理。
    的头像 发表于 08-21 09:47 472次阅读
    在HMI设备上进行初始值采集和<b class='flag-5'>条件</b><b class='flag-5'>分析</b>所涉及的工作原理是什么?

    ARM C语言扩展规范

    ARM C语言扩展(ACLE)规范指定源语言扩展和实现C/C++编译器可以实现的选项,以便让程序员更好地
    发表于 08-02 06:27

    什么是静态代码分析?静态代码分析概述

    静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。 这就是开发团队使用静态分析工具/源代码分析工具的原因。在这里,我们将讨论静态
    的头像 发表于 07-19 12:09 920次阅读
    什么是静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>?静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>概述

    关于让NXP TPL嗅探器与Saleae逻辑分析器一起工作的任何提示?

    背景: 我正在研究 33772C 芯片,它似乎在系统级与 NXP 微控制器在 TPL 上工作。 我正在深入挖掘并想了解跨 TPL 传达的内容。 我看到 CRC 计算是通信帧的一部分,并认为这是建立
    发表于 05-09 08:33