TI中文支持网
TI专业的中文技术问题搜集分享网站

InstaSPIN 电机参数识别

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

hao dai1:

bldc电机,电源输出设置16v、2A限制电流,在EST_State_Idle   EST_State_RoverL  EST_State_Rs三个阶段电机呲呲响,电源保护,这回会是什么问题呢,之前问过别人说是USER_MOTOR_RES_EST_CURRENT过小,但不断加大至4A后也无改善, 

USER_R_OVER_L_EST_FREQ_Hz降至100后前三个阶段就开始转动了。本人小白,根据用户手册调的电机参数,不知道是哪里出了问题,请各位大神分析下。

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

ming chen3:

把你的电机参数,套件,user.h都要贴出来

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

hao dai1:

使用的是8301+28027官方套件

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

Young Hu:

回复 hao dai1:

您可以先把

#define USER_MOTOR_MAX_CURRENT (15.0)

这个值设置的小一点,比如3.0

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

hao dai1:

回复 Young Hu:

谢谢您的回答,反复适配USER_MOTOR_MAX_CURRENT与USER_MOTOR_RES_EST_CURRENT无效果,还是一样的现象,

#define I_A_offset (0.838126123)#define I_B_offset (0.8377809525)#define I_C_offset (0.8416287899)

#define V_A_offset (0.5020326972)#define V_B_offset (0.4998283982)#define V_C_offset (0.4993050098)

这个偏移量的设置,会有什么效果呢?

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

Linda:

回复 hao dai1:

您好!

请问您用的是DRV8301底板+F28027F的控制卡对么?

请先确认F28027F实际使用的电压和电流采样ADC端口与程序中的设置是一致的。

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

hao dai1:

回复 Linda:

谢谢您的回答,我使用的是DRV8301+F28027F官方套件,对于adc通道检查过,是相对应的。其ia电流的进行了两次检测,

还会不会是其他的原因呢?使用的bldc航模电机

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

Linda:

回复 hao dai1:

您好!

请问F28027F的controlCARD上SW4的设置(ADC-B0, ADC-B7)是否正确?

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

hao dai1:

回复 Linda:

是这个吗?我的是launchpad

这个参数在EST_State_RoverL阶段就直接这样,导致过流,这个值是哪些参数导致的呢?求大神解析

附上user.h参数

#define USER_IQ_FULL_SCALE_FREQ_Hz (1380.0) 

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) 

#define USER_ADC_FULL_SCALE_VOLTAGE_V (26.314)

#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

#define USER_ADC_FULL_SCALE_CURRENT_A (33.0) 

#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

#define USER_NUM_CURRENT_SENSORS (3) 

#define USER_NUM_VOLTAGE_SENSORS (3) 

#define I_A_offset (1.83284533)
#define I_B_offset (1.83284533)
#define I_C_offset (1.83284533)

#define V_A_offset (0.7737494114)
#define V_B_offset (0.773749411)
#define V_C_offset (0.773749411)

#define USER_SYSTEM_FREQ_MHz (60.0)

#define USER_PWM_FREQ_kHz (30.0) 

#define USER_MAX_VS_MAG_PU (0.5)

#define USER_EST_HANDLE_ADDRESS (0x600)

#define USER_VD_SF (0.95)

#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)

#define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec * (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) 

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

#define USER_CTRL_PERIOD_sec ((float_t)USER_CTRL_PERIOD_usec/(float_t)1000000.0)

#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)

#define USER_ZEROSPEEDLIMIT (0.002) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

#define USER_FORCE_ANGLE_FREQ_Hz (1) 

#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

#define USER_MAX_ACCEL_Hzps (20.0) // 20.0 Default

#define USER_MAX_ACCEL_EST_Hzps (5.0) // 5.0 Default, don't change

#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)

#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)

#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)

#define USER_IDRATED_DELTA (0.00002)

#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)

#define USER_FLUX_FRACTION (1.0)

#define USER_POWERWARP_GAIN (1.0)

#define USER_R_OVER_L_EST_FREQ_Hz (300)

#define USER_VOLTAGE_FILTER_POLE_Hz (364.682) 

#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)

#define USER_OFFSET_POLE_rps (20.0) 

#define USER_FLUX_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DIRECTION_POLE_rps (6.0) // 6.0 Default, do not change

#define USER_SPEED_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_DCBUS_POLE_rps (100.0) // 100.0 Default, do not change

#define USER_EST_KAPPAQ (1.5) // 1.5 Default, do not change

//! \brief USER MOTOR & ID SETTINGS
// **************************************************************************

#elif (USER_MOTOR == My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.61111113609314)
#define USER_MOTOR_Ls_d (0.0002)
#define USER_MOTOR_Ls_q (0.0002)
#define USER_MOTOR_RATED_FLUX (0.0035555551294237375)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (131.0)

Linda:

回复 hao dai1:

您好!

抱歉原来以为您是用的DRV8301大电流评估板+F28027F的控制卡.

如果用的是F28027F launchpad+ DRV8301的背板,那不需要设置ADC B0/B7.

请确认电流偏置值是:

#define I_A_offset (0.838126123)#define I_B_offset (0.8377809525)#define I_C_offset (0.8416287899)

而不是:

#define I_A_offset (1.838126123)#define I_B_offset (1.8377809525)#define I_C_offset (1.8416287899)

另外请问将USER_IQ_FULL_SCALE_FREQ_Hz修改为1380.0后还有没有同时修改其他相关参数?

赞(0)
未经允许不得转载:TI中文支持网 » InstaSPIN 电机参数识别
分享到: 更多 (0)