【问题标题】:Is it possible to stop a Simulink simulation when a certain condition is met?满足特定条件时是否可以停止 Simulink 仿真?
【发布时间】:2016-03-25 00:03:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab simulation simulink


    【解决方案1】:

    另一种方式:

    1. 您可以在 Simulink 中使用 Hit Crossing Block 在达到零的那一刻找到时间。

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

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

    关于进行大量模拟然后停止: 您可以使用Check Upper Static Boundnth 次超过零的那一刻自动停止模拟。例如:

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

    【讨论】:

      【解决方案2】:

      是的,将Stop Simulation 块与块的适当逻辑输入一起使用:

      【讨论】:

        【解决方案3】:

        您可以使用if / else 模块来控制 Simulink 模型中的流程。在if / else 块中,您可以选择条件if u > 0,如果为真则照常继续,并使用else-选项绕过您本来要运行的其余流程。比如直接跳转到作用域。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-10
          • 1970-01-01
          • 1970-01-01
          • 2013-10-17
          • 2013-06-24
          • 1970-01-01
          相关资源
          最近更新 更多