Simulink仿真入门到精通(九) Simulink的流控制

摘要:
参数标签函数描述:Caseconditions以单元格数组的形式输入分支判断的值。选中Showdefaultcase时,将显示默认分支Enablezero crossing detection。选中启用过零检测时,必须以单元阵列的形式输入参数Caseconditions。每个分支的大小写值必须在单独的单元格数组中输入,数据类型必须为int32或枚举。SwitchCase模块可以判断的分支是离散数据点,这与ifelse区间的连续判断不同。
9.1 Simulink流控制分类

simulink中流控制时通过自带的模块实现的,包括If else、Switch、For和While4个种类。

9.2 While流控制

while

Simulink仿真入门到精通(九) Simulink的流控制第1张

Simulink仿真入门到精通(九) Simulink的流控制第2张

如果条件为真,那么子系统在当前的步长内反复执行,直到达到最大循环次数或者判断条件为假。

Simulink仿真入门到精通(九) Simulink的流控制第3张

参数标签功能说明
Maximum number of iteration最大循环次数
While loop type循环类型:while/do while
States when startingHeld(保持上次状态)/reset(状态恢复默认值)
Show iteration number port勾选则多出一个输出循环次数的输出端口
Output data type结合上一个参数使用,为输出循环次数设置数据类型

Simulink仿真入门到精通(九) Simulink的流控制第4张

Simulink仿真入门到精通(九) Simulink的流控制第5张

阶跃信号1s阶跃,最大循环次数保持默认值5。

Simulink仿真入门到精通(九) Simulink的流控制第6张

第一个步长计数器输出结果为4,因为在第一个循环时,模块执行一次(初始化)输出Unit Delya的初始值为0,然后再执行4次。

在计数达到99时,再执行2次不满足小于等于100的条件,退出循环。

do-while

仿真进行时,子系统内模块首先要执行一次,然后再去检查cond输入条件是否为真,如果为真则继续循环,直到cond条件不满足时退出当前步长的仿真,进入下一个步长。

没有IC输入,仅需要cond条件即可反复循环。

9.3 For循环控制

Simulink仿真入门到精通(九) Simulink的流控制第7张

Simulink仿真入门到精通(九) Simulink的流控制第8张

Simulink仿真入门到精通(九) Simulink的流控制第9张

参数标签功能说明
States when starting每次循环时保持子系统内的状态或恢复默认
Iteration limit source循环次数选择从内部限制或外部输入限制
Iteration limit内部限制时输入的循环次数
Set next i(iteration variable) externally通过外部输入当前循环的循环变量值
Show iteration variable选择是否输出循环变量值
Index mode循环变量的初始值从0/1开始
Iteration variable data type循环变量输出时的数据类型

示例:循环次数由内部决定,不输出循环变量的值。

Simulink仿真入门到精通(九) Simulink的流控制第10张

Simulink仿真入门到精通(九) Simulink的流控制第11张

Simulink仿真入门到精通(九) Simulink的流控制第12张

示例:循环次数由外部输入,且输出循环变量的值。

Simulink仿真入门到精通(九) Simulink的流控制第13张

Simulink仿真入门到精通(九) Simulink的流控制第14张

Simulink仿真入门到精通(九) Simulink的流控制第15张

虽然Sine Wave模块本身输出的时double信号,但接入For Iterator之后被强制转化为整形数据,并取不超过其值的非负整数值。

示例:外部设定Next_i,即下一个循环例循环变量的初始值。

外部框图同上。

Simulink仿真入门到精通(九) Simulink的流控制第16张

Simulink仿真入门到精通(九) Simulink的流控制第17张

9.4 If else控制

Simulink仿真入门到精通(九) Simulink的流控制第18张

 根据输入u1判断,如果满足条件则从上支输出信号,不满足则从下支输出信号,这2个信号再分别使能一个Action Subsystem,使用Merge模块将所有If Action Subsystem的输出集总,得到一个完整的逻辑输出。If模块的输出/输出端口可由用户设定。

Simulink仿真入门到精通(九) Simulink的流控制第19张

参数标签功能说明
Number of inputs输入端口的数目
If expressionIf分支的判断条件
Elseif expression

Else分支的判断条件,

如果期望多个elseif,之间用逗号分隔

Show else condition是否显示Else分支的输出Action信号
Enable zero-crossing detection使能过零检测与否

If expression的条件表达式收到的限制比较大:

  • 不支持+-*/和^等数学运算符号;
  • 不支持逻辑关系运算符&&和||;
  • 不支持数据类型函数,如int8,uint16。

