TMS320F280039C: V/F profile setting in Universal Motor Lab Inc build2 (2024)

Jiaxin,

I only can get model number TYI5008-400Kv and MX3508-500Kv. Their information I can found already posted on the first thread.

I try to run increment build level 4 to perform motor id first. After identified motor, motor can run FAST sensorless FOC control without issue.

#elif (USER_MOTOR1 == MX3508_580Kv_24V)
// the motor type
#define USER_MOTOR1_TYPE MOTOR_TYPE_PM

// the number of pole pairs of the motor
#define USER_MOTOR1_NUM_POLE_PAIRS (7)

// the rotor resistance value of the motor, in Ohm
#define USER_MOTOR1_Rr_Ohm (NULL)

// the stator resistance value of the motor, in Ohm
#define USER_MOTOR1_Rs_Ohm (0.0349204764f)

// the stator inductance value of the motor in the direct direction, in H
#define USER_MOTOR1_Ls_d_H (1.97002482e-05f)

// the stator inductance value of the motor in the quadrature direction, in H
#define USER_MOTOR1_Ls_q_H (1.97002482e-05f)

// the rated flux value of the motor, in V/Hz
#define USER_MOTOR1_RATED_FLUX_VpHz (0.00938564725f)

// the Id rated current value of the motor, in A. Induction motors only
#define USER_MOTOR1_MAGNETIZING_CURRENT_A (NULL)

// the maximum current value for stator resistance (R_s) identification, in A
#define USER_MOTOR1_RES_EST_CURRENT_A (1.5f)

// the maximum current value to use for stator inductance identification, in A
#define USER_MOTOR1_IND_EST_CURRENT_A (-1.0f)

// the maximum current value of the motor, in A
#define USER_MOTOR1_MAX_CURRENT_A (15.0f)

// the R/L excitation frequency for motor parameters identification, in Hz
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz (60.0f)

// the inertia that describes the amount of mass, in Kg.m2
#define USER_MOTOR1_INERTIA_Kgm2 (7.06154e-06)

// the rated voltage of the motor, V
#define USER_MOTOR1_RATED_VOLTAGE_V (24.0f) // V

// the minimum rotation frequency if the motor (Hz)
#define USER_MOTOR1_FREQ_MIN_Hz (9.0f) // Hz

// the maximum/base rotation frequency of the motor (Hz)
#define USER_MOTOR1_FREQ_MAX_Hz (1600.0f) // Hz

// V/f Profile Parameters for open-loop in build level 2
// the low frequency f_low of V/f profile, in Hz,
// set to 10% of rated motor frequency
#define USER_MOTOR1_FREQ_LOW_Hz (10.0f) // Hz

// the high frequency f_high of V/f profile, in Hz,
// set to 100% of rated motor frequency
#define USER_MOTOR1_FREQ_HIGH_Hz (600.0f) // Hz

// the minimum voltage V_min of V/f profile,
// the value is suggested to set to 15% of rated motor voltage, in Volt.
#define USER_MOTOR1_VOLT_MIN_V (2.0f) // Volt

// the maximum voltage, V_max of V/f profile,
// the value is suggested to set to 100% of rated motor voltage, in Volt
#define USER_MOTOR1_VOLT_MAX_V (24.0f) // Volt

// the current increasing delta value for running the motor with force open-loop , in A
#define USER_MOTOR1_FORCE_DELTA_A (0.05f) // A

// the current increasing delta value for motor rotor alignment, in A
#define USER_MOTOR1_ALIGN_DELTA_A (0.01f) // A

// the current for running the motor with force open-loop or startup, in A
#define USER_MOTOR1_FLUX_CURRENT_A (0.5f) // A

// the current for motor rotor alignment, in A
#define USER_MOTOR1_ALIGN_CURRENT_A (3.0f) // A

// the current for start to run motor with closed-loop when the speed is
// lower than the startup setting speed, in A
#define USER_MOTOR1_STARTUP_CURRENT_A (3.0f) // A

// the current for running the motor with torque control mode when start the motor, in A.
#define USER_MOTOR1_TORQUE_CURRENT_A (4.0f) // A

