Main Content

解决速率转移问题

一般情况下,如果两个模块的采样时间不同,即任一采样时间向量分量不同,则它们之间就存在速率转移问题。例外情况有:

  • 输出常量值的模块永远不需要与其他任何速率进行速率转移。

  • 如果您使用定步长求解器,则连续采样时间(黑色)和最快的离散速率(红色)之间永远不会有速率转移。

  • 可变采样时间和子步中不变采样时间没有速率转移。

您可以通过插入 Rate Transition 模块并使用两个诊断工具,来手动解决速率转移问题。对于单任务执行模式,单任务数据传输诊断允许您设置 Simulink® 速率转移消息的级别。多任务数据传输诊断的作用与多任务执行模式相同。这些执行模式与使用的求解器类型有直接关系:变步长求解器始终是单任务;定步长求解器可以显式设置为单任务或多任务。

自动速率转换

Simulink 可在更新图的过程中检测到多任务模型中不匹配的速率转换,并自动插入 Rate Transition 模块来处理此问题。要启用此功能,请在模型配置参数的求解器窗格中选择自动处理数据传输的速率转换。此选项的默认设置为关闭。当您选择此选项后:

  • Simulink 将处理周期性采样时间和异步任务之间的速率转移。

  • Simulink 将在模块图中插入隐藏的 Rate Transition 模块。

  • 对于周期性任务和异步任务,自动插入的 Rate Transition 模块在受保护模式下运行。您无法更改此行为。对于周期性任务,自动插入的 Rate Transition 模块按照求解器窗格中的确定性数据传输参数指定的确定性级别运行。默认设置为“尽可能”,此设置将根据一个整数倍数来确定相关周期性采样时间之间的数据传输。有关详细信息,请参阅Deterministic data transfer。要使用其他模式,您必须插入 Rate Transition 模块,并手动设置其模式。

可视化插入的 Rate Transition 模块

如果您选择了自动处理数据传输的速率转换选项,Simulink 将在转移速率不匹配的路径中插入 Rate Transition 模块。这些模块默认情况下处于隐藏状态。要可视化插入的模块,请更新图。模型中将出现标记,指出 Simulink 在编译阶段插入 Rate Transition 模块的位置。例如,在此模型中,编译模型时在两个 Sine Wave 模块与 Multiplexer 和 Integrator 之间插入了三个 Rate Transition 模块。ZOH 和 DbBuf 标记指示了这些模块。

您可以显示或隐藏标记。在调试选项卡上,选择叠加信息 > 自动速率转换

要配置隐藏的 Rate Transition 模块,请右键点击标记,然后点击插入 Rate Transition 模块以使模块可见。

当您显示隐藏的 Rate Transition 模块之后:

  • 您可以看到插入的 Rate Transition 模块的类型以及在模型中的位置。

  • 您可以设置这些模块的初始条件

  • 您可以更改数据传输和采样时间模块参数。

通过更新图来验证您对模型所做的更改。

显示插入的 Rate Transition 模块与导出函数模型不兼容。

有关 Rate Transition 模块类型的详细信息,请参阅 Rate Transition

注意

假设您自动插入 Rate Transition 模块,并且在您插入的模块的上游有一个虚拟模块指定采样时间。您无法点击插入的模块的标记来配置模块并使其可见,因为虚拟模块的采样时间也会导致速率转移。在这种情况下,应手动在虚拟模块之前插入一个 Rate Transition 模块。有关虚拟模块的详细信息,请参阅非虚拟和虚拟模块

相关示例

详细信息