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:针对定制电机的动态电阻校准

Guru**** 2452710 points
Other Parts Discussed in Thread: TMS320F280049C, C2000WARE, TMDSHVMTRINSPIN

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1128396/tms320f280049c-dynamic-resistance-calibration-for-custom-motor

器件型号:TMS320F280049C
主题中讨论的其他器件: C2000WARETMDSHVMTRINSPIN

大家好、

我们正在使用 TMS320F280049C 开发基于传感器的 FOC。

我使用 的是示例项目路径: C:\ti\c2000Ware_MotorControl_SDK_3_00_01_00\solutions\tmdshvmtrinspin\f28004x\ccs\sensorless_foc\is10_rs_recalcc

我们使用 HVKIT 和 AC 伺服电机测试了实验10示例、它按预期工作。

套件: tmdshvmtrinspinspinsp(HVKIT)

电机:交流伺服电机。 参数定义如下。

#elif (USER_MOTOR == Estun_EMJ_04APB22_B)
#define USER_MOTOR_TYPE                    MOTOR_TYPE_PM
#define USER_MOTOR_NUM_POLE_PAIRS         (4)
#define USER_MOTOR_Rr_Ohm                 (0.0)

// HV Kit with external OPA
#define USER_MOTOR_Rs_Ohm                 (2.98774099)
#define USER_MOTOR_Ls_d_H                 (0.008926632)
#define USER_MOTOR_Ls_q_H                 (0.008926632)
#define USER_MOTOR_RATED_FLUX_VpHz        (0.445965141)

#define USER_MOTOR_MAGNETIZING_CURRENT_A  (NULL)
#define USER_MOTOR_RES_EST_CURRENT_A      (1.0)
#define USER_MOTOR_IND_EST_CURRENT_A      (-1.0)
#define USER_MOTOR_MAX_CURRENT_A          (3.82)
#define USER_MOTOR_FLUX_EXC_FREQ_Hz       (20.0)
#define USER_MOTOR_NUM_ENC_SLOTS          (2500.0)
#define USER_MOTOR_INERTIA_Kgm2           (3.10002e-05)

#define USER_MOTOR_FREQ_MIN_HZ             (5.0)           // Hz
#define USER_MOTOR_FREQ_MAX_HZ            (400.0)         // Hz

#define USER_MOTOR_FREQ_LOW_HZ            (10.0)          // Hz
#define USER_MOTOR_FREQ_HIGH_HZ           (200.0)         // Hz
#define USER_MOTOR_VOLT_MIN_V             (20.0)          // Volt
#define USER_MOTOR_VOLT_MAX_V             (200.0)         // Volt



现在、我们需要使用  HVKIT 和 PMSM 电机(自定义电机)测试相同的实验10示例、并使用波峰值参数。


套件: tmdshvmtrinspinspinsp(HVKIT)
电机:PMSM 电机(定制电机)。 参数定义如下。

#if (USER_MOTOR == Estun_EMJ_04APB22_B)
#define USER_MOTOR_TYPE                    MOTOR_TYPE_PM
#define USER_MOTOR_NUM_POLE_PAIRS         (20)
#define USER_MOTOR_Rr_Ohm                 (0.0)
#define USER_MOTOR_Rs_Ohm                 (NULL)
//#define USER_MOTOR_Rs_Ohm                 (3.80093718)
#define USER_MOTOR_Ls_d_H                 (NULL)
#define USER_MOTOR_Ls_q_H                 (NULL)
#define USER_MOTOR_RATED_FLUX_VpHz        (0.0)
#define USER_MOTOR_MAGNETIZING_CURRENT_A  (NULL)
#define USER_MOTOR_RES_EST_CURRENT_A      (1.0)
#define USER_MOTOR_IND_EST_CURRENT_A      (-1.0)
#define USER_MOTOR_MAX_CURRENT_A          (7.4)
#define USER_MOTOR_FLUX_EXC_FREQ_Hz       (20.0)
#define USER_MOTOR_NUM_ENC_SLOTS          (2500.0)
#define USER_MOTOR_INERTIA_Kgm2           (3.10002e-02)

#define USER_MOTOR_FREQ_MIN_HZ             (10.0)           // Hz
#define USER_MOTOR_FREQ_MAX_HZ            (48.0)         // Hz  120%of rated //increased to 48 from 30
#define USER_MOTOR_FREQ_LOW_HZ            (4.0)          // Hz   //increased to 4 from 2.5
#define USER_MOTOR_FREQ_HIGH_HZ           (40.0)         // Hz   //increased to 40 ffrom 25
#define USER_MOTOR_VOLT_MIN_V             (35.0)          // Volt
#define USER_MOTOR_VOLT_MAX_V             (260.0)         // Volt



我是否可以使用相同的过程来测试我们的应用? 这是否按预期工作、或者我是否需要更改程序? 因为我们需要在终端应用中使用该电阻校准。


帮助我解决问题

提前感谢。

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

    只有具有 FAST 的 InstaSPIN-FOC 才支持这些特性。 您可以参阅 lab10以在应用程序中快速实施该过程。

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

    感谢您的回复@罗燕明

    根据您的建议、我们正在遵循 Lab10流程来计算动态电阻、对此我们有一些疑问

    A)


    B)


    2.在上图中,我们没有得到#6和#7。 RsonlineCurrent_A 将如何影响 Rs?

      我不熟悉这一点、您能否解释 INSTASPIN FOC 如何计算电阻变化?



    任何帮助都是非常感谢的



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

    有关 Rs 在线重校准的更多详细信息、请参阅 《InstaSPIN-FOC 和 InstaSPIN-MOTION 用户指南》(修订版 I)  http://www.ti.com/lit/ug/spruhj1h/spruhj1i.pdf 的第15章

    您可以按照本指南设置 Rs 在线重校准的电流。

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

    感谢您的重播

    我参考 了您建议的文档
    、即 http://www.ti.com/lit/ug/spruhj1h/spruhj1i.pdf。 然后、成功运行电机(电机上没有任何负载)。 我已记录"RsOnlineCurrent_A"和"RsOhM"。 日志值(最小值、最大值)也与此消息相关联。 它们的差异在5%以内。 "RsOnlineCurrent_A"值持续增加和减少(摆动)。  

    这是预期行为吗? 我们是否遵循了正确的方法?

    如何考虑这种持续变化的值以进行进一步处理?

    RsOnLineCurrent_A:3.853408  至  RsOnLineCurrent_A:6.285507  至 RsOnLineCurrent_A:3.853408
    RS (欧姆):          3.853438  至 Rs (欧姆):          6.285487  至  Rs (欧姆):         3.853438.

    电机运行时继续以上读数。


    任何帮助都是非常感谢的

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

    RsOnLineCurrent_A 是您在实验中作为以下代码设置的一个常量值。 您是否在示例实验中进行了任何更改? 您是指 motorVars.RsOnLine_Ohm、而不是  motorVars.RsOnLineCurrent_A? 您可以尝试增加 motorVars.RsOnLineCurrent_A 以查看发生了什么。

     motorVars.RsOnLineCurrent_A = USER_MOTOR_RES_EST_CURRENT_A;

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

    感谢

    "您是否在示例实验中进行了任何更改?"
       -否,代码未更改。 只有 电机参数会根据我们的电机进行更改。

    ===


    RsOnLine_Ohm Rs_Ohm 是结构'otorVars'的元素、如下所示。


    我们已设置 motorVars.RsOnLineCurrent_A = 2.0、如上图所示。

    观察结果:"motorVars.RsOnLine_Ohm motorVars.Rs_Ohm"值持续变化(增加和减少)。  


    需要说明:这些持续变化的值中、需要考虑哪个值作为 Rs (电阻)进行进一步处理?

    在固定 motorVars.RsOnLineCurrent_A = 2.0的情况下、 motorVars.RsOnLine_Ohm 和  motorVars.Rs_Ohm 的值从3.853408更改为  6.285507。和、这些值在运行时不稳定。

    但请就此提出建议、以便继续进行进一步处理。

    ===

    好的、正如您所建议的、我将 通过增加 motorVars.RsOnLineCurrent_A 值来再次进行检查。


    ===

    任何帮助都是非常感谢的。

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

    是否有任何负载添加电机? 您可以尝试以更高的速度在电机上添加负载、然后启用 RsOnline 功能。 本实验中的 RsOnline 在轻负载和低速条件下似乎无法正常工作。

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

    感谢 

    "您可以尝试增加 motorVars.RsOnLineCurrent_A 以查看发生了什么"
    -
    首先 、我们在  1安培负载下设置 motorVars.RsOnLineCurrent_A = 2.0。 电机在运行时发出响亮的声音。

     然后、我们设置  motorVars.RsOnLineCurrent_A = 1.0、具有相同的1安培负载。 因为根据文档"spruhj1i"  

     在第4.6.9节中、USER_MOTOR_RES_EST_CURRENT_A 更改为电机最大电流的10-20%、 在本例中、电机最大电流 为7.4安培。 好的、我们  
     
     在 
    motorVars.RsOnLineCurrent_A = 1.0且 电机以30RPM 转速运行时无任何声音的情况下进行了测试。

    -启用 RsOnline 功能并记录"motorVars.RsOnLine_Ohm 和  motorVars.Rs_Ohm"、同时以1安培负载运行电机。

    观察结果:"motorVars.RsOnLine_Ohm 和  motorVars.Rs_Ohm"值持续变化(增加和减少)。 但与以前的测试结果不完全相同。  


    我们的电机参数

    #if (USER_MOTOR == Estun_EMJ_04APB22_A)
    #define USER_MOTOR_TYPE                    MOTOR_TYPE_PM
    #define USER_MOTOR_NUM_POLE_PAIRS         (20)
    #define USER_MOTOR_Rr_Ohm                 (0.0)
    #define USER_MOTOR_Rs_Ohm                 (3.80093718)
    #define USER_MOTOR_Ls_d_H                 (0.033496008015)
    #define USER_MOTOR_Ls_q_H                 (0.033496008015)
    //#define USER_MOTOR_RATED_FLUX_VpHz        (1.0)
    #define USER_MOTOR_RATED_FLUX_VpHz        (5.5)
    #define USER_MOTOR_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR_RES_EST_CURRENT_A      (1.0)
    #define USER_MOTOR_IND_EST_CURRENT_A      (-1.0)
    #define USER_MOTOR_MAX_CURRENT_A          (25.0)
    #define USER_MOTOR_FLUX_EXC_FREQ_Hz       (20.0)
    #define USER_MOTOR_NUM_ENC_SLOTS          (2500.0)
    //#define USER_MOTOR_INERTIA_Kgm2           (1.4852)
    #define USER_MOTOR_INERTIA_Kgm2           (3.10002e-02)
    
    #define USER_MOTOR_FREQ_MIN_HZ             (10.0)           // Hz
    #define USER_MOTOR_FREQ_MAX_HZ            (24.0)         // Hz //120% of rated
    
    #define USER_MOTOR_FREQ_LOW_HZ            (2.0)          // Hz // 10% of rated
    #define USER_MOTOR_FREQ_HIGH_HZ           (20.0)         // Hz // rated
    #define USER_MOTOR_VOLT_MIN_V             (35.0)          // Volt
    #define USER_MOTOR_VOLT_MAX_V             (260.0)         // Volt
    

    下面是我在这里展示的观察结果、其中包含了一些用于理解的完整日志值

    motorVars.RsOnLine_Ohm  
      

    4.510139
    4.508787
    4.565033
    4.570541
    4.580755
    4.662916
    4.670927
    4.680490
    4.700517
    4.761750
    4.816675
    4.957566
    5.088443
    5.383283.
    5.499501
    5.511567
    5.645449
    5.775725.
    5.783436.
    5.841865
    5.972592
    6.136214.
    6.234447.
    6.332731.
    6.496453
    6.529297
    6.627380
    6.701281.
    6.856581
    6.701281.
      -
      -
      -
      -
      -
      -
      -
    4.510139

    MotorVars.Rs_Ohm   
       
    4.510089
    4.508737
    4.565073
    4.570591
    4.580805
    4.662966
    4.670977
    4.680540
    4.700517
    4.761750
    4.816725
    4.957616
    5.088483
    5.383343
    5.499551
    5.511607
    5.645489
    5.775765
    5.783476
    5.841915.
    5.972632.
    6.136254.
    6.234498
    6.332771.
    6.496493
    6.529337
    6.627430
    6.701331.
    6.856641
    6.701331.
      -
      -
      -
      -
      -
      -  
      -
    4.510089

    需要说明:这些持续变化的值中、需要考虑哪个值作为  Rs (电阻)进行进一步处理?

    谢谢

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

    您可以尝试在负载下以更高的速度运行电机、并将  motorVars.RsOnLineCurrent_A 增加到2.0A 以查看发生了什么。

    此外、您还可以尝试按 user.c 中的如下方式更改 RsOnline 参数、并根据需要调整这些参数。 该值应接近 user.c 中的默认值

    pUserParams->RsOnLine_DeltaInc_Ohm =(float32_t) 0.00002f;
    pUserParams->RsOnLine_DeltaDec_dohm =(float32_t) 0.00002f;

    pUserParams->RsOnLine_angleDelta_rad =(float32_t) 0.0005f;
    pUserParams->RsOnLine_pole rps = MATH_two_PI *(float32_t) 0.1f;