// the over-current threshold for the motor, in A.
// The value can be set to 50%~300% of the rated current of the motor
#define USER_MOTOR1_OVER_CURRENT_A (10.0f) // A

// the speed threshold for start the motor, in Hz
#define USER_MOTOR1_SPEED_START_Hz (35.0f) // Hz

// the speed threshold for running the motor with force open-loop, in Hz
#define USER_MOTOR1_SPEED_FORCE_Hz (30.0f) // Hz

// the acceleration for start the motor, in Hz/s.
#define USER_MOTOR1_ACCEL_START_Hzps (10.0f) // Hz/s

// the maximum acceleration for running the motor, in Hz/s
#define USER_MOTOR1_ACCEL_MAX_Hzps (20.0f) // Hz/s

// the speed threshold for running the motor with flying start mode, in Hz
#define USER_MOTOR1_SPEED_FS_Hz (3.0f) // Hz

// the current for motor brake, in A.
#define USER_MOTOR1_BRAKE_CURRENT_A (1.0f) // A

// the duration time for motor brake, in 5ms time base
#define USER_MOTOR1_BRAKE_TIME_DELAY (12000U) // 60s/5ms

#if defined(MOTOR1_FAST)
// the slope coefficient for Ld compensation, (0.0f~0.5f)
#define USER_MOTOR1_Ls_d_COMP_COEF (0.15f) // 0.0f~0.5f

// the slope coefficient for Lq compensation, (0.0f~0.5f)
#define USER_MOTOR1_Ls_q_COMP_COEF (0.35f) // 0.0f~0.5f

// the minimum inductance coefficient for inductance compensation, (0.0f~0.5f)
#define USER_MOTOR1_Ls_MIN_NUM_COEF (0.55f) // 0.5f~1.0f

// the near zero speed limit for electrical frequency estimation, Hz.
// The flux integrator uses this limit to regulate flux integration
#define USER_MOTOR1_FREQ_NEARZEROLIMIT_Hz (5.0f) // Hz

// the waiting time without enabling the Rs online clibrartion, in 5ms
#define USER_MOTOR1_RSONLINE_WAIT_TIME (60000U) // 5min/300s at 5ms base

// the the duration time with enabling the Rs online clibrartion, in 5ms
#define USER_MOTOR1_RSONLINE_WORK_TIME (24000U) //2min/120s at 5ms base
#endif // MOTOR1_FAST

#if defined(MOTOR1_ESMO)
// Only for eSMO
// PLL (phase-locked loop)
// PID proportional, integral, derivative
// the sliding mode control maximum gain that equals to Ke*fmax/vscale/sqrt(2)*factor(max),
// tune the factor(0.1~10) based the test status
#define USER_MOTOR1_KSLIDE_MAX (0.50f)

// the sliding mode control minimum gain that equals to Ke*fmin/vscale/sqrt(2)*factor(min),
// tune the factor(0.1~10) based the test status
#define USER_MOTOR1_KSLIDE_MIN (0.10f)

// the PLL control maximum gain that equals to 2*(Damping factor)*(Natural frequency)*factor(max),
// tune the factor(0.1~10) based the test status
#define USER_MOTOR1_PLL_KP_MAX (10.0f)

// the PLL control minimum gain that equals to 2*(Damping factor)*(Natural frequency)*factor(min),
// tune the factor(0.1~5) based the test status
#define USER_MOTOR1_PLL_KP_MIN (1.50f)

// the PLL control gain adjusting coefficient that
// equals to (Kpll_max-Kpll_min)/fscale/fmax
#define USER_MOTOR1_PLL_KP_SF (5.0f)

// the phase-locked loop control integration gain that
// equals to (Natural frequency)*(Natural frequency)*Ts
#define USER_MOTOR1_PLL_KI (2.8125E-06f) // Not used, reserve

// the threshold of the estimated current error for sliding mode control that
// equals to (motor maximum BEMF voltage / rated voltage), (0.3~0.5 )
#define USER_MOTOR1_BEMF_THRESHOLD (0.5f)

// the parameters of the low-pass filter for the estimated back EMF,
// Kslf equal to (fc*2*PI()*Ts), (0.5~2.5)
#define USER_MOTOR1_BEMF_KSLF_FC_SF (2.0f)

