gpt4 book ai didi

debugging - Simulink:类似 Debug模式的仿真

转载 作者:太空宇宙 更新时间:2023-11-03 20:17:04 25 4
gpt4 key购买 nike

我在 Simulink 上有另一个问题:

是否可以在运行时暂停模拟?通过“单位延迟”建立几个步骤后,我想在下一步完成之前暂停我的模拟(用于显示值供用户查看)。之后 - 让我们说 - 单击模拟将继续一个步骤并重复该过程。最后,这应该具有某种调试功能。

我不是很确定这是如何实现的。我猜想在模拟参数中的某处,但在哪里以及如何?

最佳答案

据我所知,您可以通过三种方式解决此问题。

方法 1:根本不要暂停模拟。而是在适当的行上使用范围来提供足够的信息来了解模拟中发生的事情。

优点:您不会被执行顺序和模拟暂停所影响,从而导致困惑的结果。

缺点:在您的头脑中“时间同步”不同作用域的线可能很棘手,尤其是如果不是所有线都执行每个模拟步骤。 (这部分是由于范围框图显示为阶跃函数,而实际上它们是散点图。

方法 2: 使用内置的 Simulink 调试器。 (不要抱太大希望)。从您正在使用的模型中的 Tool>Simulink Debugger 菜单选项打开它。该工具允许您在某些 block 上设置断点、一次一个 block 或两者的某种组合。

优点:允许对模拟进行精细控制。

缺点:在实践中,我发现这个工具使用起来很困惑,而且容易使 Matlab 崩溃。另外,请注意执行顺序。

方法 3:在仿真执行顺序的开头创建一个嵌入式 Matlab 函数。这是一个例子:

函数 y=func(x);y=x;

在模拟开始时将此函数放在其中一条信号线上(以强制执行顺序)。然后在y=x上放一个调试点;线。现在,只要您的模拟碰到这条线,模拟就会暂停,等待您点击 Matlab 编辑器中的“继续”按钮。

优点:可靠、简单。

缺点:注意执行顺序。

执行顺序:

如果您不熟悉 Simulink 中的执行顺序,我建议您从模型菜单中打开“Format>Block Displays>Sorted Order”。这将在每个 block 上放置神秘的数字/字母代码,以某种方式指示 block 在您的模拟中执行的顺序。根据您的模型和布局,这些数字/字母代码可能很有意义,也可能没有意义。我不建议在通常的实践中使用这种排序顺序显示。相反,我建议学习和理解 Simulink 如何确定排序顺序/执行顺序。

要记住的重要一点是,调试点(使用 Simulink 调试器或嵌入式 Matlab 的天气)是执行顺序的一部分。这意味着当您到达调试点时,该点之后的 block 将不会更新它们的状态。这很有道理,但可能会让您感到惊讶的是,显示和范围通常是更新状态的最后一些 block ,即使它们在执行早期连接到由 block 提供的信号线也是如此。即使这些显示和范围位于(非原子)子系统内部,并且您的调试点位于该子系统外部,也是如此。您最终可能会遇到这样一种情况,即显示器或示波器上显示的值可能来自模拟中的最后一个时间步长。

您如何解决这个问题?将所有模拟放入原子子系统中,包括显示和范围。然后把你的调试点放在这个子系统之外。这将保证无论何时命中调试点,所有 block (包括显示和范围)的状态都是一致的。

如果其中任何一个没有意义,请告诉我。

关于debugging - Simulink:类似 Debug模式的仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com