性能与保真度之间的权衡分析
设计物理系统模型需要在模型性能与相较于真实系统的保真度之间进行平衡。提高模型的保真度可以获得更准确的结果,但也会提高计算要求。硬件在环 (HIL) 仿真等应用对计算成本有严格的要求。对于这些应用,许多模块都提供了标注有 Suitable for HIL Simulation 字样的参数化。这些参数化通过抽象化来降低计算成本并加快速度。您还可以通过省略一些物理学参数或合并参数来提高性能。当您通过调整保真度来提高性能时,请验证更新后的模型结果与基线相比是否在可接受范围内。
低保真模型优先考虑计算效率,可以加快仿真速度,并与硬件系统实现更无缝的集成。高保真模型则使用更多的计算资源来捕获物理细节,从而获得更准确的结果。高保真模型可能不适合 HIL 仿真,因为它们需要的资源可能超出了目标硬件拥有的资源。对于 HIL 仿真,具体的计算成本要求取决于您的目标硬件。
简化模型以提高性能
您可以通过避免使用会导致不连续性或快速动态特性的元件来加快模型运行速度。硬限位或间隙、粘滑摩擦和离合器等元件都容易导致不连续性。将小质量物体连接到刚性弹簧且阻尼不足时,可能会导致出现快速系统动态特性,从而增加时间步的计算成本。
要查看可配置为注重性能或注重高保真度的模型,请打开Vehicle with Four-Wheel Drive模型。输入:
openExample('sdl/VehicleWithFourWheelDriveExample')Engine 的 Generic Engine 模块为系统提供扭矩。Torque Converter 模块充当发动机与标注为 Gearbox 的 Simple Gear 模块之间的阻尼器。Gearbox 模块将扭矩传递给两个 Differential 模块。四个轮胎模块将旋转能转换为平移能,从而驱动 Vehicle Body 模块,该模块会计算轮胎与路面之间的相互作用。

四个轮胎模块均为 Variant Subsystem 模块,每个模块都包含三个轮胎变体。每个变体都使用不同的模块来表示轮胎动态特性。双击 Left Front 子系统可查看活动变体和非活动变体。要了解详细信息,请参阅 Variant Subsystem、Variant Model、Variant Assembly Subsystem。

非活动变体在画布上显示为浅灰色。您可以双击任意变体来查看其实现。
默认实现使用 Tire (Magic Formula) 模块,该模块使用滑移角、纵向滑移和垂直负载来计算轮胎动态特性。此模块的计算保真度较高,但与其他两种实现相比,模型的仿真运行速度较慢。Simple 子系统使用 Tire (Simple) 模块,该模块表示一个简单的无滑移模型。使用此子系统可加快模型运行速度,但会使轮胎计算保真度降低。
返回模型画布的顶层。要启用全部四个轮胎的 Simple 变体,请点击示例链接第 2 项中的 Simple 超链接,或输入:
VehicleWithFourWheelDriveSetTires(bdroot,'simple')
现在,全部四个轮胎都使用 Simple 参数化。要确认 Gearbox、Front Differential 和 Rear Differential 模块已配置为注重速度,请检查摩擦模型是否为无啮合损耗 - 适用于 HIL 仿真。同时确认 Simple Gear 模块的启用间隙处于清除状态。模型的复杂度现已降低,运行速度也比默认模型更快。
要运行这个速度更快的模型来收集数据并绘制时间步信息图,请输入:
sim('VehicleWithFourWheelDrive') simlogRef = simlog_VehicleWithFourWheelDrive; tireRefNode = simlogRef.Left_Rear.Simple.Tire_Simple.A.w; tRef = tireRefNode.series.time; semilogy(tRef(1:end-1),diff(tRef),'-x') title('Solver Step Size') xlabel('Time (s)') ylabel('Step Size (s)') legend('Simple Tire',location='best')

仿真进行到一秒时出现的峰值表明,某个事件导致求解器采用了更小的时间步。
可视化性能与保真度之间的差异
现在,您已经通过模型的简单实现获得了基线结果,接下来可以分析更改模型保真度所带来的性能成本或收益。将轮胎变体切换回 Tire (Magic Formula) 模块,运行仿真,并绘制结果。
VehicleWithFourWheelDriveSetTires(bdroot,'MFormula')
sim('VehicleWithFourWheelDrive')
simlogRef = simlog_VehicleWithFourWheelDrive;
tireRefNode = simlogRef.Left_Rear.Magic_Formula.Tire_Magic_Formula.A.w;
tRef = tireRefNode.series.time;
hold on
semilogy(tRef(1:end-1),diff(tRef),'-o')
legend('Simple Tire','Magic Formula Tire',location='best')
Magic Formula 参数化具有高保真度。仿真开始时,时间步的分组更密集,这表明模型需要更长时间才能完成初始化。在仿真进行到一秒时出现第一个峰值后,求解器达到第二个峰值,且恢复速度较慢。与简单的轮胎参数化相比,该求解器需要额外的资源来计算结果。步长变小是为了在仿真中捕获更多物理行为。高保真实现在大约 1.2 秒时捕获了一个事件,而简单的轮胎实现未能捕获该事件。放大结果可获得更清晰的视图。

此外,在大约八秒时,高保真实现显示的事件发生时间比简单实现中晚。

高保真模型能够捕获更详细、更准确的结果,但仿真时间更长,求解器步长更小。您可以使用求解器探查工具来获得有关仿真的更详细见解。要了解有关求解器步长和实时模型准备的详细信息,请参阅Define Step Size and Number of Nonlinear Iterations for Simscape Real-Time Simulation。
另请参阅
Reduce Zero Crossings | Examine Model Dynamics Using Solver Profiler