// the offset coefficient to compensate the error by using
// the low-pass filter that equals to 1.0, or [0.5~1.5]
#define USER_MOTOR1_THETA_OFFSET_SF (1.0f)

// the cut-off frequency of the low-pass filter to calculate the estimated speed, (100~400)
#define USER_MOTOR1_SPEED_LPF_FC_Hz (200.0f)
#endif // MOTOR1_ESMO

// Current and Speed PI Regulators Tuning Coefficient
// the low speed threshold for adjusting the Kp and Ki of the speed PI regulator
#define USER_MOTOR1_GAIN_SPEED_LOW_Hz (60.0f) // 10%~50% of the rated speed

// the high speed threshold for adjusting the Kp and Ki of the speed PI regulator
#define USER_MOTOR1_GAIN_SPEED_HIGH_Hz (150.0f) // 50%~100% of the rated speed

// the gain coefficient to adjust the Kp of the speed PI regulator for startup
#define USER_MOTOR1_KP_SPD_START_SF (1.5f) // 0.1~100.0

// the gain coefficient to adjust the Ki of the speed PI regulator for startup
#define USER_MOTOR1_KI_SPD_START_SF (1.5f) // 0.1~10.0

// the low gain coefficient to adjust the Kp of the speed PI regulator
#define USER_MOTOR1_KP_SPD_LOW_SF (2.0f) // 0.1~100.0

// the low gain coefficient to adjust the Ki of the speed PI regulator
#define USER_MOTOR1_KI_SPD_LOW_SF (2.0f) // 0.1~10.0

// the high gain coefficient to adjust the Kp of the speed PI regulator
#define USER_MOTOR1_KP_SPD_HIGH_SF (1.0f) // 0.1~100.0

// the high gain coefficient to adjust the Ki of the speed PI regulator
#define USER_MOTOR1_KI_SPD_HIGH_SF (1.0f) // 0.1~10.0

// the low current threshold to adjust the Kp and Ki of the q-axis current PI regulator
#define USER_MOTOR1_GAIN_IQ_LOW_A (2.0f) // 10%~50% of the rated current

// the high current threshold to adjust the Kp and Ki of the q-axis current PI regulator
#define USER_MOTOR1_GAIN_IQ_HIGH_A (6.0f) // 50%~100% of the rated current

// the gain coefficient to adjust the Kp of the q-axis current PI regulator for startup
#define USER_MOTOR1_KP_IQ_START_SF (1.5f) // 0.1~10.0

// the gain coefficient to adjust the Ki of the q-axis current PI regulator for startup
#define USER_MOTOR1_KI_IQ_START_SF (1.5f) // 0.1~10.0

// the low gain coefficient to adjust the Kp of the q-axis current PI regulator
#define USER_MOTOR1_KP_IQ_LOW_SF (2.0f) // 0.1~10.0

// the low gain coefficient to adjust the Ki of the q-axis current PI regulator
#define USER_MOTOR1_KI_IQ_LOW_SF (2.0f) // 0.1~10.0

// the high gain coefficient to adjust the Kp of the d-axis current PI regulator
#define USER_MOTOR1_KP_IQ_HIGH_SF (1.0f) // 0.1~10.0

// the high gain coefficient to adjust the Ki of the d-axis current PI regulator
#define USER_MOTOR1_KI_IQ_HIGH_SF (1.0f) // 0.1~10.0

// the gain coefficient to adjust the Kp of the q-axis current PI regulator
#define USER_MOTOR1_KP_ID_SF (1.0f) // 0.1~10.0

// the gain coefficient to adjust the Ki of the q-axis current PI regulator
#define USER_MOTOR1_KI_ID_SF (1.0f) // 0.1~10.0

However, I used identified parameter and retest incremental build level2. I got OCP event. the current waveform asTMS320F280039C: V/F profile setting in Universal Motor Lab Inc build2 (1)

The same happened on TYI5008-400Kv motor. Incremental build level4 can run successfully but faild with level 2.

Here is the identified parameters and current capture.

#elif (USER_MOTOR1 == TYI5008_400Kv_24V)
// the motor type
#define USER_MOTOR1_TYPE MOTOR_TYPE_PM

