This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C:在单个 MCU 上使用快速电流环路(FCL)和 SFRA 的双轴电机驱动参考设计示例:速度值不稳定

Guru**** 2381630 points
Other Parts Discussed in Thread: SFRA, BOOSTXL-3PHGANINV
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1349128/tms320f280039c-dual-axis-motor-drive-using-fast-current-loop-fcl-and-sfra-on-a-single-mcu-reference-design-example-erratic-values-of-speed

器件型号:TMS320F280039C
主题中讨论的其他器件:SFRABOOSTXL-3PHGANINV

我们一直在做  在单个 MCU 上使用快速电流环路(FCL)和 SFRA 的双轴电机驱动器参考设计  添加了示例。 基本上、该示例基于 F280049C、由于该示例具有位置环路、因此我们想要使用此示例来控制一个 BLDC 电机。  

我们已经将该示例修整为仅适用于一个电机、使用 LAUNCH-XL-f280049C 时、该项目运行良好。 我们已将同一示例移植到 LAUNCH-XL-F280039C。

现在我们位于 BUILD_LEVEL4中、速度值显示不正确。  

我们有36V BLDC 电机、 一看到  motorVars[0]。ctrlState   设置为  Ctrl_运行 我们可以看到、电机开始旋转、 但输入电压下降到了5-6V、并且消耗了电源中设置的最大电流限值。 虽然电流限制保持在标称值以下(从0.3安培到1.5安培进行检查、但 没有超出范围以避免损坏)、但观察结果是电机旋转令人满意、  motorVars[0].speed.Speed  漂移值不稳定。 电机没有负载。

。  

使用 LAUNCH-XL-F280049C 对电机、驱动板和电源设备进行了检查、工作正常。因此、可能对硬件没有怀疑。

