ZHCAB59B June   2019  – November 2020 TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   商标
  2. 引言
    1. 1.1 本文档中使用的首字母缩写词
  3. 在高带宽电流环路中使用 TMS320F2838x MCU 的优势
  4. 伺服驱动器中的电流环路
  5. 快速电流环路库概述
  6. 快速电流环路评估
    1. 5.1 评估设置
      1. 5.1.1 硬件
      2. 5.1.2 软件
      3. 5.1.3 具有 T-Format 类型位置编码器的 FCL
        1. 5.1.3.1 将 T-Format 编码器连接到 IDDK
        2. 5.1.3.2 T-Format 接口软件
        3. 5.1.3.3 T-Format 编码器延迟注意事项
      4. 5.1.4 SDFM
      5. 5.1.5 增量系统构建
  7. 增量构建级别 1
    1. 6.1 SVGEN 测试
    2. 6.2 使用 DAC 测试 SVGEN
    3. 6.3 逆变器功能验证
  8. 增量构建级别 2
    1. 7.1 在软件中设置过流限制
    2. 7.2 电流感测方法
    3. 7.3 电压感测方法
    4. 7.4 设置电流调节器限制
    5. 7.5 验证电流感测
    6. 7.6 位置编码器反馈
      1. 7.6.1 速度观测器和位置估算器
      2. 7.6.2 位置编码器方向验证
  9. 增量构建级别 3
    1. 8.1 观察结果一 – PWM 更新延迟
      1. 8.1.1 使用“Expressions”(表达式)窗口
      2. 8.1.2 使用示波器图
  10. 增量构建级别 4
    1. 9.1 观察结果
  11. 10增量构建级别 5
  12. 11增量构建级别 6
    1. 11.1 集成 SFRA 库
    2. 11.2 启动 SFRA 前的初始设置
    3. 11.3 SFRA GUI
    4. 11.4 设置 GUI 以连接到目标平台
    5. 11.5 运行 SFRA GUI
    6. 11.6 电流反馈 SNR 的影响
    7. 11.7 推论
      1. 11.7.1 根据闭环图确定带宽
      2. 11.7.2 根据开环图确定相位裕度
      3. 11.7.3 根据 PWM 更新时间确定最大调制指数
      4. 11.7.4 电流环路中的电压去耦
    8. 11.8 相位裕度与增益交叉频率间的关系
  13. 12增量构建级别 7
    1. 12.1 在 CPU1 上运行代码以将 ECAT 分配给 CM
    2. 12.2 在 CM 上运行代码以设置 ECAT
    3. 12.3 设置 TwinCAT
    4. 12.4 通过 TwinCAT 扫描 EtherCAT 器件
    5. 12.5 针对 ESC 的 ControlCard EEPROM 编程
    6. 12.6 运行应用程序
  14. 13增量构建级别 8
    1. 13.1 在 CPU1 上运行代码以将 ECAT 分配给 CM
    2. 13.2 在 CM 上运行代码以设置 ECAT
    3. 13.3 运行应用程序
  15. 14参考文献
  16. 15修订历史记录

快速电流环路库概述

数字电机控制系统存在的主要问题是,内部控制环路的传输滞后降低了系统的响应,从而影响系统在更高频率和运行速度下的性能。解决此问题将有助于改善电流环路带宽。但是,若要在不损失直流母线电压利用率的情况下实现此目标,以下各项是必需的:

  • 高计算能力
  • 正确的控制外设组合
  • 出色的控制算法

TMS320F2838x 提供必要的硬件支持来实现更高的性能,而在此实时控制器上运行的 TI FCL 库则提供了必要的算法支持。MC SDK v2.01.00.00 及后续版本可提供源代码。

为了提高电流环路的速度并优化电流环路的工作范围,反馈采样和 PWM 更新之间的延迟必须尽可能小,如图 4-1 所示。实质上,在所示 PWM 载波周期内,在载波峰值处会发生系统采样,并在 TPWM_update 时间点更新由控制器输出的 PWM 占空比。这样可以大幅减少传输滞后并改善带宽。但是,缺点是会失去用于计算逆变器 PWM 占空比新值的有效 PWM 时间窗口。此时间窗口被称为消隐窗口。此消隐窗口越小,直流母线电压利用率就越大,电机运行速度范围也越大。

GUID-808C2125-BE6D-4B0C-AE85-843C199C1336-low.jpg图 4-1 反馈采样和 PWM 更新之间的延迟时间

通常,在许多载波频率为 10kHz 的应用中,不超过 2µs 的延迟是可以接受的。过去,此任务是将高端 FPGA、外部 ADC 和 MCU 结合使用来实现的。但是,C2000 具有相应的硬件支持功能(例如三角数学单元 (TMU)、CLA、高速 ADC 或 SDFM、单周期 ADC 读取和 PWM 写入),因此无需 FPGA 或外部 ADC 即可在此 MCU 上实现这种控制。

GUID-1B21744E-56BC-47B5-808C-E738B3578C44-low.gif图 4-2 快速电流环路库方框图