// the number of pole pairs of the motor
#define USER_MOTOR1_NUM_POLE_PAIRS (7)

// the rotor resistance value of the motor, in Ohm
#define USER_MOTOR1_Rr_Ohm (NULL)

// the stator resistance value of the motor, in Ohm
#define USER_MOTOR1_Rs_Ohm (0.0134197949f)

// the stator inductance value of the motor in the direct direction, in H
#define USER_MOTOR1_Ls_d_H (1.07000251e-05f)

// the stator inductance value of the motor in the quadrature direction, in H
#define USER_MOTOR1_Ls_q_H (1.07000251e-05f)

// the rated flux value of the motor, in V/Hz
#define USER_MOTOR1_RATED_FLUX_VpHz (0.0131569766f)

// the Id rated current value of the motor, in A. Induction motors only
#define USER_MOTOR1_MAGNETIZING_CURRENT_A (NULL)

// the maximum current value for stator resistance (R_s) identification, in A
#define USER_MOTOR1_RES_EST_CURRENT_A (1.5f)

// the maximum current value to use for stator inductance identification, in A
#define USER_MOTOR1_IND_EST_CURRENT_A (-1.0f)

// the maximum current value of the motor, in A
#define USER_MOTOR1_MAX_CURRENT_A (15.0f)

// the R/L excitation frequency for motor parameters identification, in Hz
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz (60.0f)

// the inertia that describes the amount of mass, in Kg.m2
#define USER_MOTOR1_INERTIA_Kgm2 (7.06154e-06)

// the rated voltage of the motor, V
#define USER_MOTOR1_RATED_VOLTAGE_V (24.0f) // V

// the minimum rotation frequency if the motor (Hz)
#define USER_MOTOR1_FREQ_MIN_Hz (9.0f) // Hz

// the maximum/base rotation frequency of the motor (Hz)
#define USER_MOTOR1_FREQ_MAX_Hz (1120.0f) // Hz

// V/f Profile Parameters for open-loop in build level 2
// the low frequency f_low of V/f profile, in Hz,
// set to 10% of rated motor frequency
#define USER_MOTOR1_FREQ_LOW_Hz (10.0f) // Hz

// the high frequency f_high of V/f profile, in Hz,
// set to 100% of rated motor frequency
#define USER_MOTOR1_FREQ_HIGH_Hz (350.0f) // Hz

// the minimum voltage V_min of V/f profile,
// the value is suggested to set to 15% of rated motor voltage, in Volt.
#define USER_MOTOR1_VOLT_MIN_V (2.0f) // Volt

// the maximum voltage, V_max of V/f profile,
// the value is suggested to set to 100% of rated motor voltage, in Volt
#define USER_MOTOR1_VOLT_MAX_V (24.0f) // Volt

// the current increasing delta value for running the motor with force open-loop , in A
#define USER_MOTOR1_FORCE_DELTA_A (0.05f) // A

// the current increasing delta value for motor rotor alignment, in A
#define USER_MOTOR1_ALIGN_DELTA_A (0.01f) // A

// the current for running the motor with force open-loop or startup, in A
#define USER_MOTOR1_FLUX_CURRENT_A (0.5f) // A

// the current for motor rotor alignment, in A
#define USER_MOTOR1_ALIGN_CURRENT_A (3.0f) // A

// the current for start to run motor with closed-loop when the speed is
// lower than the startup setting speed, in A
#define USER_MOTOR1_STARTUP_CURRENT_A (3.0f) // A

// the current for running the motor with torque control mode when start the motor, in A.
#define USER_MOTOR1_TORQUE_CURRENT_A (4.0f) // A

// the over-current threshold for the motor, in A.
// The value can be set to 50%~300% of the rated current of the motor
#define USER_MOTOR1_OVER_CURRENT_A (10.0f) // A

// the speed threshold for start the motor, in Hz
#define USER_MOTOR1_SPEED_START_Hz (35.0f) // Hz

// the speed threshold for running the motor with force open-loop, in Hz
#define USER_MOTOR1_SPEED_FORCE_Hz (30.0f) // Hz

// the acceleration for start the motor, in Hz/s.
#define USER_MOTOR1_ACCEL_START_Hzps (10.0f) // Hz/s

