技术文章及通讯

基于Simscape的物理系统实时仿真

作者:Steve Miller, MathWorks和Jeff Wendlandt, MathWorks


用虚拟系统的实时模拟来取代车辆、飞机或机器人等物理系统,可以极大地降低测试控制软件和硬件的成本。在实时仿真中,仿真虚拟世界中的输入和输出与现实世界同步读取或更新。当模拟时间达到5秒、50秒或500秒时,在现实世界中已经经过了完全相同的时间。测试可以一天24小时,一周7天,在可能损坏设备或伤害人员的条件下进行,并且可以在物理原型可用之前就开始。

物理系统的实时仿真需要找到模型复杂性、求解器类型、求解器设置和仿真硬件的组合,以允许实时执行,并提供与桌面仿真获得的结果足够接近的结果。改变这些项目通常会加快模拟速度,但会降低精度,反之亦然。Simscape™提供了一些功能,可以更容易地配置模型以进行实时仿真。本文展示了如何配置用于实时仿真的气动驱动系统的Simscape模型(图1)。所描述的步骤适用于所使用的实时硬件。

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

从桌面移动到实时模拟

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

  1. 用变步长求解器获得参考结果。
  2. 在模拟过程中检查步长。
  3. 选择一个固定步骤的求解器,并配置一个固定成本的模拟。
  4. 在精度和模拟速度之间找到正确的平衡。
  5. 在实时平台上对模型进行仿真。

1.用变步长求解器获取参考结果

可变步长求解器缩小步长,以准确地捕获系统中的事件和动态。由于这减少了实时目标计算该时间步长的时间,因此变步长求解器不能用于实时模拟。相反,必须使用隐式或显式固定步求解器。

为了确保用固定步长求解器得到的结果是准确的,我们将其与用变步长求解器模拟系统得到的参考结果进行比较,并缩小误差,直到模拟结果停止变化(图2)。Simscape模型推荐的变步长求解器是ode15s和ode23t。

rts_fig2_w.jpg
图2。从变步长模拟得到的参考结果图。

2.在模拟过程中检查步长

可变步长求解器改变步长以保持在误差容忍范围内,并对零交叉事件作出反应。如果求解器突然将步长减小到一个小值,例如1e-15s,这表明求解器正在试图准确地识别一个零交叉事件,例如流量逆转或开关关闭。固定步长求解器可能难以在足够大的步长下捕获这些事件,从而允许实时模拟。

我们使用下面的MATLAB®命令用来生成显示模拟过程中时间步长变化的图形:

semilogy(兜售(1:end-1), diff(宣传),- *);title('步长与模拟时间',' F ontSize ',14, ' FontWeight ', ' bold ');xlabel('模拟时间(s) ', ' FontSize ',12);ylabel (' Step Size(s) ', ' FontSize ',12);

该图表明,我们应该调整摩擦模型(参见图1,摩擦负载),以使系统模型具有实时性(图3)。

rts_fig3_w.jpg
图3。上图:模拟过程中的步长图。底部:电机速度图。过零事件与电机接近或离开0rpm的速度相吻合,这表明可能需要调整摩擦模型以使系统模型具有实时性。

3.选择固定步骤求解器和配置固定成本模拟

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

rts_fig4_w.jpg
图4。用变步长求解器、隐式固定步长求解器和显式固定步长求解器对模型进行仿真时的仿真结果进行比较。显式求解器需要比隐式求解器更小的时间步长才能达到相当的精度水平。

对于实时仿真,必须防止在执行时间比采样时间长时发生的溢出(图5)。为了做到这一点,我们运行一个固定成本模拟,限制每个时间步长的迭代次数。

rts_fig5_w.jpg
图5。超支是如何发生的。上图:有时需要更多的迭代才能获得精确的解。下:发生模拟溢出是因为迭代不能在时间步长内完成,对于固定步长模拟,时间步长保持不变。

如图5所示,对于显式和隐式求解器,每个Simscape物理网络通常都需要迭代。Simscape中的迭代受限于设置复选框“使用固定成本运行时一致性迭代”,并在Solver Configuration块中输入非线性迭代的数量(图6)。为了在精度和成本之间取得最佳平衡,我们建议最初将非线性迭代的数量设置为两个或三个。

rts_fig6_w.jpg
图6。Simscape中的Solver Configuration块,用于限制每个时间步骤的迭代次数。

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

rts_fig7_w.jpg
BE =后向欧拉,陷阱=梯形规则可以在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多个模型。这些模型包含液压,电气,机械,气动和热元素,并包括应用,如液压机械伺服阀,无刷直流电动机,具有水锤效应的液压管道,以及具有粘滑摩擦的气动执行系统。所有模型都能在英特尔上实时运行®Core 2 Duo E6700 (2.66 GHz),运行xPC Target™。在模拟执行中花费的每个步骤的最大百分比小于18%,为处理I/O和其他任务留下了很大的安全裕度。用于模拟执行的平均百分比为3.9%,最小为6e-4%。

发布于2011 - 91881v00