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.

motor start quickly and smoothly

1、I know pUserParams->ctrlWaitTime[CTRL_State_OffLine] = (uint_least32_t)( 5.0 * USER_CTRL_FREQ_Hz); Influencing the Start-up Delay Time of Motor. The default value is 5 seconds.

What is the minimum start-up delay?

 

2、gMotorVars.MaxAccel_krpmps, How to Affect Motor Starting?

gMotorVars.MaxAccel_krpmps impact does it have on On-load and no-load startups?

 

3、How to configure the following parameters to make the motor start quickly and smoothly?

pUserParams->ctrlWaitTime[CTRL_State_Error] = 0;
pUserParams->ctrlWaitTime[CTRL_State_Idle] = 0;
pUserParams->ctrlWaitTime[CTRL_State_OffLine] = (uint_least32_t)( 5.0 * USER_CTRL_FREQ_Hz);
pUserParams->ctrlWaitTime[CTRL_State_OnLine] = 0;

pUserParams->estWaitTime[EST_State_Error] = 0;
pUserParams->estWaitTime[EST_State_Idle] = 0;
pUserParams->estWaitTime[EST_State_RoverL] = (uint_least32_t)( 8.0 * USER_EST_FREQ_Hz);
pUserParams->estWaitTime[EST_State_Rs] = 0;
pUserParams->estWaitTime[EST_State_RampUp] = (uint_least32_t)((5.0 + USER_MOTOR_FLUX_EST_FREQ_Hz / USER_MAX_ACCEL_EST_Hzps) * USER_EST_FREQ_Hz);
pUserParams->estWaitTime[EST_State_IdRated] = (uint_least32_t)(30.0 * USER_EST_FREQ_Hz);
pUserParams->estWaitTime[EST_State_RatedFlux_OL] = (uint_least32_t)( 0.2 * USER_EST_FREQ_Hz);
pUserParams->estWaitTime[EST_State_RatedFlux] = 0;
pUserParams->estWaitTime[EST_State_RampDown] = (uint_least32_t)( 2.0 * USER_EST_FREQ_Hz);
pUserParams->estWaitTime[EST_State_LockRotor] = 0;
pUserParams->estWaitTime[EST_State_Ls] = 0;
pUserParams->estWaitTime[EST_State_Rr] = (uint_least32_t)(20.0 * USER_EST_FREQ_Hz);
pUserParams->estWaitTime[EST_State_MotorIdentified] = 0;
pUserParams->estWaitTime[EST_State_OnLine] = 0;

pUserParams->FluxWaitTime[EST_Flux_State_Error] = 0;
pUserParams->FluxWaitTime[EST_Flux_State_Idle] = 0;
pUserParams->FluxWaitTime[EST_Flux_State_CL1] = (uint_least32_t)(10.0 * USER_EST_FREQ_Hz);
pUserParams->FluxWaitTime[EST_Flux_State_CL2] = (uint_least32_t)( 0.2 * USER_EST_FREQ_Hz);
pUserParams->FluxWaitTime[EST_Flux_State_Fine] = (uint_least32_t)( 4.0 * USER_EST_FREQ_Hz);
pUserParams->FluxWaitTime[EST_Flux_State_Done] = 0;

pUserParams->LsWaitTime[EST_Ls_State_Error] = 0;
pUserParams->LsWaitTime[EST_Ls_State_Idle] = 0;
pUserParams->LsWaitTime[EST_Ls_State_RampUp] = (uint_least32_t)( 3.0 * USER_EST_FREQ_Hz);
pUserParams->LsWaitTime[EST_Ls_State_Init] = (uint_least32_t)( 3.0 * USER_EST_FREQ_Hz);
pUserParams->LsWaitTime[EST_Ls_State_Coarse] = (uint_least32_t)( 0.2 * USER_EST_FREQ_Hz);
pUserParams->LsWaitTime[EST_Ls_State_Fine] = (uint_least32_t)(30.0 * USER_EST_FREQ_Hz);
pUserParams->LsWaitTime[EST_Ls_State_Done] = 0;

pUserParams->RsWaitTime[EST_Rs_State_Error] = 0;
pUserParams->RsWaitTime[EST_Rs_State_Idle] = 0;
pUserParams->RsWaitTime[EST_Rs_State_RampUp] = (uint_least32_t)( 1.0 * USER_EST_FREQ_Hz);
pUserParams->RsWaitTime[EST_Rs_State_Coarse] = (uint_least32_t)( 2.0 * USER_EST_FREQ_Hz);
pUserParams->RsWaitTime[EST_Rs_State_Fine] = (uint_least32_t)( 7.0 * USER_EST_FREQ_Hz);
pUserParams->RsWaitTime[EST_Rs_State_Done] = 0;

  • 1. It's for ADC (current/voltage) offset calibration, you can change it to ZERO if you disable offset calibration. If not, that should be more than 2s.
    2. It's acceleration value for speed control. Not too much impaction on start, you may set a lower value for start, and then change it to the value your system required.
    3. Don't need to change any values, these values are for motor parameters identification or Rs recalibration. That's no for motor start and running.
  • 1. If disable offset calibration,motor can not start,How can we make the motor run?
    2. Acceleration value for speed control. What is the appropriate value when the motor starts? Is there a recommended range? For example, what is the value of speed 300-1000rpm? What is the value of speed 1000-10000 rpm? What is the value of the speed between 10 000 rpm and 50 000 rpm?

    What is the starting value of 300-1000rpm load with 3 times rated torque?
  • 1. Set correct ADC current and voltage offset in user.h, that can be got by enabling offset first and copy the offset value to user.h. And then set "gMotorVars.Flag_enableOffsetcalc" to "false". And make sure that below code should be enabled prior to running the motor in closed loop.
    CTRL_setFlag_enableOffset(ctrlHandle,gMotorVars.Flag_enableOffsetcalc);
    2. Not a critical recommended value, that depends on your motor and system, you may tune the value based on your tested result.
    3. It's very tough for sensorless control, you might try sensor FOC if you have to get such performance.