主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用控制律加速器 (CLA)

本示例展示了如何使用 TI® 处理器上的控制律加速器 (CLA) 和 C2000™ Microcontroller Blockset。

简介

C2000™ Microcontroller Blockset 使您能够:

  • 使用 CLA 进行 LED 闪烁示例

  • CPU 和 CLA 之间的数据完整性

  • CLA 输出的信号监控

  • 基于 CLA 的永磁同步电机磁场定向控制 (FOC)。

前提条件

完成以下教程:

所需硬件

对于 LED 闪烁模型:

  • TI® F28069、F28035、F28004x、F28379D 或 F28377S 板。

用于 CLA 输出信号监测:

  • TI F28379D LaunchPad

针对电机控制应用模型:

  • TI® DRV8312 三相无刷电机控制套件(DRV8312-C2-KIT 或 DRV8312-69M-KIT),配备 F28035 或 F28069 Piccolo 处理器

  • 三相永磁同步电机 (PMSM) 带有霍尔传感器,连接到 DRV8312EVM 板的连接器 J10。

示例模型的可用版本:

任务 1:使用 CLA 进行 LED 闪烁示例

下图显示了一个配置为使用硬件上可用的 CLA 的示例模型。打开 c28069blink_cla 模型。

该模型为 Simulink® 模型生成代码,其中算法的一部分在设备上可用的控制律加速器 (CLA) 上运行。CLA 是一个协处理器,它支持并行处理。利用 CLA 处理时间紧迫的任务,可以释放主 CPU 以同时执行其他系统和通信功能。

GPIO 引脚 34(连接到控制卡上的 LED;LaunchPad 板上的 GPIO 引脚编号不同)在每次发生 CLA Task1 中断时切换。

方法一:使用不可重用函数代码生成技术为 CLA 子系统生成 LED 闪烁指令

在这种方法中,cla_subsystem 由软件以 0.5 秒的速率触发,并配置为不可重用函数作为 Function packaging。有关更多信息,请访问Method 1 - Nonreusable Function Code Generation for CLA Subsystem (Recommended)

以下是针对此模型完成的 CLA Subsystem 模块配置。要打开模块参数,右键点击点击 CLA 子系统,然后选择模块参数(子系统)。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

运行模型

  1. 打开以下任意一个示例模型:c28069blink_cla.slxc28004xblink_cla.slxc28377Sblink_cla.slxc28379D_cpu1_blink_cla.slxc28379D_cpu2_blink_cla.slx

  2. 打开配置参数,然后在代码生成窗格中选择所需的工具链。

  3. Ctrl+B 生成二进制可执行文件,并自动加载和运行选定目标上的可执行文件。

方法二:使用 CLA 子系统的内联代码生成来控制 LED 闪烁

在这种方法中,cla_subsystem 由软件以 0.5 秒的速率触发,并配置为内联作为 Function packaging。有关更多信息,请访问Method 2 - Inline Code Generation for CLA Subsystem

以下是针对此模型完成的 CLA Subsystem 模块配置。要打开模块参数,右键点击点击 CLA 子系统,然后选择模块参数(子系统)。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

运行模型

  1. 打开示例模型,c28035blink_cla.slx

  2. 打开配置参数,然后在代码生成窗格中选择所需的工具链。

  3. Ctrl+B 生成二进制可执行文件,并自动加载和运行选定目标上的可执行文件。

任务 2:确保 CPU 和 CLA 之间的数据完整性

数据完整性问题可能在以下情况下发生:

  • 数据传输并非原子操作。例如,数据传输,其中数据大小大于原子大小 (uint16)。

  • 任务未同步。例如,CLA 是异步触发的。

  • CPU 和 CLA 的采样时间不同。

为了确保数据完整性,必须使用双缓冲算法或通过同步 CPU 和 CLA 来保护数据。

在这个模型中,CPU 和 CLA 不同步,因为 CLA 是使用 ePWM 中断异步触发的。为了确保数据完整性,使用了双缓冲算法以及控制标志(Read_index 和 Write_index)。打开 c28069_dataintegrity_cla 模型。

在双缓冲算法中,使用两个缓冲区 mydoublebuf0 和 mydoublebuf1 进行数据交换。CPU 使用 Read_index 标志检查 CLA 正在读取的缓冲区,并将数据写入另一个缓冲区。类似地,CLA 使用 Write_index 标志检查 CPU 正在写入的缓冲区,并从另一个缓冲区读取数据。例如,当 Read_index 为 0 时,将从 CLA 中的 mydoublebuf0 读取数据。

