技术文章和通讯

使用Simscape对物理系统进行实时仿真

作者:史蒂夫·米勒,MathWorks和杰夫·温德兰特,MathWorks


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

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

图1所示。气动作动系统的Simscape模型配置为实时仿真。

从桌面移动到实时模拟

为实时仿真配置Simscape模型涉及五个步骤:

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

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

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

为了确保使用固定步长解算器获得的结果是准确的,我们将其与通过使用可变步长解算器模拟系统并收紧误差公差直到模拟结果停止变化而获得的参考结果进行比较(图2)。建议用于Simscape模型的可变步长解算器为ode15s和ode23t。

图2。由变步长模拟得到的参考结果图。

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

可变步长解算器改变步长,使其保持在误差公差范围内,并对过零事件作出反应。如果解算器突然将步长减小到一个较小的值,如1e-15s,则表示解算器正试图准确识别过零事件,如反向流动或开关闭合。固定步长解算器可能难以在足够大的步长下捕获这些事件,以允许实时模拟。

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

semilogy(兜售(1:end-1), diff(宣传),- *);title (' Step Size vs. Simulation Time ', ' F ontSize ',14, ' FontWeight ', ' bold ');包含(“仿真时间(s)”,“字形大小”,12);ylabel(“步长(s)”,“字形大小”,12);

从图中可以看出,我们应该调整摩擦模型(见图1,摩擦负荷),以使系统模型具有实时性(图3)。

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

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

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

图4。用变步长求解器、隐式固定步长求解器和显式固定步长求解器对模型进行仿真时的仿真结果进行对比图。显式求解器需要比隐式求解器更小的时间步长,以达到可比的精度水平。

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

图5。超支是如何发生的。顶部:有时需要更多的迭代来获得一个准确的解决方案。底部:由于不能在时间步长内完成迭代,模拟溢出发生,对于固定步长模拟,时间步长保持不变。

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

图6。Simscape中的Solver Configuration块具有限制每个时间步骤的迭代次数的设置。

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

图7. BE =反向欧拉,Trap =梯形规则可以在Simscape模型上使用的所有固定步长求解器的标准化成本图。结果是通过模拟一个包含单个Simscape物理网络的非线性模型得出的,每个求解器的步长相同,求解器迭代次数设置相似。

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

图8。显示在单个模型上使用多个求解器的图表。使用本地求解器可以在模型的刚性部分配置隐式求解器,在模型的其余部分配置显式求解器,在保持精度的同时最小化执行时间。

4.平衡精度和仿真速度

现在,我们可以使用将在实际处理器上运行的C代码来运行模拟。在每个时间步骤中,实时系统读取输入,计算下一个时间步骤的仿真结果,并写入输出。如果此任务花费的时间小于指定的时间步长,则处理器在该步的剩余时间内保持空闲。

我们面临的挑战是找到能够提供准确结果的设置,同时允许实时模拟(图9)。在每种情况下,都需要权衡准确性和速度。选择计算密集型求解器、增加非线性迭代次数或减小步长可以提高精度并减少空闲时间,从而增加了模拟无法实时运行的风险。另一方面,在相反方向调整这些设置会增加空闲时间,但会降低精度。

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

通过使用Simscape向后Euler局部解算器并将迭代次数限制为两次,我们以可接受的模拟速度获得了Simscape模型的精确模拟结果。

5.在实时平台上对模型进行仿真

我们的模型在700mhz处理器上实时运行,仅使用62%的可用步长来执行必要的计算。实时仿真得到的结果与桌面仿真中使用相同求解器设置得到的结果相同。这些结果也非常接近使用可变步长求解器获得的参考结果(图10)。

图10。将变步长求解器的参考结果与配置后的仿真结果进行对比,进行实时仿真。

扩展此方法

本文中描述的方法并不局限于一种模型类型。我们将这种方法应用到30多个模型中,这些模型跨越了一系列应用程序和物理领域。这些模型包含液压、电气、机械、气动和热元件,包括应用程序,如液压机械伺服阀、无刷直流电机、具有水锤效应的液压管道,以及具有粘滑摩擦的气动执行系统。所有型号都能在英特尔电脑上实时运行®运行xPC Target™的Core 2 Duo E6700 (2.66 GHz)。模拟执行中每一步花费的最大百分比小于18%,为处理I/O和其他任务留下了很大的安全裕度。模拟执行的平均百分比为3.9%,最小百分比为6e-4%。

2011年出版-91881v00