TI公司Motor Control SDK Universal Project and Lab 使用介绍
TI公司Motor Control SDK Universal Project and Lab 使用介绍
TI公司Motor Control SDK Universal Project and Lab 使用介绍
一、什么是Motor Control SDK Universal Project and Lab
TI公司的Motor Control SDK Universal Project and Lab是TI公司电机控制套件C2000Ware MotorControl SDK的一个开源ccs工程项目,是一套基于C2000Ware MotorControl SDK的一整套完整的FOC电机控制软件项目,可用于各种电机控制算法进行实验,还可以用于自己的设计的参考。Motor Control SDK Universal Project and Lab:
1. 功能齐全,不仅不含了无感/有感FOC全部功能,还包括软启动、快速启动FS、弱磁控制FWC、最大扭矩控制MTPA、软件频率响应分析器SFRA、CAN通讯、电位器调速等,你能想到的和你不能想到的这里都有,基本只要很少的改进即可用于自己的工程;
2. 软件结构清晰,典型前后台软件,采用C语言实现,面向对象思想模块化编程,编制该软件项目的是一个软件编程高手;
3. 帮助文档深入浅出,循序渐进,内容相对全面,而且有中文版,中文版翻译的很好,从原理到使用、软件构建、移植都写的非常清楚,适合电机控制的入门和进修学习;
4. 按照帮助文档进行增量式构建,一步步实现软硬件各种功能,极大的降低了学习难度和复杂度,也减少了故障排除的难度。
二、下载和安装
首先需要安装CCS软件,下载链接: https://www.ti.com/tool/CCSTUDIO.
然后TI官网下载C2000Ware MotorControl SDK,下载连接: https://www.ti.com/tool/C2000WARE-MOTORCONTROL-SDK。注意:下载该软件需要登录,并且不能勾选军事用途。下载完安装包后,记得下载下图中文档。其中主要文档是Motor Control SDK Universal Project and Lab User‘s Guide,写的非常好,需要花精力全文仔细阅读,有中文版。

CCS和C2000Ware MotorControl SDK安装网上有一大堆教程,这里就不再赘述。
安装完成后,在C2000Ware MotorControl SDK的安装目录下可以找到Motor Control SDK Universal Project and Lab项目工程,我的在C:\ti\c2000\C2000Ware_MotorControl_SDK_5_02_00_00\solutions\universal_motorcontrol_lab目录。f2800开头的文件夹就是具体工程目录,根据DSP型号选择文件夹。doc中包含上述user’s guide和一个计算软件参数的EXCEL文件。common是工程用到的一些通用文件。

三、工程结构
Motor Control SDK Universal Project and Lab的工程结构如下,项目是基于C28x系列MCU和C2000Ware MotorControl SDK的,不建议移植到其他MCU如cortex-M系列等,因为需要花费的代价可能太大。如果需要将迁移到定制板或不同 C2000 器件上,则只需更改 hal.c 和 hal.h 中的代码和定义以及 user_mtr1.h 中的参数。


软件的流程图是一个典型的前后台系统,所有控制逻辑都发生在两个循环中,充分理解这两个流程有利于软件使用和更改。

构建级别Level4,转速和电流双闭环控制:

四、评估套件选择
如果要学习该项目,最好按照user’s guide推荐,根据自己的需要选择一套评估套件,而不是自行搭建,可以节省时间和开发效率。我所选择的评估套件包括:
-
BOOSTXL-DRV8323RH电机驱动板,这样的:

-
LAUNCHXL-F280025C开发板,这样的:

-
PMSM电机,PMSM电机笔者未选择官方推荐,选择了正点原子的电机课程中的PMSM电机,后续需要根据该电机参数对软件参数进行调整。电机长这样:

五、运行通用试验工程
按照User‘s Guide一步步运行通用试验工程,文档中说的很清楚了,主要步骤包括:
-
硬件电路连接与设置,具体按照文档3.2节进行


-
导入和配置工程,按照文档3.3.1节一步步进行即可,如下:

-
编译和调试工程,按照3.5节循序渐进的调试工程。
我用示波器测量的马鞍形UV端电压波形:

我用示波器测量UV相正弦电压波形:

六、遇到的坑
我在调试该软件时遇到了一些坑,通过百度、研究源代码等,都得到了解决:
##5.1 LAUNCHXL-F280025C板载调试器固件更新不成功
在CCS中编译完工程项目后,第1次连接开发板进行debug时,发现板载调试器XDS110固件由于和CCS版本不匹配,需要更新,但是CCS自行更新固件总是不成功。按照XDS110的帮助文档指示,通过命令行窗口进入CCS安装目录中XDS110目录中运行下列两条命令解决。
xdsdfu -m
xdsdfu -f firmware.bin -r
但是,我尝试第一条可以成功,第二条指令提示未找到器件。查找了好久,均未找到原因。尝试了很多办法后,安装一个低版本的CCS后,windows的硬件管理器中产生了一些变化后,再次更新固件成功。所以问题是安装的最新版CCS过程中,XDS110所需要的驱动程序未成功安装,可能是CCS本身问题,也有可能是安装过程中杀毒程序未关闭导致的。
##5.2 端电压和相电压不是一回事
我是电机控制的小白,一开始没有端电压和相电压的概念,将端电压误认为是相电压。后来查了一些文献才明白,端电压是输出端对mosfet桥GND之间的电压,如果SVPWM调制则输出的是马鞍波,相电压是负载两相之间的电压,这里是正弦波,二者不是同一个东西。
##5.3 Level1构建时Voltage offset coefficients不是大约0.5
我在进行Level1构建时发现Voltage offset coefficients不是大约0.5,而是一个更小值,大约0.01左右。笔者阅读了源代码发现,在main()函数中,大约671行开始的代码如下:
motorVars_M1.flagEnableOffsetCalc = true;
// run offset calibration for motor 1
runMotor1OffsetsCalculation(motorHandle_M1);
第674行调用了偏置校准函数,0.01左右的小值是校准后的值,和文档述说的不一致。校准过程比较复杂。研究发现只要将motorVars_M1.flagEnableOffsetCalc改为false,不进行校准,就可以保持和文档所说的一致。
##5.4 过调制问题
用示波器观察输出的相电压,有时可能显示的不是正弦波,而是被削尖了的,像这样:

通过降低直流侧电压,可能可以将上述削尖波形变成正弦波。通过研究发现,是SVPWM调制度大于最大调制度1.15,产生了过调制。查找源代码发现最大调制度受USER_M1_MAX_VS_MAG_PU控制,在user_mtr1.h中可以找到。USER_M1_MAX_VS_MAG_PU当=0.66f时会产生过调制,当= 1/SQRT(3) = 0.5774时为纯正弦波。
//! \brief Set USER_MAX_VS_MAG = 1/SQRT(3) = 0.5774 for a pure sinewave
//! \brief with a peak at 100% duty cycle. Current reconstruction
//! \brief will be needed for this scenario (Lab08).
//!
//! \brief Set USER_MAX_VS_MAG = 2/3 = 0.6666 to create a trapezoidal
//! \brief voltage waveform. Current reconstruction will be needed
//! \brief for this scenario (Lab08).
更多推荐


所有评论(0)