系统中的采样时间
纯离散系统
纯离散系统完全由离散模块组成,可以使用定步长或变步长求解器进行建模。要对离散系统进行仿真,需要仿真器在每个采样时间命中点执行一个仿真步。对于多速率离散系统 - Simulink® 以不同速率对其模块进行采样的系统 - 时间步的发生时间必须是每个系统采样时间的整数倍。否则,仿真器可能会漏掉关键的系统状态转移。Simulink 软件选择的步长取决于您用来仿真多速率系统的求解器类型和基础采样时间。
多速率离散系统的基础采样时间是系统实际采样时间的最大双精度整数除数。例如,假设系统的采样时间为 0.25 和 0.50 秒。这种情况下,基础采样时间为 0.25 秒。再假设采样时间为 0.50 和 0.75 秒。基础采样时间还是 0.25 秒。
基础采样时间的重要性直接关系到您指示 Simulink 软件使用定步长还是变步长离散求解器来解算多速率离散系统。定步长求解器将仿真步长设置为等于离散系统的基础采样时间。相反,变步长求解器会调整步长,使其等于实际采样时间命中点之间的距离。
下图说明了定步长和变步长求解器之间的差异。
在上图中,箭头表示仿真步,圆圈表示采样时间命中点。如图所示,执行系统仿真时,如果基础采样时间小于系统的任何实际采样时间,变步长求解器将需要较少的仿真步。而另一方面,如果系统中有一个采样时间等于基础采样时间,则定步长求解器需要的实现内存更少,速度更快。这在需要从 Simulink 模型中生成代码(使用 Simulink Coder™)的应用中,可能算是一个优势。在任一情况下,Simulink 提供的离散求解器均针对离散系统进行了优化;但是,您可以使用任何一种求解器对纯离散系统进行仿真,并获得相同的结果。
假设有下面这样一个简单的多速率系统。在这个示例中,DTF1 Discrete Transfer Fcn 模块的采样时间设置为 [1 0.1]
,偏移量为 0.1
。DTF2 Discrete Transfer Fcn 模块的采样时间设置为 0.7
,无偏移量。求解器设置为变步长离散求解器。
运行仿真并使用 stairs
函数绘制输出
set_param(bdroot,'SolverType','Variable-Step','SolverName','VariableStepDiscrete','SaveFormat','Array'); simOut = sim(bdroot,'Stoptime','3'); stairs(simOut.tout,simOut.yout,'-*','LineWidth',1.2); xlabel('Time (t)'); ylabel('Outputs (out1,out2)'); legend('t_s = [1, 0.1]','t_s = 0.7','location','best')
生成的绘图如下所示。
(有关 sim
命令的信息,请参阅以编程方式运行仿真。)
如图所示,因为 DTF1 模块的偏移量为 0.1
,所以直到 t = 0.1
时 DTF1 模块才会开始输出。同样,传递函数的初始条件为零;因此,DTF1 的输出 y(1) 在此时间之前为零。
混合系统
混合系统同时包含离散模块和连续模块,因此同时具有离散状态和连续状态。但是,Simulink 求解器将同时具有连续和离散采样时间的任何系统都视为混合系统。有关为混合系统建模的信息,请参阅混合系统建模。
在模块图中,“混合”一词同时适用于混合系统(混合的连续离散系统)和具有多个采样时间的系统(多速率系统)。当您执行更新图并将“采样时间显示”的颜色设置为 'on
' 时,此类系统的颜色将变为黄色。例如,假设以下模型中包含一个原子子系统 Discrete Cruise Controller 和一个虚拟子系统 Car Dynamics。
车辆模型
当采样时间选项设置为全部时,执行更新图会将虚拟子系统变为黄色,表明它是一个混合子系统。这种情况下,该子系统是一个真正的混合系统,因为它同时具有连续和离散采样时间。如下所示,离散输入信号 D1 与连续速度信号 v 结合,为积分器生成连续输入信号。
更新图之后的车辆模型
更新图之后的车辆动力学子系统
现在,假设有一个多速率子系统包含三个 Sine Wave 源模块,每个模块具有唯一的采样时间,分别为 0.2、0.3 和 0.4。
更新图之后的多速率子系统
更新图操作将子系统变为黄色,因为子系统包含多个采样时间。如模块图中所示,Sine Wave 模块具有离散采样时间 D1、D2 和 D3,输出信号将采用子步中不变。
在评估系统的多个采样时间时,Simulink 不会考虑常量 [inf, 0] 或异步 [–1, –n] 采样时间。因此,如果子系统中有一个模块输出常量值,另一个模块具有离散采样时间,则该子系统不被视为混合系统。
混合注释和颜色设置对于评估您模型中的子系统是否继承了正确的或预期的采样时间非常有用。