使用控制律加速器(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
示例模型的可用版本:
TI F28379D发射台:c28379D_cmpss_cla_blink.slx
F28035:c28035blink_cla.slx
F28069:c28069blink_cla.slx
F28377S:c28377Sblink_cla.slx
F28004x:c28004xblink_cla.slx
F28069:c28069_dataintegrity_cla.slx
F28379D:c28379D_dataintegrity_cla.slx
F28379D启动:c28379D_cpu1_blink_cla.slx,c28379D_cpu2_blink_cla.slx
F28379D:c28379D_custom_code_cla
Drv8312 + f28069:c28069pmsmfoc_cla.slx
Drv8312 + f28035:c28035pmsmfoc_cla.slx
任务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子系统并选择块参数(子系统)。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。
运行模型
打开任意一个范例模型,c28069blink_cla.slx,c28004xblink_cla.slx,c28377Sblink_cla.slx,c28379D_cpu1_blink_cla.slx,或c28379D_cpu2_blink_cla.slx.
开放配置参数并选择所需的工具链上代码生成窗格。
新闻Ctrl + B构建二进制可执行文件,并在选定的目标上自动加载和运行可执行文件。
方法2 -使用内联代码生成CLA子系统闪烁一个LED
在这种方法中,cla_subsystem
由软件以0.5秒的速率触发,并配置为内联作为函数包装
.更多信息,方法2 - CLA子系统的内联代码生成.
以下是为该模型完成的CLA子系统块配置。要打开块参数,右键单击CLA子系统并选择块参数(子系统)。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。
运行模型
打开示例模型,c28035blink_cla.slx.
开放配置参数并选择所需的工具链上代码生成窗格。
新闻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不同步,也能保证数据的完整性。
运行模型
在硬件选项卡上,单击构建、部署和启动>建立独立的或按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方向上旋转,并且刚刚发生了下降边。如果模型检测到方向变化,它将使电机的方向和速度失效。为了使速度有效,该模型需要具有相同方向的两条连续边。否则,模型将设置一个标志使速度无效。
下面的逻辑适用于相应的标志更新:
New_direction = Hall_direction
New_valid_flag = Previous_direction = Hall_direction;
Global_speed_and_direction_ready_flag = New_valid_flag && Old_valid_flag;
场定向控制算法采用一个从0到1的位置信号,反映了一个电气旋转。如果速度信号有效,该模型将根据霍尔读数进行线性外推,并准确估计位置。
基于霍尔的位置估计算法原理:
阅读大厅。
获取最新定时器的值(从触发的最后一个中断捕获的定时器)。
使用当前速度将从前一条边经过的时间转换为电角度。
如果速度信息无效(改变方向后速度无效,启动时无效,电机停止时无效,速度过低时无效……),算法假设位置在霍尔读数定义的60电度的中间。因此,在这些情况下,最大位置信号误差为30电度。
当Hall_A在0方向上升时,霍尔解码器将被引用(position = 0)。一个Hall_position_offset变量被用来通知FOC算法霍尔参考和电机反电动势波形之间的位置差。与QEP示例一样,该值必须通过将霍尔信号与电机的反电动势波形进行比较来校准。在DRV8312示例中,Hall_position_offset在电气转数上被归一化,并设置为0.57,以匹配DRV8312EVM中包含的电机的特性。
运行模型
开放配置参数并选择所需的工具链上代码生成窗格。
新闻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);