【问题标题】:My simple simulink model runs too fast我的简单 simulink 模型运行速度太快
【发布时间】:2014-11-17 05:34:34
【问题描述】:

我在 Matlab 上设计了一个简单的 simulink 和 stateflow 图。它完美地工作!但我有两个问题:

1) 模型运行速度过快。两种状态之间的转换时间快得惊人,我看不到。我试图改变一些参数,但我没有成功。我应该改变什么(可能是模型配置参数?)让它变慢,这样我们才能看到转换?

2) 目前我只有一个恒定的输入。如何设置一系列常量,可能是周期性的?我认为应该有一个特殊的组件。我需要,比如在时间 0 输入 0,然后在 1 分钟后输入 1,在时间 3 输入 2,等等?

【问题讨论】:

  • 可能在Scope 上扩大规模并可视化图表,您也可以将模拟停止时间从 1000.0 减少到 1 或 2 甚至更少

标签: matlab simulink stateflow


【解决方案1】:

1) 我在一些交互式模拟中遇到了同样的问题,CPU 会使它们运行得太快,以至于用户无法进行交互。使用Simulink Real Time Execution Block 带来了解决方案,尽管由于它使用的解决方案而导致 CPU 负载很重。有了这个,如果你定义一个 10 秒的模拟,这就是它的持续时间。如果您不想承受这种负担,只需延长模拟时间,或在整个模拟过程中彻底检查范围(禁用范围中的点限制,单击参数按钮,然后取消选中数据历史记录/将数据点限制到最后。 ..)

2) Simulink/Sources/重复序列。您定义时间向量和在该时间输出的值。请记住,该块在两个点之间插入值,因此,如果您想在 T=1s 中从 2 更改为 3,则必须定义两个点,一个 U=2 在 T=1s 中,另一个 U=3 在 T=1s 中T=1s。例如,0 英寸 (0..1)、5 英寸 (1..2)、10 英寸 (2..3) 和 15 英寸 (3..4):

Time values:   [0 1 1 2 2  3  3  4]
Output values: [0 0 5 5 10 10 15 15]

【讨论】:

  • Stateflow 调试器还允许在动画中设置延迟。
  • @Manex 错误!时间值应该是单一的;两个结果数显然不能相似。
【解决方案2】:

如果您只想检查过渡,则不需要让它变慢。您可以尝试使用 Stateflow 中提供的 Debug 模式,您可以逐步了解您的模型是如何工作的。

【讨论】:

  • 谢谢。您是否知道除了模型本身之外,我们是否还可以验证生成的 C 代码?我需要检查可达性;一个特定的状态(或一段代码)永远无法到达。
  • @ArianaJasmine 执行此操作的方法是使用 Simulink Design Verifier,它将在 Simulink(不是代码)中验证设计,并使用 Polyspace Code Prover 验证代码。这两者都是 Simulink 的(昂贵的)附加产品。
【解决方案3】:

减慢 Stateflow 动画的选项(例如,您可以在仿真期间更好地查看状态之间的转换)位于 Simulink 菜单栏中的 Display 菜单下。

在最新版本 (R2014b) 中,该选项位于 Display->Stateflow Animation 下(以及 Simulation->Stateflow Animation 下)。 (详情请参阅here。)

在旧版本中,它位于 Display->Data Display in Simulation->Chart Animation Delay (sec) 下(虽然,我不能 100% 确定何时在菜单中移动了此选项) .

请注意,您必须在图表内部才能在菜单中启用这些选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多