是否可以在满足特定条件时停止 Simulink 仿真?

Is it possible to stop a Simulink simulation when a certain condition is met?

假设您有一个 Simulink 仿真,其中某个信号首先为正,在给定时间间隔内的某个时间 t 后,它变为负。您的目标是找到过零点。

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

当针对不同的参数多次重复此模拟时,在信号变为负值后能够停止模拟将是有益的。那么在Matlab中已经有足够的过零计算信息了。你怎么能那样做?

您可以使用 if / else 块来控制 Simulink 模型中的流程。在 if / else 块中,您可以选择条件 if u > 0,如果条件为真则继续正常,并使用 else 选项绕过其余流程,否则 [=20] =].比如直接跳转到scope.

是,使用 Stop Simulation 块和块的适当逻辑输入:

另一种方式:

  1. 您可以在 Simulink 中使用 Hit Crossing Block 来计算归零时刻的时间。

  2. 另一种方法 - 使用任何触发器或可重置系统。它也检测过零。例如:this question at SO.

  3. 当然你也可以用User Defined function用手检测过零,同时用信号做任何你想做的事情。

关于进行大量模拟然后停止: 您可以使用 Check Upper Static Bound 在第 n 次过零时自动停止模拟。例如:

我为这个街区设置了 upper bound = 10 并在第 10 个十字路口停止。 有很多方法可以在这个点或时间数组中保存函数值,但这是另一个问题:)