人在仿真软件万博1manbetx

万博1manbetxSimulink &基于模型的设计

改进模拟的输出

今天我很高兴分享一篇来自普通客座博主的文章,家伙卷轴.享受吧!

Guy Rouleau -伺服控制器

我经常使用Simulin万博1manbetxk对简单系统的动力学进行建模。在大多数情况下,Simulink的默认万博1manbetx设置在准确性和模拟速度之间提供了一个很好的权衡。这些设置通常能让我观察到我感兴趣的信号。

我最近遇到了这样的情况,我需要改变默认的Simulink设置来观察我所期望的信号。万博1manbetx

让我们从一个非常简单的例子开始:模拟振幅为1的100Hz正弦波10秒

最简单的Simulink模万博1manbetx型,只是一个正弦波

使用默认的Simulink设置,在万博1manbetxscope上观察到的正弦波如下:

Scope只显示取样的数据,在本例中,全部为零。

在尖叫“Simulink坏了!”万博1manbetx,让我们看一下在MATLAB命令提示符中显示的警告。

命令窗口中的警告。

第一个警告提到所选解算器“ode45”被变步长离散解算器所取代。第二个警告说,Simulink将使用默认的步长0.2秒。万博1manbetx

在Simulink中,这两种警告的组合结果是在时间[0 0.2 0.4…9.8 10]处评估正弦波万博1manbetx,其值始终为零。要正确地观察正弦波,一个非常有用的选择是细化输出:

配置参数细化因子

通过设置一个合适的细化因子值,可以观察到预期的正弦波。这是优化系数为250的结果:

正弦波的细化系数为250

现在你可能会想,“有趣,但我从来没有只用正弦波创建模型。”我同意,所以让我们看一个更现实的模拟和模型一个由离散控制器控制的伺服电机。我们的S万博1manbetximulink模型如下:

伺服电机的例子

使用默认设置,Scope块显示位置、速度和加速度如下:

伺服范围,无细化因素

细心的眼睛可能会注意到,在0.2秒之后,加速度信号似乎在14附近保持不变,而速度信号也在1附近保持不变。由于输入斜坡的斜率为1,我们可以得出结论,Simulink可以准确地计算速度值,但为什么加速度不是我们所期望的零呢?万博1manbetx

也许我们应该改进输出。将细化因子设置为4可以及时提供更好的分辨率,并显示系统的实际行为。

伺服范围细化因子为4

在这种情况下,它显示伺服电机加速度信号振荡时,提交了来自计算机的命令的100Hz离散步骤。

关于优化因素我们还应该知道什么?

  • 为了获得更平滑的输出和更好的时间分辨率,改变细化因子比减少步长要快得多。
  • 当细化因子改变时,求解器通过计算这些点上的连续扩展公式来生成额外的点。
  • 细化因子适用于可变步长求解器,在使用ode45时最有用。
  • 通常值为4会产生更平滑的结果。

现在轮到你了

你用过精炼因子吗?留下一个这里的评论并分享你的经验。

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。