Main Content

传播如何影响继承的采样时间

在更新模型的过程中,例如在仿真开始时,Simulink® 通过一个过程来确定继承采样时间的模块的采样时间,此过程称为采样时间传播。下图所示为采样时间周期为 TsDiscrete Filter 模块正在驱动一个 Gain 模块。

因为 Gain 模块的输出等于输入乘以一个常量,所以输出改变的速率与滤波器的速率相同。换句话说,Gain 模块的有效采样率等于滤波器的采样率。这种确定有效速率的方法是 Simulink 中采样时间传播背后的基本机制。

采样时间传播过程

Simulink 按照以下基本过程为继承采样时间的模块分配采样时间:

  1. 将已知的采样时间信息向前传播。

  2. 反向传播已知的采样时间信息。

  3. 应用一组启发式方法来确定其他采样时间。

  4. 重复以上过程,直到确定了所有采样时间。

Simulink 分配采样时间的规则

如果一个模块具有基于模块的采样时间,它将基于其输入端口上连接的模块的采样时间来继承采样时间并遵循以下规则:

规则操作
所有输入具有相同的采样时间,并且模块可以接受该采样时间Simulink 将该采样时间分配给模块
输入具有不同的离散采样时间,所有输入采样时间是速度最快的输入采样时间的整数倍Simulink 将速度最快的输入端口的采样时间分配给模块。(此分配假定模块可以接受速度最快的采样时间。)
输入具有不同的离散采样时间,某些输入采样时间不是最快采样时间的整数倍,模型使用变步长求解器Simulink 为模块分配子步中不变的采样时间。
输入具有不同的离散采样时间,某些输入采样时间不是最快采样时间的整数倍,模型使用定步长求解器,Simulink 可以计算进入模块的采样时间的整数最大公约数 (GCD)Simulink 将 GCD 采样时间分配给模块。否则,Simulink 将模型的固定步长分配给模块。
某些输入的采样时间未知,或者模块无法接受该采样时间Simulink 基于一组启发式方法来确定模块的采样时间。

采样时间的反向传播

当您更新或仿真模型时,如果模型指定源模块的采样时间为继承 (–1),则可能会反向传播源模块的采样时间;Simulink 可能会将源模块的采样时间设置为与源模块上连接的模块所指定或继承的采样时间相同。例如,在下面的模型中,Simulink 软件识别出 Sine Wave 模块正在驱动 Discrete-Time Integrator 模块(采样时间为 1);因此它为 Sine Wave 模块分配了采样时间 1

您可以通过以下方法验证此采样时间设置:从 Simulink 工具条的调试选项卡中选择叠加信息 > 颜色,并注意两个模块都为红色。因为 Discrete-Time Integrator 模块仅在其采样时间命中点查看输入,所以此更改不影响仿真结果,但会提高仿真性能。

现在将 Discrete-Time Integrator 模块替换为连续 Integrator 模块,如下面的模型所示,将导致 Sine WaveGain 模块变成连续模块。您可以通过在建模选项卡上选择更新模型更新颜色来测试此更改。两个模块现在均显示为黑色。

注意

反向传播使得模型源模块的采样时间依赖于模块的连接性。如果您更改模型的连接性,而该模型的源模块继承采样时间,则您可能会无意中更改源模块的采样时间。因此,当您更新或仿真模型时,如果模型中包含的源模块继承采样时间,默认情况下 Simulink 会在命令行显示警告。有关详细信息,请参阅Source block specifies -1 sample time

相关主题