主要内容

使用控制律加速器(CLA)

这个例子展示了如何使用一些TI®处理器上可用的控制定律加速器(CLA)。

简介

德州仪器C2000处理器的嵌入式金宝appCoder支持包使您能够:

  • 以LED闪烁为例

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

  • CLA输出信号监测

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

先决条件

完成以下教程:

所需的硬件

LED闪烁型号:

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

CLA输出信号监测:

  • TI F28379D发射台

对于电机控制应用模型:

  • TI®DRV8312三相无刷电机控制套件(DRV8312- c2 - Kit或DRV8312- 69m - Kit)与F28035或F28069 Piccolo处理器

  • 带霍尔传感器的三相PMSM,连接到DRV8312EVM板的连接器J10

示例模型的可用版本:

任务1:以LED闪烁的CLA为例

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

open_system (“c28069blink_cla”);

该模型为Simulink模型生成代码,其中算法的一部分运行在设备金宝app上可用的控制律加速器(CLA)上。CLA是一个允许并行处理的协处理器。在时间关键型任务中使用CLA可以释放主CPU并发执行其他系统和通信功能。

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

方法1 -使用CLA子系统不可重用的功能代码生成来闪烁LED

在这种方法中,cla_subsystem由软件以0.5秒的速率触发,并配置那种一次性的功能作为函数包装.更多信息,方法1—CLA子系统不可重用的函数代码生成(推荐)

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

运行模型

  1. 打开任意一个范例模型,c28069blink_cla.slxc28004xblink_cla.slxc28377Sblink_cla.slxc28379D_cpu1_blink_cla.slx,或c28379D_cpu2_blink_cla.slx

  2. 开放配置参数并选择所需的工具链上代码生成窗格。

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

方法2 -使用内联代码生成CLA子系统闪烁一个LED

在这种方法中,cla_subsystem由软件以0.5秒的速率触发,并配置为内联作为函数包装.更多信息,方法2 - CLA子系统的内联代码生成

以下是为该模型完成的CLA子系统块配置。要打开块参数,右键单击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)。

open_system (“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输出信号监测

在这个任务中,

  • 将模型配置为从DAC和CMPSS块读取数据,并在CLA任务中闪烁一个LED。

  • 监视和调优模型以观察CLA输出。

open_system (“c28379D_cmpss_cla_blink”);

输入到CLA子系统input1存储在CpuToCla1MsgRAM使用代码映射。配置的CLA子系统那种一次性的功能功能的包装。有关更多信息,请参见方法1—CLA子系统不可重用的函数代码生成(推荐)

配置模型

1.打开使用CMPSS在CLA内闪烁一个LED模型。该模型配置TI Delfino F28379D发射台硬件。

2.要在其他TI C2000处理器上运行该模型,请按Ctrl + E,进入“配置参数”对话框,选择所需的硬件板硬件实现>硬件板

驱动块CLA内部的配置

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

运行模型

1.开放硬件选择并单击监视和调优

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

3.观察范围块上的日志数据,LED闪烁。

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

输入到这里生成裸空间向量(c28035pmsmfoc_cla/FOC算法/转矩控制算法/生成空间向量)存储在CpuToCla1MsgRAM使用代码映射。生成裸空间向量配置为那种一次性的功能功能的包装。有关更多信息,请参见方法1—CLA子系统不可重用的函数代码生成(推荐)

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

open_system (“c28069pmsmfoc_cla”);

该模型利用CLA实现了永磁同步电机的磁场定向控制。FOC算法由CLA任务实现,PWM占空比在CLA任务完成时使用相应的中断刷新。本例需要一个带有F28069或F28035控制卡的DRV8312套件。闪烁LED示例中列出的所有注意事项都适用于本示例。

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

在本例中,采用闭环磁场定向控制算法来调节三相永磁同步电机的速度和转矩。本例使用来自德州仪器C2000处理器嵌入式编码器支持包的C28x外围模块。金宝app本例中的算法使用异步调度。脉宽调制(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方向上升时,霍尔解码器将被引用(position = 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。金宝app

  • 监视和调优以观察CLA输出。

open_system (“c28379D_custom_code_cla”);

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

CLA子系统的输入input1而且input2存储在CpuToCla1MsgRAM使用代码映射。配置的CLA子系统那种一次性的功能功能的包装。有关更多信息,请参见方法1—CLA子系统不可重用的函数代码生成(推荐)

配置模型

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

2.要在其他TI C2000处理器上运行该模型,请按Ctrl + E,进入“配置参数”对话框,选择所需的硬件板硬件实现>硬件板

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

调用方块CLA内部的配置

下面是为这个模型做的函数调用者块CLA配置。双击块,打开块参数配置。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

calcuateexpvalue (u, v)是一个用户定义的函数,定义在自定义CLA文件(customcode.cla)中,从cla_task.cla文件。

运行模型

1.开放硬件选择并单击监视和调优

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

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

其他可以尝试的事情

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

更多关于

close_system (“c28069blink_cla”, 0);close_system (“c28069_dataintegrity_cla”, 0);close_system (“c28069pmsmfoc_cla”, 0);