MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [Simulink相关] 请教:怎么在Simulink中实现If...Elseif...功能? (https://www.labfans.com/bbs/showthread.php?t=17204)

Fitz999 2012-07-10 16:25

请教:怎么在Simulink中实现If...Elseif...功能?
 
请教一下,怎么在Simulink中实现If...Elseif...功能?

其实我的整个系统就是一个Finite State Machine:If条件一成立(模块一为真)、Then触发模块三;Elseif条件二成立(模块二为真)、Then触发模块四。注意,条件一和条件二都比较复杂,都是以Simulink模块的形式存在的。

我曾经试过用Flow Chart来做,但问题是Flow Chart中,引起State变化的条件都非常简单,比如某个变量大于1、或者某个函数值小于0之类的。而我的引起State变化的条件都比较复杂,都是以Simulink模块的形式存在的,而且我不知道怎么样在Flow Chart里面嵌套Simulink模块。

所以请教大家,是怎么完成Simulink中模块之间的切换的?

谢谢!

Fitz999 2012-07-11 11:10

回复: 请教:怎么在Simulink中实现If...Elseif...功能?
 
或者,我换个问法:[B]怎么在一个Simulink模块内部实现case之间的跳来跳去[/B]?

我的整个Simulink系统由以2个模块组成:模块A是一个名叫Detect Fall Nonpositive的Simulink自带的模块(专门检测方波有没有到达下降沿),模块B正是我不懂的需要请教大家的地方……

模块B的功能如下,它一共有3个状态(或者叫3个case):

case 1:(初始状态)
If 模块A输出为"1"
Then 跳到 case 2;
Else
Then 维持在 case1;

case 2:
If 模块A输出为"1"
Then 跳到 case 3;
Else
Then 维持在 case2;

case 3:
输出一个形为00011000的脉冲;
跳回 case 1;

如果用S function来实现模块B,那么这个模块B必须和模块A有效互动,还涉及到S function内部case之间挑来挑去的问题…… 请问大家有什么好的思路么?

谢谢!


所有时间均为北京时间。现在的时间是 13:26

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.