FCL 库利用 F2838x MCU 中的以下特性:

  • TMU
  • 四个高速 12 位或 16 位 ADC,或 Σ-Δ 滤波器模块 (SDFM)
  • 其他处理块,例如 CLA

图 4-2 展示了 FCL 库及其输入和输出的方框图。FCL 库在 CPU、CLA 和 TMU 之间对算法进行了分区,旨在将延迟降低到 1.0µs 以内,小于可接受的 2.0µs。如果算法是以汇编语言编写的,则可以进行进一步优化。

FCL 库支持两种类型的电流调节器,即标准 PI 控制器和复杂控制器。复杂控制器能够以更快的速度提供比标准 PI 控制器更高的带宽。两种电流调节器均用于用户评估。在示例工程中,可以通过适当设置 FCL_CNTLR 宏并研究电流调节器的比较结果来选择电流调节器。

表 4-1 列出了 FCL API 函数及其说明。

表 4-1 FCL 接口函数汇总
API 函数 说明
uint32_t FCL_getSwVersion(void) 此函数返回 32 位常量,对于此版本,返回的值为 0x00000007。
void FCL_runComplexCtrl(void) 此函数在具有 QEP 编码器和霍尔传感器(使用 ADC)的 FCL 中执行复杂控制
FCL_runSDFMComplexCtrl(void) 此函数在具有 QEP 编码器和分流电阻器(使用 SDFM)的 FCL 中执行复杂控制
void FCL_runAbsEncComplexCtrl(void) 此函数在具有典型绝对编码器和霍尔传感器(使用 ADC)的 FCL 中执行复杂控制
void FCL_runSDFMAbsEncComplexCtrl(void) 此函数在具有典型绝对编码器和分流电阻器(使用 SDFM)的 FCL 中执行复杂控制
void FCL_runPICtrl(void) 此函数在具有 QEP 编码器和霍尔传感器(使用 ADC)的 FCL 中执行 PI 控制
void FCL_runSDFMPICtrl(void) 此函数在具有 QEP 编码器和分流电阻器(使用 SDFM)的 FCL 中执行 PI 控制
void FCL_runAbsEncPICtrl(void) 此函数在具有典型绝对编码器和霍尔传感器(使用 ADC)的 FCL 中执行 PI 控制
void FCL_runSDFMAbsEncPICtrl(void) 此函数在具有典型绝对编码器和分流电阻器(使用 SDFM)的 FCL 中执行 PI 控制
void FCL_runPICtrlWrap(void) 当使用 QEP 作为位置传感器时,在 PI 控制模式下,在退出 ISR 之前,用户应用程序在 FCL 结束时将调用此函数
void FCL_runAbsEncPICtrlWrap(void) 当使用绝对编码器作为位置传感器时,在 PI 控制模式下,在退出 ISR 之前,用户应用程序在 FCL 结束时将调用此函数
void FCL_runQEPWrap(void) 此函数由用户应用程序调用以结束 QEP 反馈过程。此函数仅在 FCL_LEVE2 中使用
void FCL_runComplexCtrlWrap(void) 当使用 QEP 作为位置传感器时,在复杂控制器模式下,在退出 ISR 之前,用户应用程序在 FCL 结束时将调用此函数
void FCL_runAbsEncComplexCtrlWrap(void) 当使用绝对编码器作为位置传感器时,在复杂控制模式下,在退出 ISR 之前,用户应用程序在 FCL 结束时将调用此函数
void FCL_initPWM(uint32_t basePhaseU, uint32_t basePhaseV, uint32_t basePhaseW) 此函数用于初始化 PWM 以支持 FCL 运行,在初始化或设置过程中,用户应用程序将调用此函数
void FCL_resetController(void) 调用此函数可以重置 FCL 变量,此函数在您需要停止电机并重新启动电机时很有用
void FCL_initQEP(uint32_t baseA) 此函数对 eQEP 外设进行初始化以便连接到 QEP

void FCL_initADC(uint32_t resultBaseA, ADC_PPBNumber baseA_PPB, uint32_t resultBaseB, ADC_PPBNumber baseB_PPB, uint32_t adcBasePhaseW)

此函数对用于感测电机相电流的 ADC 进行初始化

如需了解该库的更多信息,请参阅快速电流环路 MotorControl SDK 库用户指南,此文档位于:

\ti\c2000\C2000Ware_MotorControl_SDK_2_01_00_00\libraries\fcl\docs

FCL 的源代码位于:

\ti\c2000\C2000Ware_MotorControl_SDK_2_01_00_00\libraries\fcl\source

注: 该库是以模块化格式编写的,如果满足以下条件,则可以移植到使用 F2838x 器件的用户平台:
  • 电机相电流反馈被读入该库内部变量。但是,可提供 D 轴和 Q 轴电流反馈。
  • 用于控制电机 A 相、B 相和 C 相的 PWM 模块链接到该库。
  • 连接到 QEP 传感器的 QEP 模块链接到该库。
  • 该库使用 CLA 任务 1-4。这必须包含在用户应用程序中。
  • 编写了独立但相似的控制函数以用于高延迟 T-format 位置编码器
  • 编写了类似的控制函数来进行 SDFM 电流感测