通过使用双缓冲逻辑,即使 CPU 和 CLA 不同步,也能保证数据完整性。

运行模型

  1. 打开 c28069dataintegrity_cla.slx 模型。

  2. 硬件选项卡上,点击构建、部署和开始 > 构建独立程序或按 Ctrl+B 在 CPU 上构建和下载可执行文件。

任务 3:CLA 输出的信号监控

在这个任务中,您将:

  • 配置 c28379D_cmpss_cla_blink.slx 模型,从 DAC 和 CMPSS 模块读取数据,并在 CLA 任务中使 LED 闪烁。

  • 监控并调节模型以观察 CLA 输出。

CLA 子系统的输入 input1 使用代码映射存储在 CpuToCla1MsgRAM 中。CLA 子系统配置了 Nonreusable function 函数打包。有关更多信息,请参阅Method 1 - Nonreusable Function Code Generation for CLA Subsystem (Recommended)

配置模型

1.打开使用 CMPSS 在 CLA 中闪烁 LED 模型。该模型专为 TI Delfino F28379D LaunchPad 硬件配置。

2.要在其他 TI C2000 处理器上运行该模型,请按 Ctrl+E 打开配置参数对话框,然后导航到硬件实现 > 硬件板选择所需的硬件板。

CLA 内部的驱动模块配置

以下是针对该模型完成的驱动模块 CLA 配置。双击模块即可打开模块参数配置。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

运行模型

1.打开硬件选项卡,然后点击监控和调节

2.使用诊断查看器跟踪构建进度,并等待代码加载并在目标硬件上运行。

3.观察 Scope 模块上的日志数据和 LED 闪烁情况。

任务 4:基于 CLA 的永磁同步电机磁场定向控制 (FOC)。

生成原始空间向量(c28035pmsmfoc_cla/FOC 算法/扭矩控制算法/生成空间向量)的输入使用代码映射存储在 CpuToCla1MsgRAM 中。生成原始空间向量是通过 Nonreusable function 函数打包配置的。有关更多信息,请参阅Method 1 - Nonreusable Function Code Generation for CLA Subsystem (Recommended)

下图显示了永磁同步电机磁场定向控制 (FOC) 示例模型,该模型在 CLA 上运行 FOC 算法。打开 c28069pmsmfoc_cla.slx 模型。

该模型采用 CLA 实现永磁同步电机的磁场定向控制 (FOC)。FOC 算法通过 CLA 任务实现,并在 CLA 任务完成后使用相应的中断刷新 PWM 占空比。本示例需要 DRV8312 套件和 F28069 或 F28035 控制卡。本示例应用了 LED 闪烁示例中列出的所有注意事项。

在此模型中,通过同步 CPU 和 CLA 来保证数据完整性。CLA 是软件触发的,使用从输入继承的采样时间。Simulink 调度器确保在触发 CLA 子系统之前所有输入都已准备就绪。

在这个示例中,采用闭环磁场定向控制算法来调节三相永磁同步电机 (PMSM) 的速度和转矩。本示例使用来自 C2000™ Microcontroller Blockset 的 C28x 外设模块。本例中的算法采用异步调度。脉冲宽度调制 (PWM) 模块触发 ADC 转换。转换结束时,ADC 发出中断,触发主 FOC 算法。

使用配置参数配置中断操作 > 硬件实现 > 硬件板设置 > 目标硬件资源 > 外部中断。

使用 DRV8312EVM 进行模型校准

该模型中的“位置感应开关”允许您选择无传感器位置感应或使用霍尔传感器的位置感应。如果未安装传感器(默认),则无需校准。如果使用霍尔传感器进行位置传感,则霍尔传感器必须连接到 DRV8312EVM 板的 J10。该模型将三个霍尔信号连接成一个变量,其中 Hall_A 为该变量的最低有效位 (LSB),Hall_C 为该变量的最高有效位 (MSB)。

“速度请求开关”允许您选择速度请求的来源。默认情况下,速度将来自一个标准化的常量,该常量将速度请求设置为可接受速度范围的一半 (0.5)。对于 DRV8312EVM,您还可以选择从电位器 R66 获取速度请求。