If expression也好,Elseif experssion也好,后面都要跟着一个If Action Subsystem。

Simulink仿真入门到精通(九) Simulink的流控制第20张

Simulink仿真入门到精通(九) Simulink的流控制第21张

模型中Merge模块的作用是将多个Action子系统的输出合并到一个信号中,这些被合并的子系统需要具备一个条件:在某一个时刻,最多有一个子系统被使能计算,其他子系统是不计算的。

Simulink仿真入门到精通(九) Simulink的流控制第22张

9.5 Switch Case控制

Simulink仿真入门到精通(九) Simulink的流控制第23张

输入u1如匹配case分支值得要求,则可以触发次分支后所连接的Switch Case Action Subsystem。

Simulink仿真入门到精通(九) Simulink的流控制第24张

参数标签功能说明
Case conditions通过元胞数组形式输入分支判断的值
Show default case勾选后会出现default分支
Enable zero-crossing detection勾选后使能过零检测算法

参数Case condition要求必须使用元胞数组形式输入,每个分支的case值以单独的元胞数组形式输入,并且数据类型必须是int32或者枚举型

每条case分支可以对应一个或多个数值,混合使用时,此参数最外层使用{ },内部使用[ ]将参数分组,如{3, [5 8]}表示当输入为3时触发case[3]所对应的子系统,当输入为5或8时触发case[5 8]所对应的子系统。

Switch Case模块所能判断的分支是离散的数据点,与if else区间连续的判断不同。并且要求输入数据、参数Case conditions等数据类型保持一致,长度保持在有符号32为整数范围之内,不支持小数的输入判断。

免责声明:文章转载自《Simulink仿真入门到精通(九) Simulink的流控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]vmware中的开机画面太快进不了BIOS的解决方法Centos 6下使用cmake编译安装MariaDB下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Simulink仿真入门到精通(十) S函数

10.1 S函数概述 S函数也称为Simulink中的系统函数,是用来描述模块的Simulink宏函数,支持M、C等多种语言。当Simulink默认的模块不能满足用户的需求时,用户可以通过S函数自己打造一个模块,实现自定义的算法或期待的动作。 10.2 S函数的类型 S函数有多种类型,按照语言分类有M、C、C++、Fortran等编写的; 按照所支持功能...

Simulink仿真入门到精通(十一) 模块的封装

当用户编写了自定义的S函数或者使用Simulink标准库中的模块搭建子系统后,可以通过封装为其设计显示外观,追加参数对话框。 封装是构建一个以对话框为接口的交互界面的过程,它将复杂的模块逻辑关系隐藏起来,封装之后仅提供给用户GUI界面填写参数。用户仅需操作对话框即可实现自定义的功能。 11.1 Mask Editor封装模块 Mask Editor封装的对...

Simscape Multibody 教程 —— 入门学习

转载请注明出处,谢谢原创作者:MingruiYU原创链接:https://www.cnblogs.com/MingruiYu/p/12305851.html 本文要点: Simscape Multibody 简介 Simscape Multibody 入门学习的推荐学习材料和学习顺序 建模仿真过程中的重要知识 模型的参数设置(Model Worksp...

Simulink仿真入门到精通(十三) Simulink创建自定义库

 当用户自定义了一系列模块之后,可以自定义模块库将同类自定义模块显示到Simulink Browser中,作为库模块方便地拖曳到新建模型中。 建立这样的自定义库需要3个条件: 建立library的mdl或slx文件,将自定义模块添加到文件中保存; 建立名字为slblocks的M函数,定义模块库显示到Simulink Browser中的规格; slbloc...

Simulink仿真入门到精通(三) Simulink信号

3.1 Simulink信号概述 所谓信号,表示一种随着时间而变化的量,在时间轴上的采样时刻都对应有数值。 信号在Simulink中是相当重要的组成部分,有线(line)表示,在模型中穿针引线地将各模块联系起来,既能传递数据又可以明确表达模块的输入输出依赖关系,技能给自己命名以示自身的物理意义,又能绑定Simulink.Signal数据对象来表达生成代码中...

DSPBuilder Matlab安装教程说明

在安装DSPBuilder时遇到了几个小问题,让我心绪颇有感触:版本一定要用对呀!! 在本人安装的软件版本: QII11.0+DSPB11.0+Matlab2011b+Questa10.0(Modelsim的10.0版)+Win7系统 由于DSPB在安装前必须要事先安装好QII11.0+Matlab2011b+Questa10.0(或者Modelsim的其...