主要内容

使用PIL测试的代码验证和分析

在处理器在环(PIL)仿真中,控制算法在目标硬件中执行,而工厂模型在主机上运行。工厂模型模拟控制器的输入输出信号,并通过串行通信接口与控制器进行通信。此功能允许您使用PIL模拟来确定目标硬件上的执行时间,然后您可以将其与在主机上模拟模型的执行时间进行比较。

从PIL仿真中获得的算法的执行时间或性能度量,可以帮助您检测目标硬件上的算法溢出。PIL分析报告显示了一个算法在目标硬件上的平均和最大执行时间。这个例子解释了德州仪器™LAUNCHXL-F28379D硬件板上的PIL分析。

此示例使用mcb_pmsm_foc_sim.slx模型来显示PIL仿真中的代码验证。这个例子展示了模型中电流控制子系统的PIL分析。该子系统包括场向控制(FOC)、电流缩放(单位转换)、速度测量和转子位置缩放(从编码器位置计数计算角度)算法。PIL分析报告显示了目标硬件中控制算法的平均和最大执行时间。

这个例子包含以下任务:

  • 通过对比仿真和目标硬件运行模式下的算法,通过PIL测试验证代码的执行。

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

要求MathWorks2022世界杯八强谁会赢?

  • 嵌入式编码器®

  • 德州仪器C2000™处理器的嵌入式编码器支持包

支持的硬件

  • LAUNCHXL-F28379D控制器硬件板

准备PIL模型

  1. 打开mcb_pmsm_foc_sim.slx模型。

    open_system(“mcb_pmsm_foc_sim.slx”);

    该模型模拟了永磁同步电机和FOC算法的闭环速度控制。

  2. 硬件页签,单击硬件设置

  3. 配置参数对话框,在硬件实现,设置硬件板字段TI Delfino F28379D发射台

使用PIL验证代码

  1. 在“配置参数”对话框中,选择下面的这些配置设置硬件实现>硬件板设置>目标硬件资源>公益诉讼

    1. 通信接口——选择串行

    2. SCI模块——选择SCI_A

    3. 串口在MATLAB的首选项—模型会自动检测硬件所连接的通信端口。这个参数对于当前活动的MATLAB的其余部分保持不变®会话。单击刷新按钮,重新检测通信端口。

  2. 打开mcb_PIL_config_TI.m脚本文件,设置配置参数。

    编辑(“mcb_PIL_config_TI.m”);
  3. 在脚本中更新模型名称和停止时间。

  4. 运行脚本来更新模拟模型的配置参数和PIL首选项。

  5. 控件中的Current Control子系统右键单击mcb_pmsm_foc_sim.slx模型的例子。下C / c++代码菜单中,选择将这个子系统部署到硬件

    系统显示为子系统构建代码对话框。将存储类设置为内联对于所有参数。

  6. 点击构建创建一个名为untitiled其中包括一个叫做电流控制的PIL子系统。

  7. 将电流控制子系统重命名为电流控制(PIL)。

  8. 中复制电流控制(PIL)子系统并替换电流控制子系统mcb_pmsm_foc_sim.slx模型的例子。

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

  9. 要比较在主机模拟和在PIL模拟上的算法执行情况,请将Current Control子系统与Current Control (PIL)子系统并行连接。此外,在子系统输出中启用信号记录。

  10. 在Simulink工具条上,选择银/公益诉讼经理应用程式应用程序选项卡。

  11. 银/公益诉讼将来发布,选择SIL/PIL Sim

  12. 选择在SIL/PIL模式下建模块被测系统字段。

  13. 点击运行银/公益诉讼银/公益诉讼工具条来构建当前控制(PIL)子系统并将其部署到目标。

    在系统部署子系统之后,Current Control (PIL)子系统在目标硬件处理器上执行,而工厂模型在主机上运行。

分析PIL分析结果

当PIL模拟结束时,系统生成一个分析报告。

请注意

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

这个针对定点数据类型的分析报告显示了在目标硬件上运行的Current Control (PIL)子系统的最大和平均执行时间。

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

该图比较了来自电流控制(PIL)和电流控制子系统的速度反馈信号。

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

  • 从RAM执行。

  • 将一些功能卸载到CLA或其他cpu。

  • 将算法扩展到每个交替循环中运行。

  • 将不那么关键的功能(如速度计算)移到较慢的速率。

关于SIL/PIL代码验证的更多细节,请参见:

Baidu
map