霍尔传感器信号的解读

如果使用无传感器控制,则本节内容无关紧要。该模型为每个霍尔信号配置了一个中断。每次霍尔中断中,都有四个有意义的霍尔值。任何其他霍尔值都表明存在硬件问题。在特定中断中读取的霍尔值包含有关电机旋转方向的信息。例如,在 Hall_A 中断中,读取到的霍尔值为 2 表示电机正沿 0 方向旋转,并且刚刚发生了下降沿。如果模型检测到方向发生变化,则会使电机的方向和速度失效。为了保证速度计算的有效性,该模型要求两条连续的边方向相同。否则,模型会设置一个标志来使速度无效。

以下逻辑适用于相应的标志更新:

  1. New_direction = Hall_direction

  2. New_valid_flag = Previous_direction == Hall_direction;

  3. Global_speed_and_direction_ready_flag = New_valid_flag && Old_valid_flag;

磁场定向控制算法接收一个介于 0 到 1 之间的位置信号,该信号反映了一个电旋转周期。如果速度信号有效,该模型将根据霍尔读数进行线性外推,并准确估计位置。

基于霍尔效应的位置估计算法原理:

  1. 读取霍尔信号。

  2. 获取最新定时器的值(从触发的最后一个中断中捕获的定时器)。

  3. 利用当前速度,将上一个边缘经过的时间转换为电角度。

  4. 如果速度信息无效(方向改变后、启动时、电机停止时、速度过低时……),则算法假定位置位于霍尔读数定义的 60 个电角度的中间。因此,这些情况下的最大位置信号误差为 30 电度。

当 Hall_A 沿 0 方向上升时,将引用 Hall 解码器(位置 = 0)。Hall_position_offset 变量用于告知 FOC 算法霍尔参考波形与电机反电动势波形之间的位置差。与 QEP 示例类似,该值必须通过将霍尔信号与电机的反电动势波形进行比较来校准。在 DRV8312 示例中,Hall_position_offset 根据电转数进行归一化,并设置为 0.57,以匹配 DRV8312EVM 中包含的电机的特性。

运行模型

  1. 打开示例模型 c28069pmsmfoc_cla.slxc28035pmsmfoc_cla.slx

  2. 打开配置参数,然后在代码生成窗格中选择所需的工具链。

  3. Ctrl+B 生成二进制可执行文件,并自动加载和运行选定目标上的可执行文件。

任务 5:CLA 自定义代码包含

在这个任务中,您将:

  • 在模型中包含自定义 CLA 文件

  • 自定义 CLA 文件计算分数的指数值,并将输出发送到 Simulink。

  • 监控并调节以观察 CLA 输出。打开 c28379D_custom_code_cla.slx

在这个模型中,我们正在从 CLA 任务访问自定义 cla 文件中定义的函数。用户可以配置自己的自定义 CLA 代码,并将其包含在构建过程中,如本示例所示。

CLA 子系统的输入 input1input2 使用代码映射存储在 CpuToCla1MsgRAM 中。CLA 子系统配置了 Nonreusable function 函数打包。有关更多信息,请参阅Method 1 - Nonreusable Function Code Generation for CLA Subsystem (Recommended)

配置模型

1.打开使用 CLA 自定义代码包含模型。该模型专为 TI Delfino F28379D LaunchPad 硬件配置。

2.要在其他 TI C2000 处理器上运行该模型,请按 Ctrl+E 打开配置参数对话框,然后导航到硬件实现 > 硬件板选择所需的硬件板。

3.在“配置参数”对话框中,导航至代码生成 > 自定义代码 > 代码信息 > 源文件,然后选择 customcode.cla 文件。

Function Caller 模块配置在 CLA 内部

以下是针对该模型完成的 Function Caller 模块 CLA 配置。双击模块即可打开模块参数配置。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

calculate expvalue(u,v) 是一个用户定义的函数,定义在自定义 CLA 文件 (customcode.cla) 中,由 cla_task.cla 文件中的 CLA 任务调用。

运行模型

1.打开硬件选项卡,然后点击监控和调节

2.使用诊断查看器跟踪构建进度,并等待代码加载并在目标硬件上运行。

3.观察 Display 模块上指数 e^(input1/input2) 的值。

其他可以尝试的操作

  • 尝试使用不同的驱动模块运行示例,并分析结果。

有关详细信息