一、步长定义和概念
- 步长(Simulation Step Size)
步长是 Simulink 求解器在仿真过程中更新系统状态的时间间隔,即相邻两次计算系统输出或状态的时间差。它决定了仿真的 “精细度”,分为两种类型: - 固定步长(Fixed Step Size):求解器始终以预设的固定间隔(如 0.1 秒)更新系统,步长值保持不变。离散系统一般使用固定步长。
- 可变步长(Variable Step
Size):求解器根据系统动态特性自动调整步长(如系统快速变化时用小步长,平缓时用大步长),步长值随仿真过程动态变化。
二、步长对仿真精度和效率的影响
- 步长越小:仿真结果越精细(接近真实系统),但总步数增加,计算量增大,实际执行时间(电脑计算该仿真的物理时间)变长。
- 步长越大:效率越高(计算快),但可能丢失系统高频动态(如快速振荡),甚至因步长过大导致数值不稳定(如刚性系统)。
三、子系统与仿真步长的关系
- 执行优先级不同
步长:所有模块(包括使能子系统、触发子系统、周期性子系统)的状态更新都依赖于步长。即使使能子系统不执行,其他模块仍会在每个步长计算。 - 子系统:仅在使能信号有效时执行内部计算,否则跳过(但外部信号仍会按步长更新)。步长决定周期性子系统多少个步长触发,子系统之后在触发后才会执行内部的逻辑,按照顺序计算一遍之后输出,否则保持上一输出值。
- 例如,当步长(0.5ms)时,使能周期(10ms)时,二十个步长才能使能一次子系统,如果子系统内部都是离散的模块,那么只有在子系统使能后才计算逻辑。
四、子系统内部的采样时间
- 子系统的执行模式取决于其采样时间设置;
- 继承模式(Inherited) 子系统继承上级模块的采样时间,若未明确指定,则默认与仿真步长一致(可能是固定步长或可变步长)。
- 固定采样时间(如 0.1 秒) 子系统按指定周期执行,此时它成为周期子系统。
- 整个模型(包括 Function-Call Subsystem 的输入信号)仍按全局步长更新状态,但子系统仅在被调用时执行一次内部计算。
- 假如调用周期(10ms)
每 10ms 触发一次调用时,子系统内部的所有模块会按顺序执行一次,并输出结果。两次调用之间,子系统内部状态保持不变(除非包含连续状态,如积分器)。
子系统内部模块的采样时间需根据需求单独设置:
连续模块(如积分器):默认按全局步长更新状态。
离散模块:需显式设置采样时间(如 0.01 秒),且应与调用周期兼容(通常为整数倍关系)。
如10ms周期执行的子系统,离散模块的采样时间都是设置的继承,那这些模块的采样时间就是10ms,在离散系统中这个更新周期就是10ms,关系如下
在离散系统中:
采样时间=步长=更新周期=△t
在离散PID控制中△t就是时间差。