使用 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.在配置参数对话框中的硬件实现下,将 Hardware board 字段设置为 TI Delfino F28379D LaunchPad
。
使用 PIL 验证代码
1.在配置参数对话框中,在硬件实现 > Hardware board settings > Target hardware resources > PIL 下选择以下配置设置:
a.Communication Interface - 选择 serial
。
b.SCI module - 选择 SCI_A
。
c.Serial port in MATLAB preferences - 该模型会自动检测硬件所连接的通信端口。此参数会在当前活动的 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 代码验证的更多详细信息,请参阅:
Code Verification and Validation with PIL (C2000 Microcontroller Blockset)
Create Execution-Time Profile for Generated Code (Embedded Coder)
SIL/PIL Manager Verification Workflow (Embedded Coder)