技术文章和通讯

与仿真软件实时和多核并发执行目标硬件金宝app

阿布·巴特,MathWorks


运行一个高保真植物模型实时半实物仿真(边境)有助于减少需要硬件原型,这反过来,减少开发时间和成本。模型的保真度越高,然而,CPU的风险就越大泛滥重载目标计算机的CPU。

你可以使用c来降低这种风险oncurrent执行。在并发执行模型是分区,每个部分是在多核机器上并行执行。平衡计算负载的多个目标计算机的核心,并发执行改善实时系统的性能,因为它增加的代码能够运行在指定的样品时间。

使用电动汽车的模型作为一个例子,本文描述了一个工作流使用仿真软件实时并发执行™和Speedgoat双核目标计算机。金宝app

我们将开始通过运行模型在一个核心来获得一个基线测量的实时性能。然后我们将配置模型,利用多核并发执行和运行。单核、多核的对比仿真结果会告诉我们是否有任何CPU泛滥的风险。

高保真设备模型

在这个示例中,我们将使用电动汽车模型建立与仿真软件金宝app®,SimDriveline™, SimElectronics®,Simscape™(图1)。

Concurrent_Execution_Figure1_w.jpg
图1所示。基线电动汽车模型。

该模型包括以下部分:

  • 测试输入驱动周期(对于这个测试,US06驱动周期)
  • 操作员和电源管理子系统
  • 电池,电力驱动,和车辆模型

我们的目标是能够运行这个高保真植物模型仿真模拟器,这样我们才能真正的ECU连接到模拟器和测试其性能。

运行一个基线模拟

我们首先在单核运行电动汽车模型实时机器获得的总执行时间(所需的计算时间执行实时模型)。我们将使用执行时间作为比较的基线单核和多核执行的结果。

配置模型仿真软件实时我们执行以下操作:金宝app

  1. 选择步骤次解算器和示例这种情况下,离散解算器和Ts = 0.001。
  2. 设置系统目标文件的配置参数>代码生成选项“slrt.tlc。”
  3. 在配置参数>代码生成验证> >代码分析选项,使“测量任务执行时间”并选择保存选项“所有测量和分析数据。

这之后我们建立和下载的模型实时机器和10秒钟运行它。然后,我们使用以下命令生成代码执行分析报告:

% Matlab代码:profileInfo。modelname =“EVdemo_4_RT”;%你的型号名称profData = profile_xpc (profileInfo);

分析报告显示模型的总结执行时间(图2)。

Concurrent_Execution_Figure2_w.jpg
图2。代码执行报告为基准模型和执行概要文件。

对于基线模型,所有的块都在代码生成分组为一个单一的任务。因此,分析报告显示只有两个任务:定时器中断和基准利率。

右手边的报告显示,模型的平均执行时间的任务是0.948毫秒,而所需的时间服务的定时器中断触发模型执行~ 0.003 ms。

执行概要显示正在执行的任务顺序(图3)。

Concurrent_Execution_Figure3_w.jpg
图3。执行概要文件为基准模型。

总执行时间之和定时器中断服务所需的时间和所需的时间执行模型在这个例子中,0.948 + 0.003 = ~ 0.951毫秒。这意味着我们已经使用超过95%的核心能力。任何造成的执行时间的变化模型动力学将导致CPU泛滥和停止仿真。为了防止这种情况的发生,我们将使用并发执行。

分区模型的并发执行

如果模型有多个利率,你可以利用目标的多核硬件通过启用“允许任务并发执行目标”选项的配置参数没有重组模型。取决于有多少计算工作做在每个率,这可能会或可能不会导致执行时间的好处。因为这一步需要最小的配置,这是一个简单的实验尝试。在我们的示例中,整个模型运行在单一税率,所以我们必须明确分区模型,以获得多个核心的利益。

有很多方法可以分区模型。在高级别上,可以将模型划分基于下列:

  • 率——分区基于模型内的多个执行利率(如慢速度,速度越快)
  • 物理分区基于子系统的物理特性(如发动机模型、传输模型,和电气系统)
  • 功能- I / O通道分离和植物模型组件

由于测试模型是单频,我们没有使用任何I / O通道,基于物理特征的分区模型,如下:

  • 机械部件的车辆模型
  • 电器元件——电池模型和直流/直流转换器
  • 控制——算子模型

在明确分区模型中,每个顶级块必须使用仿真软件端口和子系统的模型参考块库(图4)。使用模型引用允许我们单独的任务在模型级别。金宝app

Concurrent_Execution_Figure4_w.jpg
图4。分区模型的并发执行。

配置模型的并发执行

配置模型,并发执行,我们做以下:

  1. 在解算器设置在配置参数对话框中,使“允许任务并发执行目标”并选择“配置任务”(图5)。
Concurrent_Execution_Figure5_w.jpg
图5。配置参数分区模型。
  1. 创建三个独立的任务,这样我们可以指定每个引用模型通过点击单个任务添加任务按钮面板的左上角(图6)。
Concurrent_Execution_Figure6_w.jpg
图6。配置模型的所有任务。
  1. 分配各自的模型通过使用引用任务和映射选项卡(图7)。
Concurrent_Execution_Figure7_w
图7。任务映射。

模型现在已经配置为使用多核。模型更新时,分配的任务显示为彩色图标的左边。这意味着我们可以看到任务分配通过查看顶级模型。

注意分配的任务以这种方式改变的行为仿真模型通过添加单位延误任务之间的界限。并发执行让你看到这些变化通过注释的任务转换线。它还允许您模拟改变行为。在模型划分是一个好主意来模拟系统频繁,因为单位延迟会导致植物的功能模型的变化。

我们使用“构建和下载”按钮下载模型Speedgoat实时目标计算机。

并发执行的结果

执行模型10秒钟后,我们生成一个新的分析报告(图8)。

Concurrent_Execution_Figure8_w.jpg
图8。代码执行报告和执行概要文件并发模型。

报告证实,该模型被分成三个任务执行基线模型的而不是单一的任务,这任务并行执行。还有一个条目的额外计时器中断任务。

我们看到的平均执行时间Battery_DCDC任务是最高的。这意味着,从计算的角度来看,这个子系统是占用了大部分的执行时间:0.789毫秒的0.948毫秒的基准模型。

自模型并行任务正在计划,执行所需的总时间模型仅为0.789 + 0.002 = 0.951 ~ 0.791 - 16.82%低于原来的女士。

应该注意的是,利用两个核心不自动性能提高50%。实际的性能改进取决于模型的类型和任务划分的方式。此外,多核之间的数据传输需要时间,所以有一个处罚与创建额外的任务。更多的任务让我们分裂模型跨多个核心,这是好的,但利用多核也增加人性讲堂通信所需的开销。进行进一步的改进,我们可以使用高性能四核从Speedgoat目标计算机而不是一个双核机。

总之,并发执行允许您执行高保真植物模型实时利用目标的多核计算机。我们看到在总执行时间显著减少,这给了我们足够的保证实时执行不会停止,因为CPU超支。减少模型执行时间在边境测试的情况下是有益的,因为它意味着我们可以测试控制器对更高的保真度植物模型,这是一个表示实际的物理系统。

2015 - 92925 v00出版

查看相关文章的能力