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.

[参考译文] TMS320F28379D:为什么 rg1.out 和 qep1.ElecTheta 在 DSO 上不同步?

Guru**** 2540720 points
Other Parts Discussed in Thread: TMDXIDDK379D, C2000WARE, TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/905320/tms320f28379d-why-rg1-out-and-qep1-electheta-are-not-synchronized-on-dso

器件型号:TMS320F28379D
主题中讨论的其他器件:TMDXIDDK379DC2000WARE

您好、TI、  

我使用 QEP 宏(f2803xqep.h)来感测 PMSM 的速度、该 PMSM 具有一个增量编码器。

现在、当我在 DSO 上绘制 qep1.ElecTheta 和 rg1.Out 时、rg1.Out 不会移动、而 是 qep1.ElecTheta 移动(相对于时间)、  

请指导我如何做到这一点?

此外、对于开始时的角度校准、以下代码对我不起作用、因为 IEL 未设置(我不知道原因)。  

如果(lsw = 0){EQep1Regs.QPOSCNT=0;EQep1Regs.QCLR.bit.IEL = 1;}//重置位置 cnt。

if (((EQep1Regs.QDLG.bit.IEL=1)&& Init_IFlag=0)//检查第一次出现的索引
{qep1.CalibratedAngle= EQep1Regs.QPOSILAT;Init_IFlag++;}//保持锁存位置

因此、为了校准角度、我使用外部 INT、Index 信号使用 GPIO 生成外部 INT、然后转至代码的以下部分。  

中断空 XINT1_ISR (空)
{
Xint1Count++;
qep1.CalibratedAngle= EQep1Regs.QPOSCNT;
qep1.IndexSyncFlag = 0x00F0;

//
//确认此中断以从组1获取更多内容
//
// PieCtrlRegs.PIEACK.all = PIEACK_Group1;
} 

引导我、这是否会影响 θ 运动? (我认为不会)

谢谢

Vidhi

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

    RG 模块用于开环运行、RG 模块的输出角可能不是正确的转子位置。 RG 模块的输出与 QEP 模块的感应角度之间有时甚至始终存在一些误差、但两个输出的频率和方向应相同。

    您可以检查 QEPCTL 寄存器中的索引边沿是否设置正确、以匹配编码器的索引输出。

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

    感谢您、但我知道 RG 模块用于开环、RG 模块的输出与 QEP 模块的感应角度之间有时可能存在少量误差、

    但问题是、如果 RG 斜坡和 electheta 之间的误差保持恒定、而不是不断变化、这意味着、electheta 不是恒定的 wrt 时间。  

    那么,你能指导我为什么以及应该检查什么吗?

    您可以检查 QEPCTL 寄存器中的索引边沿是否设置正确、以匹配编码器的索引输出。  为此、它未设置并且 QPOSILAT 为0。  

    谢谢

    Vidhi

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

     如果正确进行转子对齐和 QEP 偏移校准、则频率应相同、运行期间误差非常小且恒定值恒定。

    如果没有转子对齐和 QEP 偏移校准、每个启动中的误差将有一些差异。 您似乎没有正确进行 QEP 偏移校准。

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

    "  如果正确进行转子对齐和 QEP 偏移校准、则频率应相同、运行期间误差非常小且恒定值恒定。"

    我不是这样。 在运行时、它会不断改变这两者之间的误差。  

    我没有改变任何东西、也不认为我需要改变伺服电机磁场定向控制。  设置如下所示。  

    我同意您的观点、可能是校准角度。 因为、对于 ME QPOSCNT 不会锁存到 QPOSILAT 中、IEL 标志不会置位、因此我必须以这种方式校准角度。 因此、我在索引脉冲上生成外部中断、然后将 QPOSCNT 的值提供给"qep1.CalibratedAngle"。

    这是否是个问题? 我可以检查哪些未设置的 IEL 标志?

    以下是 QEP 的设置。  

    /*------------------
    eQEP 解码控制寄存器的初始化状态-------------------------------------------------------
    */
    #define QDECCTL_INIT_STATE (XCR_X2 + QSRC_Quad_MODE)
    
    /*---------------
    eQEP 控制寄存器的初始化状态
    ----------------------------------------------- */
    #define QEPCTL_INIT_STATE (QEP_emulation_free +\
    PCRM_INDEX +\
    IEI_上升+\
    IEL_Rising +\
    QPEN_ENABLE +\
    QCLM_TIME_OUT +\
    ute _enable )
    
    /*-------------------------------------------------------
    eQEP 位置比较控制寄存器的初始化状态-------------------------------------------------------
    */
    #define QPOSCTL_INIT_STATE PCE_DISABLE
    
    /*-------------------------------------------------------
    eQEP 捕捉控制寄存器的初始化状态-------------------------------------------------------
    */
    #define QCAPCTL_INIT_STATE (UPPS_X32 +\
    CCPS_X128 +\
    CEN 使能) 

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

    是的、此项目需要使用索引信号、请确保编码器的设置正确。 您可以在 motorControlSDK 中引用以下链接和文件夹中的项目。

    C2000WARE-MOTORCONTROL-SDKhttp://www.ti.com/tool/C2000WARE-MOTORCONTROL-SDK

    TI\C2000\C2000Ware_MotorControl_SDK_ \solutions\tmdxiddk379d\f2837x

    如果仍有任何问题、请使用索引信号发布编码器输出的捕获波形。

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

    设置与之前的答复中上传的相同、而且任何示例文件都未检测到索引事件、也未设置 IEL。 我不理解原因。  

    对于两个 θ 的非同步、 如下图所示、绿色为 rg1.out、粉红色为 electheta。 在三幅图像中、绿色与电压和电流相关是恒定的、但 eletheta 正在移动。  

    S

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

    检查从 QEP 计算得出的速度是否与 RG 模块的设置速度相同。 如果不是、请检查编码器的线路是否正确、并且 QEP 模块可以检测到编码器的索引信号。  

    您可以参考前面提到的 QEP 的示例配置代码、该示例配置代码对于具有索引输入的编码器而言应该很适用。

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

    计算出的速度匹配、因此我从未怀疑 QEP 模块。 但是、当我看到它随着 rg1模块移动时。  即使使用示例文件、QEP 模块也不会检测到索引信号、并且我没有更改任何与之相关的设置。  

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

    您是否使用示波器捕获了索引信号? 如果您运行下一个构建级别、会发生什么情况?

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

    是的、存在索引信号。  

    直到级别2正常工作。 此外、电流环路运行良好、即 rg1.out、但当我在 FOC 中运行电机时、电机以 theta-c 运行时、它会随机运行。

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

    Vidhi、

    您是否按原样尝试了 TI 的示例代码? 我们发布的是功能验证的代码、这将是一个很好的起点。

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

    是的、但即使使用 TI 示例文件、它们也不是同步的、因此、我不知道它们是否必须同步。  

    此致、  

    Vidhi

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

    我们既没有看到这个问题,也没有收到这样的反馈。 我怀疑这两个因素之一-要么索引引脚未配置为 QEP 操作、要么引脚未正确连接到索引信号。 建议尽可能检查 HSEC 连接器引脚上的索引信号。 还要验证索引引脚 GPIO 配置、以正确选择 QEP 的多路复用器。

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

    我知道。 但是、我一直在尝试示例文件、其中 ePWM 用作索引脉冲并作为 QEP 的输入。  

    我不仅尝试了我的 PC、还尝试了使用不同 LaunchPad 的同事。  

    例如、QEP 配置是默认配置。 此外、如果发生更改、我尝试更改 PCRM 位、但收到了负响应。  

    现在、我不知道要检查什么、同时我想知道除了我的工作之外的其他内容。  

    此致、  

    Vidhi

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

    您能再提供一次有关示例项目和使用的 EVM 的详细信息吗?

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

    您好、先生、  

    目前、我正在考虑第一个问题的一个示例文件"eQEP_pos_speed_cpu01"。 LaunchPad TMS320F28379D 中未设置索引标志 IEL。  

    它具有如下硬件连接:  

    该示例需要从 EPWM1和连接以下硬件
    //! 到 QEP 外设的 GPIO 引脚(模拟 QEP 传感器)。
    //! - GPIO20/eQEP1A <- GPIO0/ePWM1A (模拟 eQEP A 相信号)
    //! - GPIO21/eQEP1B <- GPIO1/ePWM1B (模拟 eQEP B 相信号)
    //! - GPIO23/eQEP1I <- GPIO4 (模拟 eQEP 索引信号)

    和其他设置。 我没有改变任何东西。  

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

    您好、Vidhi、

    请浏览 Launchpad 的原理图、GPIO99映射到索引信号(EQEP1I)、而不是 GPIO23。  

    您必须修改代码以使用 GPIO99而不是 eQEP1I 的 GPIO23来获取索引信号。

    此致、

    Nirav

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

    我非常感谢你提请我注意这一点。 我始终在指令中读取、其中提到了 GPIO23、实际上是在所有示例文件中。

    例如在"eQEP_pos_speed_cpu01"中、  

    //! 该示例需要从 EPWM1和
    //!连接以下硬件 到 QEP 外设的 GPIO 引脚(模拟 QEP 传感器)。
    //! - GPIO20/eQEP1A <- GPIO0/ePWM1A (模拟 eQEP A 相信号)
    //! - GPIO21/eQEP1B <- GPIO1/ePWM1B (模拟 eQEP B 相信号)
    //! - GPIO23/eQEP1I <- GPIO4 (模拟 eQEP 索引信号) 

    以及 InitEQep1Gpio();

    在 "IDDK_PM_Servo_F2837x-v2"等所有示例中、已启用 GPIO23而不是 GPIO99。  

    我认为这也应该是 TI 的更新。  

    再次感谢您、至少现在索引 IEL 标志会按预期设置。  

    Vidhi