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

针对InstaSPIN-FOC在Motor ID(参数辨识)过程中User.h配置探讨(一)

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

Eric Ma:

非常不错的总结。

首先,合理的配置user.h中的参数,肯定会对参数识别或是对电机控制有影响。如电阻识别的电流,电感识别的电流,以及识别的时候电机要运转到哪个转速。通过实际电机调试,可以慢慢积累一些经验。

其次,关于对flux比较大的情况,出现报错,是因为程序中初始化的时候增加了一些判断代码,去提醒客户是否在配置上有出错的地方。按这个例子,之所以出错,原因是因为你用的电机反电动势比较大,输入的电压又太小,所以程序担心电机带动不起来,所以就报错。

ERIC

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

ming chen3:

回复 Eric Ma:

非常感谢您的解答~对于InstaSPIN-FOC来说电流环和速度环都是基于常规PID算法,尤其是电流环参数都是依赖于电机参数辨识结果运算得出。所以觉得最好还是合理配置User.h文件,反复实验提高参数辨识的精度(对于使用者也只能够做这些了)。最后在对电流环和速度还PID参数进行微调,可以提高系统性能。这里还有个问题向您请教:TI的GUI Composer有两种方式:Standalone:就是配置好参数文件user.h,然后用CCS编译生成appProgram.out文件,放到GUI目录下,就可以运行GUI(自动下载appProgram.out)进行调试。inside of CCS :我的理解应该就是InstaSPIN-foc算法的在线调试。可以自己编程调用API函数。

我的疑问:个人觉得使用InstantSPIN-foc算法进行项目开发,应该不会选择选择使用TI的GUI吧,而是自己编程调用API方式,针对项目需求还要完成附加功能算法的设计。也就是说对于项目开发(control design),应该是使用Inside of CCS的方式。而使用TI的GUI Composer 可以帮助初学者快速旋转电机和test our  board。

我不知道我的上述理解是否有误,为什么TI GUI QSG上推荐使用Standalone 方式进行Control design,推荐使用Inside of CCS方式评估 InstaSPIN-foc。感觉正好与我的理解相反,希望您能帮忙解释一些。谢谢~

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

woods yu:

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8301B

我在做参数辨识时,Ls每次测出来都不一样,变化比较大,Rs,Flux比较稳定,请问这种情况可能是哪里设置有问题?

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

ming chen3:

回复 woods yu:

首先你的电机是什么电机,高速伺服电机还是低速的力矩电机还是别的什么,假如你的电机电感比较小,误差会比较大,电感这个东西本身辨识起来自感和互感都存在所以辨识起来精度都不会太高的。

当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

ming chen3:

回复 woods yu:

方便的话,可以把你的电机参数和user.h文件关键参数贴出来分析下~

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

hao dai1:

回复 ming chen3:

#define USER_MOTOR_TYPE MOTOR_Type_Pm#define USER_MOTOR_NUM_POLE_PAIRS (7)#define USER_MOTOR_Rr (NULL)#define USER_MOTOR_Rs (1.679999828338623)#define USER_MOTOR_Ls_d (NULL)#define USER_MOTOR_Ls_q (NULL)#define USER_MOTOR_RATED_FLUX (0.01599999889731407)#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)#define USER_MOTOR_RES_EST_CURRENT (0.5)#define USER_MOTOR_IND_EST_CURRENT (-0.5)#define USER_MOTOR_MAX_CURRENT (20.0)#define USER_MOTOR_FLUX_EST_FREQ_Hz (630.0)

 350kv 16v bldc电机

转速提升至5400,后进入flux直接就是停转发出呲呲的声音,参数无法识别

USER_SYSTEM_FREQ_MHz 
60

Maximum Bus Voltage
48

Maximum Target RPM 
5600

USER_MOTOR_NUM_POLE_PAIRS 
7

USER_PWM_FREQ_kHz
30

USER_NUM_PWM_TICKS_PER_ISR_TICK 
3

USER_NUM_ISR_TICKS_PER_CTRL_TICK 
1

USER_NUM_CTRL_TICKS_PER_CURRENT_TICK
1

USER_NUM_CTRL_TICKS_PER_EST_TICK 
1

USER_ZEROSPEEDLIMIT
0.002

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

user4708725:

为什么参考指南上这么说?和你说的是矛盾的,怎么解释?

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

qin jiang:

回复 user4708725:

楼主您好,能否告诉我你这个文件在哪里可以下载呢

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

Eric Ma:

回复 qin jiang:

附件。

ERIC

本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。

控制板:LAUNCHXL-F28027F LaunchPad

功率板:BOOSTXL-DRV8305EVM

软件:CCS5.5

电机参数:

电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。

1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:

2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:

#define USER_IQ_FULL_SCALE_FREQ_Hz        (500.0) //GUI_QSG推荐设置500Hz

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (24.0)  //一般等于母线电压(24V

#define USER_PWM_FREQ_kHz                (30.0) //30K PWM

#define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3) //10k ISR

#define USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)      // 10k CTRL

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK   (1)      // 10k CURRENT

#define USER_NUM_CTRL_TICKS_PER_EST_TICK       (1)      //  10K EST

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK  (10)   // 1K SPEED

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK   (10)   // 1K TRAJ

#define USER_MOTOR My_Motor

#define USER_MOTOR_TYPE                 MOTOR_Type_Pm//PMSM

#define USER_MOTOR_NUM_POLE_PAIRS       (8) //8对极(Pole pairs)

#define USER_MOTOR_RES_EST_CURRENT      (0.3)//10%*连续电流

#define USER_MOTOR_IND_EST_CURRENT      (-0.3)//-10%*连续电流

 

#define USER_MOTOR_MAX_CURRENT          (6)  //峰值电流6A

#define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

3.关键参数:

  • #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //

Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。

但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。

  • PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。

 

  • #define USER_MOTOR_FLUX_EST_FREQ_Hz     (30.0)//

       ~10% of rated max speed =  Hz * 10%

对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。

  • #define USER_R_OVER_L_EST_FREQ_Hz     (300.0)//

高速电机配置为300,普通电机可减小到100。

  • 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。

以上都是我实际调试经验总结,希望探讨~

 

qin jiang:

回复 Eric Ma:

太好了,就是需要这个文档,感谢

赞(0)
未经允许不得转载:TI中文支持网 » 针对InstaSPIN-FOC在Motor ID(参数辨识)过程中User.h配置探讨(一)
分享到: 更多 (0)