在 Simulink 中单独运行子系统
Posted
技术标签:
【中文标题】在 Simulink 中单独运行子系统【英文标题】:Running subsystems individually in Simulink 【发布时间】:2016-04-07 09:16:05 【问题描述】:大家好, 我目前在使用 Simulink 模型时遇到问题。有 2 个子系统 A 和 B。我想让子系统 A 先运行,然后使用生成的数据运行子系统 B。我可以使用 Simulink 模块的功能来执行此操作吗?
我曾尝试在子系统 B 之前使用触发和启用 10 秒的步进输入,但它不起作用。 我尝试过存储内存,但也没有用。 考虑了 Variant 子系统,但由于子系统 A 和 B 的输入不同,我认为它不会正常工作。
我将不胜感激从你们那里得到的帮助和支持!非常感谢!
【问题讨论】:
我想我们在这里需要更多信息,一些简单的子系统示例。因为通常您只是将它们一一放置,然后 B 使用 A 的结果。所以我假设您的问题是您需要一些数据数组,这些数组创建了一段时间,然后将其路由到子 B。这有点困难,但可以使用启用的子系统来完成。我们需要更多信息来回答。 如果子系统 A 向子系统 B 提供数据,那么 Simulink 将自动(并且根据定义)排序执行,使得 A 在 B 之前执行。这将在每个时间步发生。您是否要求 A 运行一定时间然后让 B 执行?当你说“它不起作用”时,更明确地说明什么不起作用。发生了什么,发生了什么问题。 感谢您的回复。我在下面的链接中附加了我的 Simulink 模型。希望它会更清楚。基本上我需要先运行我的 PV 配置。然后我将使用我的子系统 B 扫描 PV 的 V-P 图。再次感谢! dropbox.com/sh/asononvm9hgnlig/AABrIsRZRfH2OCMBLMDx9Af1a?dl=0 嗨菲尔,基本上我需要子系统 A 完全运行然后运行子系统 B。当我尝试使用带有步进输入的触发器操作符来控制触发器时,这个错误浮出水面。 “Simulink 没有足够的信息来确定此模块的输出大小。如果您认为以下错误不准确,请尝试指定模块输入的类型和/或模块输出的大小。” 为什么它们不是 2 个不同的模型?目前尚不清楚a)P,V和I是否应该在每个时间步输入到子系统B,b)它们应该被缓冲并在给定/触发的时间步输入到子系统B,或者c)你应该有2个模型,先得到 P、V 和 I 的结果,然后运行模型 B。 【参考方案1】:您可能需要了解如何在 Simulink 中为某些模块分配优先级,也称为更改模型中的排序顺序。您可以以编程方式或交互方式执行此操作。查看文档中的page 以获取更多详细信息。
【讨论】:
排序顺序仅在子系统 A 和子系统 B 执行的顺序无关紧要时才有效(因此 Simulink 允许用户指定他们希望执行的顺序)。如果子系统 A 馈入子系统 B,则模块具有固有顺序,因此 Simulink 将忽略您指定的排序顺序。以上是关于在 Simulink 中单独运行子系统的主要内容,如果未能解决你的问题,请参考以下文章
运行 Simulink 模块时出现错误,但单独运行相应的 M 文件时会成功