当满足某个条件时,是否可以停止Simulink仿真?

时间:2015-12-18 10:02:03

标签: matlab simulation simulink

假设您有一个Simulink模拟,其中某个信号首先是正的,并且在给定的时间间隔内的某个时间t之后,它变为负数。你的目标是找到零交叉。

第一种方法是在给定间隔内绘制信号,保存并计算过零点。

当针对变化的参数重复该模拟多次时,能够在信号变为负之后停止模拟将是有益的。然后已经有足够的信息来计算Matlab中的过零点。你怎么能这样做?

3 个答案:

答案 0 :(得分:2)

是的,使用Stop Simulation块以及块的相应逻辑输入:

enter image description here

答案 1 :(得分:1)

您可以使用if / else块来控制Simulink模型中的流量。在if / else块中,您可以选择条件if u > 0,如果正确则继续正常运行,并使用else - 选项绕过您原本运行的其余流程。例如,直接跳到范围。

enter image description here

答案 2 :(得分:1)

另一种方式:

  1. 您可以在Simulink中使用Hit Crossing Block来查找零点时的时间。

  2. 另一种方法 - 使用任何Trigger或Resettable系统。它也检测过零点。例如:this question at SO

  3. 当然,您也可以使用User Defined function来检测手的零交叉,并同时对信号做任何想法。

  4. 关于进行大量模拟然后停止: 您可以使用Check Upper Static Boundn时间过零时自动停止模拟。例如: enter image description here

    我为此块设置了upper bound = 10,这在第10个交叉点停止。 有很多方法可以在这一点或几次保存函数值,但这是另一个问题:)