Main Content

使用 PIL 测试进行代码验证和探查

此示例说明如何在 Texas Instruments® LAUNCHXL-F28379 硬件板上进行 PIL 探查。在处理器在环 (PIL) 仿真中,控制算法在目标硬件中执行,但被控对象模型在主机上运行。被控对象模型对控制器的输入和输出信号进行仿真,并使用串行通信接口与控制器通信。借助此功能,您可以使用 PIL 仿真来确定目标硬件上的执行时间,然后可以将其与主机上仿真模型的执行时间相比较。

从 PIL 仿真中获得的算法的执行时间或性能度量有助于检测目标硬件上的算法超时。PIL 探查报告显示算法在目标硬件上的平均和最大执行时间。

此示例使用 mcb_pmsm_foc_sim.slx 模型来展示 PIL 仿真中的代码验证。此示例说明对模型中 Current Control 子系统的 PIL 探查。此子系统包括磁场定向控制 (FOC)、电流换算(标幺转换)、转速测量和转子位置换算(根据编码器位置计数计算角度)算法。PIL 探查报告显示目标硬件中控制算法的平均和最大执行时间。

此示例包含以下任务:

  • 通过比较仿真模式和目标硬件工作模式下的算法,使用 PIL 测试来验证代码执行。

  • 通过测量目标硬件中的算法执行时间来执行 PIL 探查,并生成 PIL 探查报告。

必需的 MathWorks 产品

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

支持的硬件

  • LAUNCHXL-F28379D 控制器硬件板

准备 PIL 模型

1.打开模型 mcb_pmsm_foc_sim

此模型仿真 PMSM 电机和用于闭环转速控制的 FOC 算法。

2.在 Simulink 工具条的硬件选项卡上,点击硬件设置

3.配置参数对话框中的硬件实现下,将硬件板字段设置为 TI Delfino F28379D LaunchPad

使用 PIL 验证代码

1.配置参数对话框中,在硬件实现 > 硬件板设置 > 目标硬件资源 > PIL 下选择以下配置设置:

a.通信接口 - 选择 serial

b.SCI 模块 - 选择 SCI_A

c.MATLAB 预设项中的串行端口 - 该模型会自动检测硬件所连接的通信端口。此参数会在当前活动的 MATLAB® 会话内保持不变。点击 刷新 按钮再次检测通信端口。

2.使用以下命令打开 mcb_PIL_config_TI.m 脚本文件以设置配置参数:

openExample('mcb/CodeVerificationAndProfilingUsingPILTestingExample','supportingFile','mcb_PIL_config_TI.m');

3.在脚本中更新模型名称和停止时间。

4.运行脚本以更新仿真模型的配置参数和 PIL 预设项。

5.右键点击 mcb_pmsm_foc_sim.slx 示例模型中的 Current Control 子系统。在 C/C++ 代码 菜单下,选择 部署此子系统到硬件

系统显示 编译子系统代码 对话框。将所有参数的存储类设置为 Inlined

6.点击构建创建一个名为 untitiled 的模型,其中包括一个名为 Current Control 的 PIL 子系统。

7.将 Current Control 子系统重命名为 Current Control (PIL)。

8.复制 Current Control (PIL) 子系统并替换 mcb_pmsm_foc_sim.slx 示例模型中的 Current Control 子系统。

在 PIL 模式中,系统将 Current Control (PIL) 子系统部署到目标,并在目标硬件中执行该子系统。

9.为了比较主机仿真和 PIL 仿真中的算法执行,将 Current Control 子系统以并联方式连接到 Current Control (PIL) 子系统。此外,在子系统输出中启用信号记录。

10.在 Simulink 工具条上,从 App 选项卡中选择 SIL/PIL 管理器

11.SIL/PIL 工具条上,选择 SIL/PIL Sim Only

12.在测系统字段中选择 Model blocks in SIL/PIL mode

13.点击 SIL/PIL 工具条上的运行 SIL/PIL,以编译 Current Control (PIL) 子系统并将其部署到目标。

在系统部署该子系统后,Current Control (PIL) 子系统在目标硬件处理器上执行,而被控对象模型在主机上运行。

分析 PIL 探查结果

当 PIL 仿真结束时,系统会生成探查报告。

注意:PIL 仿真比基于主机的仿真花费的时间更多。这是因为主机和在目标硬件上运行的子系统之间存在串行通信(与 Current Control (PIL) 子系统的输入和输出相关)。

此探查报告适用于定点数据类型,它显示在目标硬件上运行的 Current Control (PIL) 子系统的最大和平均执行时间。

您可以使用 仿真 选项卡上的 数据检查器 按钮来比较基于主机的仿真和 PIL 仿真(在目标上执行)期间记录的信号。这有助于验证基于主机的仿真和 PIL 仿真的准确度。

下图比较来自 Current Control (PIL) 子系统和 Current Control 子系统的转速反馈信号。

如果执行时间超出预算时间的 60%,您可以使用以下方法之一优化算法:

  • 从 RAM 执行。

  • 将一些功能的负载转移到 CLA 或其他 CPU。

  • 调整算法以隔一个周期运行一次。

  • 将转速计算等不太重要的功能以较慢的速率执行。

有关 SIL/PIL 代码验证的更多详细信息,请参阅: