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.

[参考译文] C2000WARE-MOTORCONTROL-SDK:Motor Control SDK。 即使在 PWM 被禁用时、估算器也一直在尝试计算角度。

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1381188/c2000ware-motorcontrol-sdk-motor-control-sdk-the-estimator-keeps-trying-to-calculate-the-angle-even-when-the-pwm-is-disabled

器件型号:C2000WARE-MOTORCONTROL-SDK

工具与软件:

尊敬的支持团队:

 我正在基于 I07_SPEED_CONTROL_eabi 以无传感器配置运行程序。 我要尝试实现的是停止并重新启动电机、但同时 在电机未旋转时禁用 PWM 输出。 我面临的问题是估算器会继续尝试估算角度、这导致我尝试重新启动电机时角度错误并且一开始就出现急动。  

 我已经尝试禁用轨迹和估算器本身、但是禁用估算器将角度设置为零。 那么、问题是: 在为下一次运行保留角度的同时禁用 PWM 和估算器输出的正确方法是什么?

 或者、估算器是否可以在轴停止时施加扭矩之前计算角度?

此致、

  Victor Munoz

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

    重新启动电机时、角度将被重置并估算。 如示例所示、您无需禁用估算器、只需禁用 PWM 输出并停止电机即可。

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

    您好、Yanming、

    我知道在重新启动电机时会重置并重新估算角度。 但是、我仍然遇到电机在启动时会因角度重置为零而抖动的问题、这会给硬件增加不必要的应力。 我花了大量的时间来审查源代码和文档、但文档不完整、并且代码中有明显的 IP 限制区。

    我已经测试了在禁用 PWM 时通过禁用控制环路来保留角度、该方法已证明有效:

    __interrupt void mainISR(void){
       ...
       if(motorVars.flagEnableOffsetCalc == false && HAL_getPwmEnableStatus(halHandle) == true);
           ...
       }
       ...
       return;
    }

    如果您直接建议此方法是否符合系统的最佳实践、或是否有替代解决方案可在电机重新启动期间实现更平稳的运行、我将不胜感激。 具体而言、我感兴趣的是是否有推荐的在电机停止时保持角度的方法、还是由估算器在施加扭矩之前准确计算角度的方法。

    如果有任何进一步的见解、将不胜感激。

    此致、
    Victor Munoz

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="314402" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1381188/c2000ware-motorcontrol-sdk-motor-control-sdk-the-estimator-keeps-trying-to-calculate-the-angle-even-when-the-pwm-is-disabled/5319563 #5319563"]但是、由于角度重置为零、我仍然遇到电机在启动时急冲的问题、该问题会给硬件带来不必要的应力。

    这是什么意思 ?电机在启动时会抖动? 您是否有任何测得的电流波形来展示这一点? 您正在使用什么应用电机?

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

    您好、Yanming、

    这是我的电机定义:

    #define USER_MOTOR_TYPE                   MOTOR_TYPE_PM  // Ok
    #define USER_MOTOR_NUM_POLE_PAIRS         (8)            // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only
    #define USER_MOTOR_Rr_Ohm                 (NULL)
    #define USER_MOTOR_Rs_Ohm                 (1.9428525)     // Datasheet Rs:=1.8ÎCopyright
    #define USER_MOTOR_Ls_d_H                 (0.0144718466)    // Datasheet Ls:=18mH
    #define USER_MOTOR_Ls_q_H                 (0.0144718466)    // Datasheet Ls:=18mH
    #define USER_MOTOR_RATED_FLUX_VpHz        (6.97267914)     //  sqrt(2/3)* Rated V (line-line) / Rated Freq (Hz)   : 0.8165*360.0/25.6 = 11.482 [V*s], [V/Hz] = 1.8274 [Wb]
    #define USER_MOTOR_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR_RES_EST_CURRENT_A      (1.45)          // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current
    #define USER_MOTOR_IND_EST_CURRENT_A      (-1.45)         // not used for induction
    #define USER_MOTOR_MAX_CURRENT_A          (14.5)          // Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller
    #define USER_MOTOR_FLUX_EXC_FREQ_Hz       (20)            // During Motor ID, maximum commanded speed (Hz, float). Should always use 5 Hz for Induction.
    #define USER_MOTOR_INERTIA_Kgm2           (0.2f)
    
    #define USER_MOTOR_DECEL_BRAKE_ENGAGE_HZ  (0.01f)
    #define USER_MOTOR_FREQ_LOW_HZ            (2.56)          // Ok - Hz - suggested to set to 10% of rated motor frequency
    #define USER_MOTOR_FREQ_HIGH_HZ           (25.6)          // Ok - Hz - suggested to set to 100% of rated motor frequency
    #define USER_MOTOR_FREQ_MAX_HZ            (30.72)         // Ok - Hz - suggested to set to 120% of rated motor frequency
    #define USER_MOTOR_VOLT_MIN_V             (72)            // Ok - (90V Emergency) Volt - suggested to set to ~20% of rated motor voltage
    #define USER_MOTOR_VOLT_MAX_V             (360)           // Ok - Volt - suggested to set to 100% of rated motor voltage

    急冲是指电机轴不受控制的瞬态加速、这种加速会导致电机轴以随机方向旋转几度。 此旋转角度也是可变的、但通常小于5到10度(机械角度)。

    一个典型周期为:

    • 启用 PWM
    • 将基准设定为0Hz (急冲在这里被注意到)
    • 将基准设置为7Hz  
    • 设置基准 t0 0Hz
    • 禁用 PWM
    • 启用 PWM 并重复该周期
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有电机相电流波形可以显示上述问题?

    如果您使用的是不带 IPD 的无传感器 FOC (如电机控制 SDK 中的 InstaSPIN-FOC 实验室)、则在启动电机时、具有振动或反向的急动应该正常、并且无传感器 FOC 也无法使电机以零速或极低的速度运行。 如果您需要以零速或低速运行电机、您可能必须使用配有传感器的 FOC 来运行电机。