// the maximum acceleration for running the motor, in Hz/s
#define USER_MOTOR1_ACCEL_MAX_Hzps (20.0f) // Hz/s

// the speed threshold for running the motor with flying start mode, in Hz
#define USER_MOTOR1_SPEED_FS_Hz (3.0f) // Hz

// the current for motor brake, in A.
#define USER_MOTOR1_BRAKE_CURRENT_A (1.0f) // A

// the duration time for motor brake, in 5ms time base
#define USER_MOTOR1_BRAKE_TIME_DELAY (12000U) // 60s/5ms

#if defined(MOTOR1_FAST)
// the slope coefficient for Ld compensation, (0.0f~0.5f)
#define USER_MOTOR1_Ls_d_COMP_COEF (0.15f) // 0.0f~0.5f

// the slope coefficient for Lq compensation, (0.0f~0.5f)
#define USER_MOTOR1_Ls_q_COMP_COEF (0.35f) // 0.0f~0.5f

// the minimum inductance coefficient for inductance compensation, (0.0f~0.5f)
#define USER_MOTOR1_Ls_MIN_NUM_COEF (0.55f) // 0.5f~1.0f

// the near zero speed limit for electrical frequency estimation, Hz.
// The flux integrator uses this limit to regulate flux integration
#define USER_MOTOR1_FREQ_NEARZEROLIMIT_Hz (5.0f) // Hz

// the waiting time without enabling the Rs online clibrartion, in 5ms
#define USER_MOTOR1_RSONLINE_WAIT_TIME (60000U) // 5min/300s at 5ms base

// the the duration time with enabling the Rs online clibrartion, in 5ms
#define USER_MOTOR1_RSONLINE_WORK_TIME (24000U) //2min/120s at 5ms base
#endif // MOTOR1_FAST

#if defined(MOTOR1_ESMO)
// Only for eSMO
// PLL (phase-locked loop)
// PID proportional, integral, derivative
// the sliding mode control maximum gain that equals to Ke*fmax/vscale/sqrt(2)*factor(max),
// tune the factor(0.1~10) based the test status
#define USER_MOTOR1_KSLIDE_MAX (0.50f)

// the sliding mode control minimum gain that equals to Ke*fmin/vscale/sqrt(2)*factor(min),
// tune the factor(0.1~10) based the test status
#define USER_MOTOR1_KSLIDE_MIN (0.10f)

// the PLL control maximum gain that equals to 2*(Damping factor)*(Natural frequency)*factor(max),
// tune the factor(0.1~10) based the test status
#define USER_MOTOR1_PLL_KP_MAX (10.0f)

// the PLL control minimum gain that equals to 2*(Damping factor)*(Natural frequency)*factor(min),
// tune the factor(0.1~5) based the test status
#define USER_MOTOR1_PLL_KP_MIN (1.50f)

// the PLL control gain adjusting coefficient that
// equals to (Kpll_max-Kpll_min)/fscale/fmax
#define USER_MOTOR1_PLL_KP_SF (5.0f)

// the phase-locked loop control integration gain that
// equals to (Natural frequency)*(Natural frequency)*Ts
#define USER_MOTOR1_PLL_KI (2.8125E-06f) // Not used, reserve

// the threshold of the estimated current error for sliding mode control that
// equals to (motor maximum BEMF voltage / rated voltage), (0.3~0.5 )
#define USER_MOTOR1_BEMF_THRESHOLD (0.5f)

// the parameters of the low-pass filter for the estimated back EMF,
// Kslf equal to (fc*2*PI()*Ts), (0.5~2.5)
#define USER_MOTOR1_BEMF_KSLF_FC_SF (2.0f)

// the offset coefficient to compensate the error by using
// the low-pass filter that equals to 1.0, or [0.5~1.5]
#define USER_MOTOR1_THETA_OFFSET_SF (1.0f)

// the cut-off frequency of the low-pass filter to calculate the estimated speed, (100~400)
#define USER_MOTOR1_SPEED_LPF_FC_Hz (200.0f)
#endif // MOTOR1_ESMO

