我几乎是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。
P.S。由于某些原因,simulink方案上的stateflow缩略图未显示更新的模型;没有condition
和if_outfput
变量了!
答案 0 :(得分:0)
好吧,错误信息非常明显:您没有将Stateflow图表的输入Condition
连接到任何内容,因此错误。将它连接到Simulink中的信号(无论代表您的状态信号)。同样,您还没有将图表的输出连接到任何东西。你说这些变量不再存在,但Stateflow似乎并不这么认为。您是否已从Model Explorer中删除它们?如果没有,Stateflow仍然会认为它们是图表的一部分。有关详细信息,请参阅文档中的Use the Model Explorer with Stateflow Objects。
对于计时器,是的,这是可能的。目前,您S2
时退出S3
至input ==1
。您可以将转换更改为[input == 1] || after(2000,sec)
(我认为)。您可能需要在模型配置参数中启用对绝对时间的支持。有关详细信息,请参阅文档中的Control Chart Execution Using Temporal Logic。