【问题标题】:My simple Stateflow model shows error我的简单 Stateflow 模型显示错误
【发布时间】:2014-11-15 05:35:34
【问题描述】:

我几乎是 Simulink 和 Stateflow 的新手。我正在尝试对一些简单的状态机进行建模。但是在尝试运行模型时,它会显示错误(在 Matlab 主屏幕上)。

Warning: Input port 1 of 'sample/If' is not connected. 
Warning: Output port 1 of 'sample/If' is not connected. 
Parsing failed for machine: "sample"(#90)

1) 这有什么问题吗?

2) 还有一个问题:如何在 S2 上添加计时器?例如我们不能在 S2 上停留超过 2 分钟。因此,一旦我们进入 S2,就会启动一个计时器,当它达到 2 分钟时,应该转换到 S3。

附:由于某些原因,simulink 方案上的状态流缩略图没有显示更新的模型;没有 conditionif_outfput 变量了!

【问题讨论】:

  • 与您的问题没有直接关系,但您的状态图中的实现将不起作用。您已将 4 个状态定义为并行执行(由虚线边框和右上角的整数表示),但逻辑清楚地表明它们需要定义为异或状态。
  • @Phil :哦,它们应该是常规状态,串行...不是并行。我刚刚选择了状态图标并绘制了它们。我该如何解决它们?
  • 在任何状态之外的状态图中右击,向下约一半到分解菜单,然后选择异或。
  • 谢谢!在解决了几个错误后,终于可以工作了。我有两个一般性问题:1)跑步的速度!模型运行太快。您是否碰巧知道模型配置参数上的最佳配置是什么以使其变慢以便我们可以跟踪转换? 2)目前我只有一个恒定的输入。如何设置一系列常量,例如 0,然后在 1 分钟后 1、3 分钟后 2 等?谢谢

标签: matlab simulink stateflow


【解决方案1】:

嗯,错误消息是不言自明的:您没有将 Stateflow 图的输入 Condition 连接到任何东西,因此出现了错误。将其连接到 Simulink 中的信号(无论代表您的条件信号)。同样,您也没有将图表的输出连接到任何东西。您说这些变量不再存在,但 Stateflow 似乎不这么认为。您是否从模型资源管理器中删除了它们?如果不是,Stateflow 仍会认为它们是图表的一部分。有关详细信息,请参阅文档中的 Use the Model Explorer with Stateflow Objects

对于计时器,是的,这是可能的。目前,当input ==1 时,您退出S2S3。您可以将转换更改为[input == 1] || after(2000,sec)(我认为)。您可能需要在模型配置参数中启用对绝对时间的支持。有关详细信息,请参阅文档中的 Control Chart Execution Using Temporal Logic

【讨论】:

  • 感谢您提供的好信息,但正如您所见,我的 Stateflow 上不再有 condition 输入!它在那里,但我删除了它。我不知道为什么它仍然显示它。我会检查你的计时器代码。
  • 您不明白:如果它们仍然显示在您的图表上,则意味着就 Stateflow 而言它们仍然存在。您需要从 Model Explorer 中删除它们。在您解决此问题之前,您将无法运行您的模型。
  • 哦,好的。我在智能手机上查看你的答案,并没有完全阅读上面的答案!
  • 谢谢!在解决了几个错误后,终于可以工作了。我有两个一般性问题:1)跑步的速度!模型运行太快。您是否碰巧知道模型配置参数上的最佳配置是什么以使其变慢以便我们可以跟踪转换? 2)目前我只有一个恒定的输入。如何设置一系列常量,例如 0,然后在 1 分钟后 1、3 分钟后 2 等?谢谢
  • 很高兴它有帮助。如果它解决了您的问题,请接受答案,以帮助有类似问题的其他人找到解决方案。对于您的其他问题,是的,您可以减慢动画速度。您需要进入 Stateflow 调试器并在动画部分放置 x 秒的延迟。在最新版本中,界面略有不同,但思路相同(见uk.mathworks.com/help/stateflow/ug/…)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 2018-04-09
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
相关资源
最近更新 更多