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.

[参考译文] LAUNCHXL-F280049C:SDK (FOC)状态更改

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/890994/launchxl-f280049c-sdk-foc-state-changes

器件型号:LAUNCHXL-F280049C

SDK (FOC)状态机似乎没有任何优势、对 x49c 硬件非常粗鲁! 没有软启动(RAMP_UP)状态机粗鲁地限制进入 EST_State_RS 的相电流。

问题是2倍、因为它需要过多的 ADC 通道输入电容来抵消瞬时启动周期电流尖峰。  

超过2200pF 的低通滤波器只是一种粗略的计数器测量、它会导致电流波峰峰峰值的峰值(瞬态)挂起时间。 我们在其他 HV 系统中添加(0)电容、因为预计外部差分放大器会产生1nF 负载。 任何添加低通滤波器电容的尝试都会改变电流放大器的精度并为一方带来瞬态挂起时间。   

也就是说 、EST_State_ROVERL 和 EST_State_RS 之间为什么没有上升等待时间? 这几种粗略的方法是否会导致本实验中某一点的所有情况都出现下降?

为什么 EST_State_CONSTSPEED 和 EST_State_RatedFLUX_OL 之间没有软电流启动?

是否可以添加软启动(WAIT_TIME) BEGIN EST_State_RS 以阻止其满贯 CCMPS 的 DAC? 则可以使用合理的旁路滤波器值、而不是2200pF。 此外、这一缺失的等待时间似乎也会导致 CMPSS DACA/B 滤波器出现重大问题、需要更高的值来抵消在状态机进一步变为电机 ID 过程之间发生的瞬态尖峰。  

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

    BTW:唯一的 WA 是将 USER_MOTOR_RES_EST_CURRENT_A 增加 到更高的值、即 R/L 和 RS 之间的值为9.2A >10.2A。  

    然而、CONSTSPEED 和 OL 状态变为 EST_State_RatedFLUX 之间的等待时间始终会触发 ePWM 故障 USER_MOTOR_FLASH_EXC_FREQ_Hz = 50Hz。

    然后、计数器在 11.2A > 12.25A 范围内测量 USER_MOTOR_MAX_CURRENT_A、并且几乎始终触发 EPWM 故障。

    SW 不能仅仅在这些状态测试开始时将 PWM 占空比降低高达50%、并产生电流尖峰!   

    然后设置 USER_MOTOR_RES_EST_CURRENT_A = 12.2A、USER_MOTOR_MAX_CURRENT_A = 13.2A、USER_MOTOR_FLASH_EXC_FREQ_Hz = 60Hz、软件在 短短2秒内进入 EST_State_RATEDFLUX 并从极高的电流峰值13.5A 触发 OC 故障。

    问题似乎是状态变化之间缺少软启动、PWM 同步很容易在没有极高占空比的情况下丢失。   

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

    状态更改机器代码会忽略(user.c)中为每个状态设置的等待时间。 由于实时调试保持在 rampup 上、时间等待从未过期、因此似乎有自己的想法。 然而、is05_motor_id.c 已启动下一个状态更改并将电流升高至峰值。

    如果我们将下面的设置为30、则在 estWaitTime[]过期之前、下一个状态(EST_State_RatedFLUX)开始运行。 因此、一个状态最终会进入下一个状态变化、从而导致状态过度运行。

    pUserParams->estWaitTime[EST_State_RAMPUP]=
    (int32_t)((USER_MOTOR_FLUX_EXC_FREQ_Hz / USER_MAX_ACCEL_Hzps +
    (float32_t) 30.0)* USER_EST_FREQ_Hz); 

    下面的 while 循环的问题是无法与 mainISR()中断保持同步。  

    其他 //无估算器错误
    {
    motorVars.ID_TARGET_A = EST_getIntValue_ID_A (estHandle);
    
    flagEstStateChanged = EST_updateState (estHandle、
    motorVars.ID_TARGET_A);
    /*估算器当前状态已更改*/
    if (flagEstStateChanged == true)
    { 

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

    EST_State_RAMPUP 大于20时、estWaitTime[n]为什么会导致运行状态过载。 然而、<20 estWaitTime[EST_State_RAMPUP]和运行时的状态不太明显、但仍然会发生。

    很明显、SDK (FOC)状态机中存在一些错误。 和2个中断计数对状态机 estWaitTime[EST_NUMSTATES]中的抽取时间没有帮助。

    也许魔术 TI 可以为我们提供有关为何状态机中出现过度运行的线索?

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

    状态 RatedFlux 最终显示了直流电源电压随电机噪声的变化情况。 为什么额定磁通要求大于10A 以防止转子失速(65Hz)? 这通常会在 CRITY_OL/磁通等待时间的极起始时间触发 CMPSSx DCAA/B 故障。 跳闸电流尖峰不会以20Hz 的速度出现、并且以某种方式、BoosXL 确定了失速转子的正确 LC 磁通不应出现。 奇怪的是、电机识别为真后、电机将在线加速。 然而、20Hz 后、使用 INA240A1 40mV/A 电流监视器完全无法在线加速、这仍然是一个令人困惑的秘密!

      

      

     

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

    状态和运行频率将在识别过程中自动设置、您只需根据电机规格在 user.h 中定义识别变量即可。 您可以设置和调整这些识别变量、以便在 LS 和磁通识别时使电机平稳运行。 当然、您必须确保电流和电压感应信号有利于电机识别和运行。 如果不是、请运行实验 is02/03/04以首先验证您的硬件板。