技术文章和通讯

使用Simscape实时仿真的物理系统

史蒂夫·米勒,MathWorks和杰夫•Wendlandt MathWorks


替换一个物理系统像一辆汽车,飞机,或机器人实时仿真的虚拟系统大大降低了测试的成本控制软件和硬件。在实时仿真,模拟的输入和输出在虚拟世界与现实世界同步读取或更新。当仿真时间达到5、50或500秒,完全相同的时间已经过去了在现实世界中。测试可以一天24小时,一周7天,损坏设备或伤害人员的条件下,它可以在物理原型是可用的。

物理系统的实时仿真需要找到一个组合模型的复杂性,解算器类型,解算器设置和模拟硬件,允许实时执行和交付结果足够接近桌面仿真的结果。改变这些项目往往会加速仿真但降低精度,反之亦然。Simscape™提供了一些功能,使它更容易为实时仿真配置您的模型。本文展示了如何配置一个Simscape气动驱动系统实时仿真的模型(图1)。描述的步骤应用无论实时硬件使用。

rts_fig1_w.jpg
图1所示。Simscape模型的气动驱动系统实时仿真的配置。

从桌面到实时仿真

配置Simscape实时仿真模型包括五个步骤:

  1. 获得结果与变步解算器的引用。
  2. 在模拟检查步骤大小。
  3. 选择一个固定的一个固定成本仿真解算器和配置。
  4. 找到正确的平衡精度和仿真速度。
  5. 模拟模型实时平台。

1。获得结果与变步解算器的引用

变步解算器减少步长来准确地捕获事件和动力学系统中。因为这减少了实时目标的时间计算时间步的结果,一个变步解算器不能用于实时仿真。相反,必须使用隐式或显式的固定步解算器。

确保固定步解算器的结果是准确的,我们比较它们与参考结果通过模拟系统与变步解算器和收紧误差公差直到仿真结果停止改变(图2)。推荐的解决变步ode15s Simscape模型和ode23t。

rts_fig2_w.jpg
图2。从变步仿真图的参考结果。

2。在模拟检查步骤大小

变步解算器不同的步长以保持在误差公差和零交叉事件做出反应。如果解决突然降低了一个小的步长值,如1 e15汽油,这表明解决者试图准确地识别一个零交叉事件如反向流或关闭开关。一个固定步解算器可能无法捕捉这些事件在一个步长足够大以允许实时仿真。

我们使用以下MATLAB®命令来生成一个图显示在模拟时间步的变化:

semilogy(兜售(1:end-1), diff(宣传),- *);标题(“仿真步长和时间”,“F ontSize”, 14日“FontWeight”,“大胆”);包含(“仿真时间(s)”,“字形大小”,12);ylabel(“步长(s)”,“字形大小”,12);

情节表明我们应该调整摩擦模型(见图1、摩擦负载)系统模型的实时能力(图3)。

rts_fig3_w.jpg
图3。上图:块在仿真步长。底部:情节的电机速度。零交叉事件与电动机的速度接近或离开0 RPM,表明摩擦模型可能需要进行调整,以使系统模型实时能力。

3所示。选择一个固定的一个固定成本仿真解算器和配置

我们必须使用一个固定步解算器,它提供了健壮的性能和提供准确的结果在一个步长足够大以允许实时仿真。我们比较仿真结果所产生的隐式固定步解决者和一个显式的固定步解算器在不同的步骤大小相同的模型(图4)。对于我们的示例模型,隐式求解器提供了更精确的结果。

rts_fig4_w.jpg
图4。情节比较仿真结果与变步解算器模型模拟时,隐式固定步解算器,一个显式的固定步求解器进行求解。显式解算器需要一个较小的时间步长比隐式求解器达到类似水平的准确性。

实时仿真,超支时执行时间比样品长时间必须阻止(图5)。要做到这一点,我们一个固定成本模拟运行,限制每个时间步的迭代数。

rts_fig5_w.jpg
图5。如何发生溢出。上图:有时需要更多的迭代来获得一个精确的解决方案。底部:模拟泛滥是因为迭代步的时间内不能完成,这是保持不变的固定步模拟。

如图5所示,为每个Simscape迭代往往是必要的物理网络为显式和隐式动力学。Simscape有限的迭代通过设置复选框“使用固定成本运行时的一致性,迭代”并输入的非线性迭代解算器配置块(图6)。最好的精度和成本之间的平衡,我们建议最初设置两个或三个非线性迭代的数量。

rts_fig6_w.jpg
图6。解算器配置块在Simscape设置限制每个时间步的迭代数。

可用来表示的相对成本解决固定步,我们比较规范化执行时间为一个非线性模型包含一个与每个固定步Simscape物理网络解算器(图7)。在我们的示例中,两个本地解决Simscape,向后欧拉梯形法则,需要最少的计算的工作。

rts_fig7_w.jpg
= =向后欧拉,陷阱梯形规则图7。归一化的情节所有可用于固定连接器成本Simscape模型。结果通过模拟非线性模型包含一个Simscape与每个解算器在同一物理网络步长和类似设置迭代解算器的总数。

Simscape使用当地的解算器选项,我们可以使用隐式固定步解算器的僵硬的部分模型和一个显式的固定步解决剩余的模型(图8)。这将减少的数量计算每个时间步执行,从而更容易模型实时运行。

rts_fig8_w.jpg
图8。图显示多个解决单个模型的使用。解决使用本地的坚硬部分允许您配置解决隐式和显式动力学模型的其余部分模型,减少执行时间,同时保持精度。

4所示。平衡精度和仿真速度

我们现在可以使用的C代码运行仿真实际的处理器上运行。在每个时间步,实时系统读取输入,计算仿真结果为下一个时间步,和写输出。如果这个任务花费更少的时间比指定的时间步,处理器仍然闲置在剩下的步骤。

面临的挑战是找到设置提供准确的结果,同时允许实时仿真(图9)。在每种情况下,有一个权衡的精度与速度。选择计算密集型的能手,非线性的迭代的数量增加,或减少步长增加准确性和减少了空闲时间,提高的风险实时仿真将不会运行。另一方面,调整这些设置相反的方向增加大量的空闲时间,但降低精度。

rts_fig9_w.jpg
图9。涉及解算器的权衡选择,非线性迭代次数和步长。对于任何给定的模型,这些设置必须选择提供最大的准确性和鲁棒性有足够的空闲时间提供足够的安全裕度。

通过使用Simscape向后欧拉当地解决者和两个限制的迭代的数量,我们为Simscape模型获得准确的仿真结果在一个可接受的仿真速度。

5。模拟模型实时平台

我们的模型实时运行在700 MHz的处理器和使用只有62%的可用的步长进行必要的计算。实时仿真的结果都是相同的那些获得使用相同的解算器设置在桌面仿真。这些结果也非常接近参考结果使用变步解算器(图10)。

rts_fig10_w.jpg
图10。情节比较参考结果与变步求解和仿真结果后实时仿真的配置。

将这种方法扩展

在这篇文章中描述的方法并不局限于一种类型的模型。我们应用这种方法30多个模型生成一系列应用程序和物理域。这些模型包含液压、电气、机械、气动、和热元素,包括应用程序,如流体力学servovalves,无刷直流电机,液压管道水锤效应,和气动驱动系统粘滑运动摩擦。所有的模型能够实时运行英特尔®酷睿2双核E6700 (2.66 GHz)运行xPC目标™。一步在仿真执行的最大百分比小于18%,留下了一个广泛的安全裕度处理I / O和其他任务。平均花在仿真执行3.9%,最低6 e - 4%。

2011 - 91881 v00出版