首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Simulink代码生成: If-Action子系统及其代码

  • 23-09-22 01:02
  • 3941
  • 9033
blog.csdn.net

本文研究Simulink中的If-Action子系统及其生成的代码。

文章目录

  • 1 概述
  • 2 示例模型搭建
    • 2.1 If模块
    • 2.2 If-Action子系统
    • 2.3 merge模块
    • 2.4 完整模型
  • 3 代码生成
  • 4 拓展

1 概述

If-Action子系统是一种特殊的子系统。参考Matlab帮助文件中的示例图片,可以对该系统有一个直观的认识。
在这里插入图片描述
它是由动作信号触发,来决定子系统是否执行。动作信号通过If模块对输入的判断产生。最后用一个merge模块把各个子系统的输出结果合成。这种条件判断执行某些模块的方式,类似C代码中的if-else语句。

2 示例模型搭建

参照帮助文件里的例子,搭建一个If-Action子系统。

2.1 If模块

默认的If模块是一个输入信号和两条判断分支,如下图。
在这里插入图片描述
双击If模块可以对其进行配置。可配置内容包括输入信号数量,条件表达式和显示else分支。注意如果有多个else if的表达式,要一起写在Elseif expressions中。
在这里插入图片描述

2.2 If-Action子系统

If-Action子系统相比普通的子系统,在上方多了一个动作触发输入端。该输入端与If模块的输出相连,表明在If某款的某个判断条件下才执行这个子系统。
在这里插入图片描述
与使能子系统相似,If-Action子系统中的输出模块也可以选择held或者reset。
在这里插入图片描述

2.3 merge模块

如果整体的输出值在不同的条件下对应着不同的子系统的输出,就需要用merge模块把这些子系统的输出合并成一个。实际上也只有其中一个子系统的输出值是有效的。
在这里插入图片描述

2.4 完整模型

依照帮助文档里的示例建立的完整模型如下:
在这里插入图片描述
其中,输入和输出信号线关联了Simulink.Signal,为了使得生成的代码更直观。

两个If-Action子系统中没有加入任何运算策略,只是将输入的Input1或Input2输出到merge模块。

可以注意到,If模块的输出信号类型是action,而不是常见的single,uint,int等。而且信号线变成了虚线。这表明这根信号线是action信号线,用于触发If-Action子系统。

3 代码生成

Ctrl + B生成代码,如图所示:
在这里插入图片描述
可以看出,step函数中是一段简单的if-else判断语句。其中判断条件Input3 > 0.0F对应了If模块的配置,花括号内的执行语句Output1 = Input1;和Output1 = Input2;对应If-Action子系统里的控制策略。

4 拓展

除了If模块,用Switch Case模块搭配If-Action子系统也可以实现条件判断的控制策略。建模方式相似,文章内就不做演示。
在这里插入图片描述

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/106531835"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top