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,写的非常好,需要花精力全文仔细阅读,有中文版。

图1 C2000Ware MotorControl SDK 文档
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是工程用到的一些通用文件。

Control SDK Universal Project and Lab项目工程目录

三、工程结构

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推荐,根据自己的需要选择一套评估套件,而不是自行搭建,可以节省时间和开发效率。我所选择的评估套件包括:

  1. BOOSTXL-DRV8323RH电机驱动板,这样的:
    BOOSTXL-DRV8323RH

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

  3. PMSM电机,PMSM电机笔者未选择官方推荐,选择了正点原子的电机课程中的PMSM电机,后续需要根据该电机参数对软件参数进行调整。电机长这样:
    在这里插入图片描述

五、运行通用试验工程

按照User‘s Guide一步步运行通用试验工程,文档中说的很清楚了,主要步骤包括:

  1. 硬件电路连接与设置,具体按照文档3.2节进行
    在这里插入图片描述
    在这里插入图片描述

  2. 导入和配置工程,按照文档3.3.1节一步步进行即可,如下:
    在这里插入图片描述

  3. 编译和调试工程,按照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).

更多推荐