消耗更多电流的可能原因是什么以及速度值不稳定的原因?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请按照示例用户指南将该实验迁移到  LAUNCH-XL-F280039C。 您需要根据使用的电路板修改器件配置代码、如 ADC、PWM、QEP。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yanming:

    PWM、ADC 根据 LAUNCH-XL-F280039C 进行配置、并检查 PWM 信号 FCL_BUILD_LEVEL_1 已使用验证了 ADC 的特性和值  FCL_params。 VDC  值、也配置了 QEP、但  QPOSCNT  显示寄存器值  0 。 QEP 配置

    现在、  motorVars[0].speed.Speed   未给出正确的值、并且单独检查了编码器、并且工作正常。  

    此致、

    拉格胡

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否尝试从构建级别1运行实验、并查看哪个构建级别会有问题?

    您可以 查看  LAUNCH-XL-F280039C 用户指南、设置开关以使相关 GPIO 连接到 QEP 的接口接头。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我们遵循  在单个 MCU 上使用快速电流环路(FCL)和 SFRA 的双轴电机驱动器参考设计  并且是在 FCL_BUILD_Level1中完成的。  

     LAUNCH-XL-F280039C 上的 QEP 选择开关 设置为 J12、即 EQEP1接头。 此外、我们已经运行了一个编码器示例代码、  eQEP_ex2_pos_speed 结果令人满意。  

    为 LAUNCH-XL-F280049C 构建的参考设计中、QEP 配置适用于编码器的 INDEX 引脚、这里我们已重新配置为不使用 INDEX 引脚。 以下各项的值:  motorVars[0].speed.Speed  是0或1。  

    此致、

    拉格胡

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此处我们已重新配置为在没有索引引脚的情况下工作。 以下各项的值:  motorVars[0].speed.Speed  是0或1。  [/报价]

    即使更改了 QEP 配置、该示例也无法支持没有 Index 的编码器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据我们的理解、  motorVars[0]。ctrlState   设置为  CTRL_run、  motorVars[0].ptrFCL->LSW  应更改自  ENC_对齐  至  ENC_WAIT_FOR_INDEX  电机应该开始旋转、从而找到实际正在发生的索引引脚。 此外、在电机响应 motorVars[0].speed.Speed 试验。 此时、它不应该计算速度?

    进行了小修正、在我的上一条消息中、我说"  motorVars[0].speed.Speed  是0或1"、它实际上是  QPOSCNT  寄存器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要在构建级别2中运行代码、否则、如果不使用 Index、实验不能使电机旋转。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们购买了一个具有索引引脚的编码器、但问题仍在发生。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如上所述、尝试在构建级别2中运行实验、以验证编码器和 eQEP 的配置。 您可以先运行原始实验以及编码器支持板、然后对您拥有的板进行测试。 编码器或配置代码导致的问题。

    运行构建级别2中的实验、检查编码器的输出信号并检查 eQEP 寄存器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yanming:

    正如您所建议的、我们已使用  LAUNCH-XL-F280049C 和 BOOSTXL-3PHGANINV 运行原始实验。  motorVars[0].speed.Speed  和  QPOSCNT  值很好。

    我们现在  在 LAUNCH-XL-F280039C 上运行、但  motorVars[0].speed.Speed  值不稳定、QPOSCNT 值 为0或1。  现已问世  motorVars[0].ptrFCL->LSW  的条件是  ENC_WAIT_FOR_INDEX、  无法检测索引引脚。 但我们使用了具有索引引脚的编码器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Raghu:

    也许要确保 GPIO 输入从电平转换器中出来的 eQEP 索引脉冲引脚实际上已经被连接。 使用 DMM 会将整个路径圈出到顶部引脚上的 MCU、而不是在顶部湿性侧面。 即使在测试探针压力较低的情况下、引脚连接不良也会接触到。  

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在我们  在 LAUNCH-XL-F280039C 上运行 ,但  motorVars[0].speed.Speed  值不稳定、QPOSCNT 值 为0或1。  现已问世  motorVars[0].ptrFCL->LSW  的条件是  ENC_WAIT_FOR_INDEX、  无法检测索引引脚。 但我们使用的编码器具有索引引脚。

    如上所述、您必须检查 eQEP 是否配置正确、以及  LAUNCH-XL-F280039C 上的开关是否设置到正确的位置。

    您需要将相关 GPIO 配置为 eQEP 输入、并将 eQEP 寄存器配置为 F28004x。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Genatco:

    感谢您的答复。

    在  LAUNCH-XL-F280039C 上、QEP 选择开关设置为 J12和 J13。 在该电路板上运行的编码器项目工作正常、但在以下条件下运行时配置相同  使用快速电流环路(FCL)和 SFRA 的双轴电机驱动器无法正常工作。 我认为连接不好或松动。 对 GPIO 输入进行了仔细检查、并对引脚配置进行了检查。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    双检查了 GPIO 输入并检查了引脚配置。

    您好、Raghu:

    我的错、您似乎是在 x49c 上测试编码器(FCL 索引 SFRA)、但在 x39c 上、同一编码器失败。 也许 x39c 库调用在某种程度上有所不同、或者项目编译在 x49c 项目 hal.h/c 中省略了 SFRA 中断或处理程序的必要代码。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否  根据在 LAUNCH-XL-F280039C 上使用 PWM 更改 dual_axis_servo_drive_hal.c 文件中的 HAL_setupCLA ()下面的代码 

    //为 CLA 任务1启用 EPWM6 INT 触发
    CLA_setTriggerSource (CLA_task_1、CLA_TRIGGER_EPWM1INT);

    //为 CLA TASK5启用 EPWM1 INT 触发
    CLA_setTriggerSource (CLA_task_5、CLA_TRIGGER_EPWM7INT);

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Genatco:

    我们已根据 x39C 配置了 eQEP 模块、目前已排除 SFRA。 目前、正如 Yanming 所说、我们处于 FCL 模式、
    _build_Level2以验证 eEQEP。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yanming:

    //为 CLA 任务1启用 EPWM6 INT 触发
    CLA_setTriggerSource (CLA_task_1、CLA_TRIGGER_EPWM1INT);  

     这已经完成、因此这部分代码在  dual_axis_servo_drive_user.h  

    我们只关注一台电机、并修整了与电机2相关的所有代码。 因此  

    //为 CLA TASK5启用 EPWM1 INT 触发
    CLA_setTriggerSource (CLA_task_5、CLA_TRIGGER_EPWM7INT);

    所以、这里不提供。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    即使只使用一个电机、您也可以尝试为双电机配置所有外设。 在 CCS 中调试代码时、PC 将停止在哪里? 以及这些 eQEP 寄存器中的任何值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yanming:

    今天、我们就该主题开展了一系列活动、  在单个 MCU 上使用快速电流环路(FCL)和 SFRA 的双轴电机驱动器参考设计 实验。

    注意:全部操作均在 FCL_BUILD_LEVEL2中完成。

    1.  正如您建议的那样、我们为这个新项目创建了  "49C_with_39C_source_files_2_motors" 其中、我们更改了 PROJECTSPEC 文件 dual_axis_servo_drive_user.h   编辑了与 LAUNCH-XL-F280039C 配合使用的相关文件和链接器 cmd 文件、以从闪存(XIP)执行该文件。 在这个 编码器中是由 eQEP1和 eQEP2分配的,而在另一个是 eQEP2,QPOSCNT 寄存器的时间是0或1,而值是  motorVars[0].speed.Speed  不稳定。
    2. 现在、我们根据返回到原始配置  在单个 MCU 上使用快速电流环路(FCL)和 SFRA 的双轴电机驱动器参考设计  在指定 eQEP1时,文档 LAUNCH-XL-F280049C 无法正常工作。   motorVars[0].speed.Speed  是0、并且  QPOSCNT  寄存器也是0。 如果 eQEP2被分配、则运行正常。   motorVars[0].speed.Speed  QPOSCNT  值很好。
    3. 无论如何、我们正在工作的原始工程修整了 MOTOR_2的代码 、并使用 x39C 源文件运行、其中也采用了第1点中所述的相同方式。

    修整 电机2代码的原因是 x39C 的 RAM 大小(69KB)小于 X49c (100kb)、 但 我们希望只运行一个电机。

    现在, 下一步是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    调整 motor_2代码的原因是 x39C 的 RAM 大小更小(69KB)

    为什么不从闪存组中运行整个项目、只是为了看看会发生什么情况。 使用#pragma SECTIONS 将函数/代码移动到 SRAM 中有时、模块的某些部分无法跨内存地址进行通信。 也许可以使用内存浏览器将段移动在一起、以找到#pragma 段。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Genatco:

    我们通过闪存本身(XIP)运行项目。 我认为它没有失败、因为当我们尝试逐行调试时、  HAL_setupQEP (handle); eQEP 正在配置的情况。 另外、 位置计数器也被使能(QEPCTL 寄存器中的 QPEN 位为1)。 因此、根据我们的理解、QPOSCNT 应该会递增。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此,根据我们的理解,QPOSCNT 应该会递增。

    使用#pragma 将某些函数重新定位到 SRAM 段中并在工程属性中设置通用优化级别的充分理由。 有时将全局优化设置在整个工程上会 过快执行 SRAM 段函数。 这样会 在 PIE 中断(EQEPxINT)期间导致 CPU 从 MCU 本地总线上的外设寄存器捕获数据时出现时序问题。 在遇到#pragma 语句时向可疑函数添加 control #pragma 为编译器设置较低的优化级别可能会有所帮助。 否则 、可能会发生某种类型的中断冲突? 也许检查 EQEPxINT 标志是否有效、正在 PIE 寄存器视图中清除。

    。    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否检查 F28003x 的所有 eQEP 配置寄存器是否具有与 F28004x 相同的值? eQEP 的时钟是否被启用? 代码大小应远小于两个器件的 RAM 大小。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    启用时钟。  F28003x 和 F28004x 的寄存器值相同。 代码应更小,这就是我们修整 motor2的原因,不管我们是从闪存运行代码(在 F28003x 中为389kb )。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    代码在闪存或 RAM 之外运行并不重要。 我认为您不需要进行更大的更改、只需要根据使用外设、ADC、eQEP、PWM 和一些 GPIO 来更改如上所述的器件配置。  

    1.LAUNCH-XL-F280039C 上的 S5 设置正确。

    配置用于 eQEP 的 GPIO。

    3. eQEP

    4. ADC 和 PWM

    CLA 触发事件  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yanming 和 Genatco:

    问题是、由于该项目本质上是为 x49C 构建的、  HAL_setupGPIO (handle);  包含与 x49C 相关的引脚。 我们将引脚更改为使用 x39C。 x49C 的实际 eQEP GPIO 引脚没有改变、这就造成了问题。

    随着我们进一步的发展、我们希望保持这个主题保持开放。

    此致、

    拉格胡

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您必须根据所使用的板检查配置代码。 如果您还有任何其他问题、请创建新主题帖。