// Current and Speed PI Regulators Tuning Coefficient
// the low speed threshold for adjusting the Kp and Ki of the speed PI regulator
#define USER_MOTOR1_GAIN_SPEED_LOW_Hz (60.0f) // 10%~50% of the rated speed

// the high speed threshold for adjusting the Kp and Ki of the speed PI regulator
#define USER_MOTOR1_GAIN_SPEED_HIGH_Hz (150.0f) // 50%~100% of the rated speed

// the gain coefficient to adjust the Kp of the speed PI regulator for startup
#define USER_MOTOR1_KP_SPD_START_SF (1.5f) // 0.1~100.0

// the gain coefficient to adjust the Ki of the speed PI regulator for startup
#define USER_MOTOR1_KI_SPD_START_SF (1.5f) // 0.1~10.0

// the low gain coefficient to adjust the Kp of the speed PI regulator
#define USER_MOTOR1_KP_SPD_LOW_SF (2.0f) // 0.1~100.0

// the low gain coefficient to adjust the Ki of the speed PI regulator
#define USER_MOTOR1_KI_SPD_LOW_SF (2.0f) // 0.1~10.0

// the high gain coefficient to adjust the Kp of the speed PI regulator
#define USER_MOTOR1_KP_SPD_HIGH_SF (1.0f) // 0.1~100.0

// the high gain coefficient to adjust the Ki of the speed PI regulator
#define USER_MOTOR1_KI_SPD_HIGH_SF (1.0f) // 0.1~10.0

// the low current threshold to adjust the Kp and Ki of the q-axis current PI regulator
#define USER_MOTOR1_GAIN_IQ_LOW_A (2.0f) // 10%~50% of the rated current

// the high current threshold to adjust the Kp and Ki of the q-axis current PI regulator
#define USER_MOTOR1_GAIN_IQ_HIGH_A (6.0f) // 50%~100% of the rated current

// the gain coefficient to adjust the Kp of the q-axis current PI regulator for startup
#define USER_MOTOR1_KP_IQ_START_SF (1.5f) // 0.1~10.0

// the gain coefficient to adjust the Ki of the q-axis current PI regulator for startup
#define USER_MOTOR1_KI_IQ_START_SF (1.5f) // 0.1~10.0

// the low gain coefficient to adjust the Kp of the q-axis current PI regulator
#define USER_MOTOR1_KP_IQ_LOW_SF (2.0f) // 0.1~10.0

// the low gain coefficient to adjust the Ki of the q-axis current PI regulator
#define USER_MOTOR1_KI_IQ_LOW_SF (2.0f) // 0.1~10.0

// the high gain coefficient to adjust the Kp of the d-axis current PI regulator
#define USER_MOTOR1_KP_IQ_HIGH_SF (1.0f) // 0.1~10.0

// the high gain coefficient to adjust the Ki of the d-axis current PI regulator
#define USER_MOTOR1_KI_IQ_HIGH_SF (1.0f) // 0.1~10.0

// the gain coefficient to adjust the Kp of the q-axis current PI regulator
#define USER_MOTOR1_KP_ID_SF (1.0f) // 0.1~10.0

// the gain coefficient to adjust the Ki of the q-axis current PI regulator
#define USER_MOTOR1_KI_ID_SF (1.0f) // 0.1~10.0

TMS320F280039C: V/F profile setting in Universal Motor Lab Inc build2 (2)

Both of these two case can not be solved by just change over current limitation.

Any parameter can be used to decrease the inrush current in V/F open loop control?

Regards

Andre

TMS320F280039C: V/F profile setting in Universal Motor Lab Inc build2 (2024)
Top Articles
Latest Posts
Article information

Author: Francesca Jacobs Ret

Last Updated:

Views: 5880

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Francesca Jacobs Ret

Birthday: 1996-12-09

Address: Apt. 141 1406 Mitch Summit, New Teganshire, UT 82655-0699

Phone: +2296092334654

Job: Technology Architect

Hobby: Snowboarding, Scouting, Foreign language learning, Dowsing, Baton twirling, Sculpting, Cabaret

Introduction: My name is Francesca Jacobs Ret, I am a innocent, super, beautiful, charming, lucky, gentle, clever person who loves writing and wants to share my knowledge and understanding with you.