使用 PIL 进行代码验证和确认
本示例向您展示如何使用 Texas Instruments™ C2000™ 处理器在 C2000™ Microcontroller Blockset 中使用 PIL 进行代码验证和确认。
简介
在本示例中,您将学习如何配置 Simulink® 模型以运行处理器在环 (PIL) 仿真。在 PIL 仿真中,生成的代码在 Texas Instruments C2000 处理器上运行。将 PIL 仿真结果传输到 Simulink®,以验证仿真与代码生成结果的数值等效性。PIL 验证过程是开发周期中的关键部分,旨在确保部署代码的行为与设计相符。
本示例介绍如何使用以下方法配置 Simulink® 模型以进行代码生成和验证:
PIL 模块
模型模块 PIL
顶层模型 PIL
注意:如果您拥有定点许可证,请将配置参数> 数学和数据类型> 非规范数的仿真行为配置为 Flush to Zero (FTZ) 而不是 Gradual Underflow,这与实际硬件行为相匹配。
所需硬件
运行此示例需要以下硬件:
基于 Texas Instruments C2000 处理器的开发板,具备 USB 串口通信功能。
Texas Instruments控制卡提供通过 USB 接口进行串行通信的功能。这样就可以从目标计算机向主机进行串行通信。在这个示例中,我们将使用此串行连接从 Simulink® 向目标交换数据。
有些主板不提供 FTDI 芯片,而是使用扩展坞上的 FTDI,并通过 USB 串口线在主机和目标硬件之间建立串口连接。您还可以使用计算机的 COM1 端口与电路板建立 RS-232 串行连接。有关在目标计算机和主机之间建立串行连接的详细信息,请参阅 与目标硬件建立串行通信。
任务 1 - 为 PIL 仿真选择串行通信接口
C2000™ Microcontroller Blockset 支持通过串行接口进行 PIL 通信。
建立串行连接后,找到与目标硬件关联的 COM 端口。
有关如何配置虚拟 COM 端口的更多信息,请参阅此页面。请注意 Windows 设备管理器“端口”下“(COM & LPT)”显示的 USB 串行端口的 COM 端口号。
1.将目标硬件连接到主机
2.配置串口运行 PIL。有关更多信息,请参阅外部模式和 PIL 的串行配置
任务 2 - 使用 PIL 模块验证子系统的生成代码
本示例展示了如何使用 PIL 模块进行子系统代码验证。采用这种方法:
您可以验证为子系统生成的代码。
您必须按照模型中的注释指示,在模型中执行 PIL 模块;请务必避免在此状态下保存模型,否则您将丢失原始子系统。
1.打开 c2000_pil_block 模型。该模型配置用于 TI Piccolo F2806x 目标。您可以通过在“配置参数 > 硬件实现”窗格中更改目标硬件,将模型配置为在其他 TI C2000 处理器或 TI C2000 Concerto C28x 内核上运行。这里的目标是利用您将在 Texas Instruments C2000 处理器上运行的控制器子系统创建一个 PIL 模块。
注意:如果您选择使用除默认配置模型之外的其他 TI C2000 处理器,请确保将每个顶层模型允许的实例总数设置为多个,位于配置参数 > 模型引用 > 引用此模型的选项下。
2.按照上述任务 1 中的步骤选择 PIL 通信接口。
3.按照 用 SIL 和 PIL 仿真测试生成的代码 (Embedded Coder) 中的说明,为 Controller 子系统创建一个 PIL 模块。
4.根据模型中的注释,将创建的 PIL 模块放置在模型中。
5.按照 用 SIL 和 PIL 仿真测试生成的代码 (Embedded Coder) 中的说明运行 PIL 仿真。
6.您可以通过双击手动切换模块在原始子系统和 PIL 模块子系统之间切换。点击数值差异模块,即可查看仿真的控制器子系统与在目标处理器上运行的 PIL 模块之间的差异。

任务 3 - 使用 PIL 验证引用的模型代码
本示例展示了如何通过运行 PIL 仿真来验证所引用模型的生成代码。采用这种方法:
您可以验证为引用模型生成的代码
您可以轻松地在普通仿真模式和 PIL 仿真模式之间切换 Model 模块。
1.打开 c2000_model_pil_block 模型。此模型配置用于 TI Piccolo F2806x 目标。要配置模型以在其他 TI C2000 处理器上运行,您可以在“配置参数 > 硬件实现”窗格中更改目标硬件。该模型包含两个 Model 模块,它们都指向同一个引用模型。您将配置其中一个 Model 模块以在 PIL 仿真模式下运行,另一个模块以正常模式运行。
注意:如果您选择使用除默认配置模型之外的其他 TI C2000 处理器,请确保在配置参数 > 模型引用 > 引用此模型的选项下,将每个顶层模型允许的实例总数设置为多个。
2.按照上述任务 1 中的步骤选择 PIL 串行通信接口。
3.按照 用 SIL 和 PIL 仿真测试生成的代码 (Embedded Coder) 中的说明,在 PIL 仿真中配置并运行 CounterA Model 模块。
4.当模型开始运行时,Scope1 显示在 TI Piccolo F2806x 处理器上运行的 PIL 仿真输出,而 Scope2 则显示正常模式仿真输出。

任务 4 - 使用 PIL 验证顶层模型代码
本示例展示了如何通过运行 PIL 仿真来验证模型的生成代码。采用这种方法:
您可以验证为顶层模型生成的代码
您可以轻松地在正常模式和 PIL 仿真模式之间切换整个模型。
1.打开 c2000_top_model_pil 模型。该模型配置用于 TI Piccolo F2806x 目标。
注意:如果您选择使用除默认配置模型之外的其他 TI C2000 处理器,请确保将每个顶层模型允许的实例总数设置为多个,位于配置参数 > 模型引用 > 引用此模型的选项下。
2.按照上述任务 1 中的步骤选择 PIL 串行通信接口。
3.按照 用 SIL 和 PIL 仿真测试生成的代码 (Embedded Coder) 中的说明运行顶层模型 PIL 仿真。
4.当 PIL 仿真完成后,会在基础工作区中创建一个 logsOut 变量。logsOut 数据包含 PIL 仿真结果。您可以使用以下命令访问信号 count_a 和 count_b 的日志数据:
count_a = get(logsOut,'count_a');
count_a.Values.Data
count_b = get(logsOut,'count_b');
count_b.Values.Data

摘要
本示例介绍了使用 PIL 的代码验证工作流。