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

    文章

    834

    浏览量

    30206
  • C代码
    +关注

    关注

    1

    文章

    90

    浏览量

    15265
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何利用S7-1200型PLC与G120C变频器实现模拟量控制

    本文主要介绍如何利用S7-1200型PLC与G120C变频器实现模拟量控制,本文内容主要包括控制要求、
    的头像 发表于 04-11 17:13 8054次阅读
    如何<b class='flag-5'>利用</b>S7-1200型PLC与G120<b class='flag-5'>C</b>变频器<b class='flag-5'>实现</b>模拟量<b class='flag-5'>控制</b>

    RL78/G1C控制器:特性、规格与应用分析

    RL78/G1C控制器:特性、规格与应用分析 在电子设计领域,微控制器是各种电子设备的核心组件,其性能和特性直接影响着产品的功能和稳定性。今天,我们来深入探讨一下Renesas的RL
    的头像 发表于 04-01 14:50 360次阅读

    讲解C语言代码实现过程

    重点讲解C语言代码实现过程,算法的C语言实现过程具有一般性,通过PID算法的C语言
    发表于 01-21 07:58

    分析嵌入式软件代码的漏洞-代码注入

    及其后代衍生产品)很不擅长发现这样的漏洞,因为想要实现精确的查找漏洞就需要完成整个程序的路径敏感分析。 提升嵌入式代码分析工具 最近出现的先进的静态
    发表于 12-22 12:53

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    一、C语言在嵌入式开发中的现状与重要性 C语言在嵌入式开发领域仍然占据主导地位,根据Barr集团的研究,目前95%的嵌入式系统代码采用C
    发表于 12-18 11:46

    C/C++条件编译

    条件编译是一种在编译时根据条件选择性地包含或排除部分代码的处理方法。在 C/C++ 中,条件编译
    发表于 12-05 06:21

    基于芯源CW32 MCU的LED闪烁示例及代码分析

    准备: 芯源CW32开发板 一个LED 电阻及基础连接线 开发环境:我使用的是Keil作为开发环境,同时利用官方提供的CW32库函数,这使得代码更加简洁清晰。 代码实现:这段
    发表于 12-04 06:52

    Airship研究:无代码原生应用体验使购买频次翻倍(增长140%),为假日季盈利增长开辟新路径

    ”(Experience Impact)研究分析了超过1000个零售类应用内体验和17亿次设备会话,量化了利用代码和AI驱动工具优化端到端客户旅程(而非仅发送信息)所产生的影响——这
    的头像 发表于 11-27 16:34 1106次阅读

    C语言的编程技巧

    设计,分层开发代码,便于理解和维护。 ‌8、避免使用GOTO语句‌:尽管GOTO语句在某些情况下仍然有用,但现代编程更倾向于使用函数和循环控制结构,以提高代码的可读性和维护性。 ‌9、利用
    发表于 11-27 06:46

    电压放大器驱动液滴微流控芯片关键功能实现研究

    控制条件,可以对液滴进行多样化的操控,以满足不同研究和应用场景需求。在生物医学领域,液滴具有广泛的应用价值,可以视为一个独立的微反应器,具有微纳尺度体积,容易高通量操作,非常适用于大样本下的生化检测和
    的头像 发表于 07-30 14:24 928次阅读
    电压放大器驱动液滴微流控芯片关键功能<b class='flag-5'>实现</b><b class='flag-5'>研究</b>

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码质量、实现
    的头像 发表于 07-10 15:57 1547次阅读
    Perforce QAC产品简介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++的静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具(已通过SO 26262认证)

    无刷直流电机双闭环串级控制系统仿真研究

    以来伴随着永磁材料技术、计算机及控制技术等支撑技术的快速发展及微电机制造工艺水平的不断提高,永磁无刷直流电动机在高性能中、小伺服驱动领域获得广泛应用并日趋占据主导地位吗。一直以来,研究人员都比较关注利用
    发表于 07-07 18:36

    无刷直流电机改进型直接转矩控制研究

    摘要:研究了120”导通方式下的无刷直流电机直接转矩控制策略。通过分析了无刷直流电机转矩特性知道,只要保持定子磁链幅值恒定并控制其旋转速度就可使电机获得快速转矩动态响应性能。对 120
    发表于 06-27 16:45

    三相异步电机直接转矩控制的圆形磁链研究

    产生PWM波,并通过改变转速给定值,得出在不同给定条件下的仿真结果,并用滤波器对定子电流进行滤波,最后对仿真结果进行了具体分析。这对中小功率电机控制系统实际开发应用等方面有一定的实用价值。 纯分享帖,需要者
    发表于 06-16 21:50

    三相异步电机模糊控制研究

    摘要:传统三相异步电机控制算法的参数固定不变,不能使控制系统一直处于最佳运行状态。针对此问题在传统矢量控制系统中引入了模糊P控制方法,利用
    发表于 06-13 09:41