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.

[参考译文] TMS320F280049C:InstaSPIN 负电流控制

Guru**** 2558250 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018555/tms320f280049c-instaspin-negative-current-control

器件型号:TMS320F280049C

我设法使自己的硬件正常工作。 现在、我想知道如何设置电流来控制 InstaSPIN。 我要使用恢复-->需要设置负电流。 我该怎么做。 或者是否有其他方法可以通过 InstaSPIN 恢复。 我实际使用的是 lab10。  

此致

Jonas Schulz

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

    您是使用扭矩模式还是速度闭环模式来控制电机? 您可以参考 lab06在电机上实现转矩模式、并且您可以使用正值或负值将转矩电流设置为 IdqSet_A.值[1]。

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

    我使用带有扭矩模式的 lab10、但无法设置 IdqSet_A 但我想使用 RsOnlinceCalibration。

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

    或者问题可能是:如何在 lab10中使用扭矩控制?

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

    通过将 motorVars.flagEnableSpeedCtrl 设置为"false"来禁用速度闭环、然后将目标扭矩电流设置为 IdqSet_A.value[1]作为 lab06。

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

    很抱歉、但这对我不起作用。 我将该标志设置为 false、IdqSet 中的任何更改都不会更改正在运行的系统。 它始终调节到速度。

     在这里、您可以看到 IdqSet = 0且电机转速为20Hz。 因此、它通常应停止

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

    由于您正在使用 lab10、只需将"motorVars.operateMode"设置为"operate_mode_fet"、并将正确的扭矩电流设置为"IdqSet_A.value[1]"。

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

    我没有尝试过、但速度控制方面比较冷淡。  

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

     

    /*       if(EST_doSpeedCtrl(estHandle))
            {
                counterSpeed++;
    
                if(counterSpeed >= userParams.numCtrlTicksPerSpeedTick)
                {
                    counterSpeed = 0;
    
                    PI_run_series(piHandle_spd,
                                  estInputData.speed_ref_Hz,
                                  estOutputData.fm_lp_rps * MATH_ONE_OVER_TWO_PI,
                                  0.0,
                                  (float32_t *)(&(Idq_ref_A.value[1])));
                }
            }
            else
            {
                Idq_ref_A.value[1] = 0.0;
            } */

    代码始终位于 IF 内部。 我不知道为什么 EST_doSpeedCtrl 总是为 true

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

    您似乎没有使用最新的示例 代码、或者您已更改了 lab10示例代码、或者您没有在 motorControlSDK 中使用 lab10。 您能否再次下载并安装 motorcontrolSDK?

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

    在 lab10中、速度环路的示例代码应如下所示。

    if (counterSpeed >= userParams.numCtrlTicksPerSpeedTick)

    if (motorVars.flagEnableSpeedCtrl == true)

    反转速度= 0;

    pi_run_series (pioHandle_spd、
    estInputData.speed_ref_Hz、
    estOutputData.fm_lp_rps * MATH_OW_OVER 两个 PI、
    0.0、
    (float32_t *)(&(idq_ref_a.value[1]));

    ELSE //扭矩控制

    Idq_ref_A.value[1]= IdqSet_A.value[1];