登录论坛

查看完整版本 : Simulink:同步和计时


poster
2019-12-14, 20:13
为了模拟某些过程,我在获得自定义模块的预定义工作顺序时遇到问题。

我如何确定例如B座和C座开始工作之前必须完成A座?

问题是,某些模块将在另一些模块之后工作,而另一些则不会。我必须承认,我对Simulink的经验不足,无法按时进行操作(尽管可以使用simulink的基本知识)。

例如,应实现此方案:

A -> B, C -> D, E, F 最主要的是,所有块AF彼此之间没有逻辑关联,它们都做几件事。我的目的是在A完成之后使B和C开始工作。 B和C完成之后的D / E / F。在这种情况下,单词“ parallel”是错误的单词,因此不必真正地并行计算。只要确保这符合预定的稳定顺序即可。

编辑:我的新想法是使用matlab工作区als缓冲区,因此我的块A可以将其结果推送到工作区(通过“到工作区”块)。但是现在我必须确保,块B和C可以读取A的结果(带有“从工作区”),然后A将其信息推送到工作区...如何执行此操作?

Edit2:这是一个屏幕截图,应该使您的思路更加清晰: https://i.stack.imgur.com/Y4qEC.jpg (https://i.stack.imgur.com/Y4qEC.jpg)正如“排序顺序”文档中提到的那样,设置似乎可以(包括子系统时序)。但是不幸的是问题仍然存在。变量“ simin”是在工作空间中加载的,然后才被写入:(如您所见,显示屏显示“ 1”,这是不应该的。在模拟的第一次运行中,我得到了一个例外,即“ simin”不存在。

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

问候,poeschlorn



回答:

因此,在您的示例中,如果您将块A和B和C都用同一根导线连接,则当块A完成时,块B和C将并行工作。

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

https://i.stack.imgur.com/b7YPg.png

您在第一次运行时看到的错误是由于Simulink在执行第一步时才创建变量。 Simulink构建模拟时,会看到未创建用作工作空间输入的变量。



更多&回答... (https://stackoverflow.com/questions/4828888)