PDA

查看完整版本 : [Simulink相关] 请教:怎么在Simulink中实现If...Elseif...功能?


Fitz999
2012-07-10, 16:25
请教一下,怎么在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模块内部实现case之间的跳来跳去?

我的整个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之间挑来挑去的问题…… 请问大家有什么好的思路么?

谢谢!