matlab - Simulink:同步和定时

标签 matlab synchronization simulink

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

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

问题是,有些 block 会在其他 block 之后工作,而有些则不能。我必须承认,我对 Simulink 的使用经验并不多,无法按照时间顺序处理依赖时间的事情(尽管有 simulink 的基本知识)。

例如,应实现以下场景:

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

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

编辑: 我的新想法是使用 matlab 工作区 als 缓冲区,这样我的 block A 就可以将其结果推送到工作区(通过“到工作区” block )。但现在我必须确保,在 A 将其信息推送到工作区之后, block B 和 C 可以读取 A 的结果(使用“来自工作区”)...如何做到这一点?

编辑2: 这是一个屏幕截图,应该可以让一些人的想法更清晰: 正如“排序顺序”的文档所指的那样,设置似乎没问题(包括子系统计时)。但不幸的是问题仍然存在。变量“simin”是在写入之前从工作区加载的:(如您所见,显示屏显示“1”,这是不应该的。在模拟的第一次运行中,我得到一个异常,变量“simin”不存在。

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

你好,poeschron

最佳答案

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

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

enter image description here

您在第一次运行时看到的错误是由于 Simulink 在执行第一个时间步之前才创建变量。当 Simulink 构建仿真时,它发现用作工作区输入的变量并未创建。

关于matlab - Simulink:同步和定时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828888/

相关文章:

matlab - pcolor 图上的第二个 y 轴

algorithm - 数据清洗情绪分析

c++ - CGIR 断言 'fitsType<size_t>()' 失败

matlab - 在 Simulink 中获取多个选定 block 的句柄

c++ - 在自己的 C++ 项目中使用 Simulink 生成的 C/C++ 代码

matlab - 生成特定随机数的概率,例如在 MATLAB 中

matlab - 如何在 Matlab 中绘制带通滤波器传递函数的频率响应?

字符串作为id的java同步

ruby - 在同一台计算机上同步两个 ruby​​ 脚本

transactions - 在 Clojure 中同步读写的方法?