simulink中求解器设置为离散,固定步长所带来的影响

时间:2024-04-13 11:06:51

直接进入正题。大家在使用simulink仿真的时候,有时会用到离散求解器对仿真模型进行求解,如下图所示。其中需要设定的一个参数便是求解器的步长。下面通过几个例子来具体感受一下这个步长设置的效果。
simulink中求解器设置为离散,固定步长所带来的影响
首先将求解器的步长设定位0.0001,如上图所示。这时在simulink中搭建一个最简单的仿真模型,如下图所示。
simulink中求解器设置为离散,固定步长所带来的影响
在正弦波模块中,采样时间sample time这一项,表示执行该模型的步长。当其设置为-1的时候表示继承上层(在这里就是求解器的)求解步长。所以首先将其设置为-1.也就是步长是0.0001.通过下图的仿真结果,可以看出。50Hz波形的周期是0.02s,然后计算的步长设置为了0.0001,也就是在一个周期内要进行200次,这个可以通过数正弦波形中的小格子数量看出来。
simulink中求解器设置为离散,固定步长所带来的影响
现在,我们保持正弦信号的设置不变,将求解器中的步长设置为0.001.这个时候,我们根据上面的情况,先分析一波。也就是0.02除以0.001,一个周期的正弦波中将会出现20个阶梯。然后再具体看一下结果(下图),仿真的结果和我们预想的一样。
simulink中求解器设置为离散,固定步长所带来的影响
加入说求解器的步长等于或者比一个正弦波的周期还大会出现什么情况呢,下图依次将仿真步长改为0.01和0.1.可以看到两种情况下的波形都是一条为0的线,这也说明模块的执行步长一定要大于求解器的时间步长,且应该是整数倍的关系。
simulink中求解器设置为离散,固定步长所带来的影响
下面再来分析一种情况,首先把求解器的步长确定为0.0001,保持不变。然后改变正弦波模块中的采样时间,先让其为0.0001.这个情况和上面已经分析过的第一种情况是一致的,也就是波形中将会产生200个阶梯。现在如果把正弦波模块的执行步长更改为0.001,可以得到下图的结果。这个结果是怎么产生的呢,现在分析一下。首先正弦波的周期是0.02s,只有是按照正弦波模块本身执行步长才能才能出现这样的结果,也就是说模型的执行步长是要基于求解器的执行步长之上的。那假如模型的执行步长比求解器的步长还小的话会出现什么情况呢?这里将其设置为0.00001,发现就报错了,提示“模型的执行步长一定要是求解器步长的整数倍”
simulink中求解器设置为离散,固定步长所带来的影响
simulink中求解器设置为离散,固定步长所带来的影响