Simulink:同步和计时

时间:2011-01-28 13:46:48

标签: matlab synchronization simulink

为了模拟某些进程,我在获取自建模块的预定义工作顺序时遇到问题。

我怎么能确定,例如在Block B和C开始工作之前必须完成Block A?

问题是,有些街区应该在其他街区之后工作,而有些则不能。我必须承认,我没有太多使用Simulink的经验来做依赖于时间的事情(尽管可以使用simulink的基本知识)。

例如,这种情况应该实现:

A -> B, C -> D, E, F

主要的是,所有的A-F块都没有逻辑关联,它们都做了几件事。我的目标是在A完成后让B和C开始工作。 B和C完成后的D / E / F. 在这种情况下,单词“parallel”是错误的单词,这不一定非常平行地计算。只需确保,这符合预定的稳定订单。

修改 我的新想法是使用matlab工作空间als缓冲区,因此我的块A可以将其结果推送到工作空间(通过“to workspace”块)。但是现在我必须确保,块B和C可以读取结果(使用“来自工作空间”)A AFTER A将其信息推送到工作空间......怎么做?

EDIT2: 这是一个截图,应该让一些人认为更清楚: http://img825.imageshack.us/img825/2830/screenshotbs.jpg 正如“排序顺序”的文档所述,设置似乎没问题(包括子系统的时间)。但不幸的是,问题仍然存在。变量“simin”在写入之前从工作空间加载:(如您所见,显示屏显示“1”,它不应该这样做。在模拟的第一次运行中,我得到一个异常,即变量“simin”不存在。

如果你能解决我的问题,那就太好了。

Greets,poeschlorn

3 个答案:

答案 0 :(得分:1)

因此,在您的示例中,如果块B使用相同的线连接到B和C,则块A完成后,块B和C将并行工作。

编辑: 我使用的是相同的块,但它适用于我。我认为你过于复杂化了。设置块优先级的方式与Simulink如何在没有它们的情况下运行块没有什么不同。您可以在下面看到我的设置和二进制显示器上的输出。

enter image description here

您在第一次运行时看到的错误是由于Simulink在第一次执行步骤之前没有创建变量。当Simulink构建模拟时,它会发现未创建用作工作空间输入的变量。

答案 1 :(得分:1)

如果块之间的连接不足以设置顺序,则可以使用block priorities

测试执行顺序的提示是添加一个“嵌入式Matlab块”,其中disp命令显示块的名称。

答案 2 :(得分:0)

你所要求的并不是很清楚。当你说块A必须完成时,你的意思是输出功能吗?模拟在Simulink中的工作方式是块是串行运行的,因此块B和C将永远不会运行,直到块A完成它的输出功能。

我不知道目前在Simulink中并行运行块B和C的任何明显方法。