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.

28027F, FOC启动电机,多数启动是很平滑的,但偶尔启动会来些抖动

Other Parts Discussed in Thread: MOTORWARE

28027F, FOC启动2对极PMSM电机,多数启动是很平滑的,但偶尔启动会来些抖动,PWM=16。

多数启动都是很正常的,但偶尔启动则会有抖动,现象是它启动的时候先反转一些再动起来,导致的抖动。

有没遇到的,目前使用的是motorware_1_01_00_17,

好像看到最新的是motorware_1_01_00_18,不知道有没优化这启动方面的东西。

#define USER_IQ_FULL_SCALE_FREQ_Hz        (800.0)

#define USER_PWM_FREQ_kHz                (16.0)

  • 这应该和motorware17或者18没有多大关系。

    请确认一下你的FOC配置。

    比如是否使能了Rs_Est,也就是启动时的直流拉动,

    还有是否使能了ForceAngle,同时要看ForceAngle的ZERO_SPEED_LIM设置为多少,等等。

    一般InstaSpin在零速启动力矩不特别大的情况下,如果配置合理,每次都会平稳启动。

    当然,上面说的只是其中两点,导致启动抖动,也就是启动力矩不足,或角度抖动有很多原因,需要逐一排查。

    大体包括硬件各种采样信号是否正常,驱动PWM信号是否正常,电机参数配置是否正常,启动流程配置是否正常等等,等等。

  • #define USER_ZEROSPEEDLIMIT   (0.5 / USER_IQ_FULL_SCALE_FREQ_Hz)

    #define USER_FORCE_ANGLE_FREQ_Hz   (10 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)  

    // disable Rs recalibration during motor startup
    gMotorVars.Flag_enableRsRecalc=0;
    EST_setFlag_enableRsRecalc(obj->estHandle,gMotorVars.Flag_enableRsRecalc);

    gMotorVars.Flag_enableForceAngle=true;
    EST_setFlag_enableForceAngle(obj->estHandle,gMotorVars.Flag_enableForceAngle);

    gMotorVars.Flag_enableOffsetcalc=0;//无需要BIAS

    gMotorVars.Flag_enableRsRecalc=0;//

    目前RS和Offsetcalc启动时都是禁止的,因为它们打开了会影响启动时间,要花费好几秒。

    我想问下,如果禁用强制角,还能正常启动么?目前是空载,启动顺 的时候没问题,抖动的时候都是因为它反转定位了,先反转然后正转,因此装到设置上抖动就比较明显。目前低速100转正常后没抖动,高速也没抖动。就是启动的时候时有时无,很郁闷。

    Rs_Est是什么东西,是配置启动的那个Flag_enableRsRecalc吗?

  • 我想问下,如果第一次启动正常后,并且gMotorVars.Flag_Run_Identify置位后,再启动是不是应该不再会有抖动?因为第一次启动后已经定到位了

    CTRL_setFlag_enableCtrl(ctrlHandle, gMotorVars.Flag_Run_Identify);

    目前是使用电位器和RS232通信调整速度。电位器拧到0或者通信设置速度为0后,gMotorVars.Flag_Run_Identify=0,gMotorVars.Flag_enableSys=0

    然后是判断电位器AD大于10时gMotorVars.Flag_enableSys=1,电位器AD大于100时gMotorVars.Flag_Run_Identify=1,然后给速度。

    这样会不会有问题,相当于每次电位器拧到0后,都把gMotorVars.Flag_Run_Identify=0,gMotorVars.Flag_enableSys=0这2个清零了,再拧的时候还得用强制角启动导致每次都存在抖动隐患?

    如果强制角只使用一次,定好位后,后面不断电都不gMotorVars.Flag_Run_Identify,gMotorVars.Flag_enableSys保持它们2者为1,只是调整速度行不行?

  • 如果不使用ForceAngle的话,一般启动会有抖动现象,也会有启动不成功。

    另外,RsRecalc,直流拉动最好加如,时间可以同过user.c中的时间配置来缩短。

    offset时间也一样。

    Rs_Est就是配置RsRecalc的电流大小的宏,“USER_MOTOR_RES_EST_CURRENT”

  • 地球骑士 说:

    我想问下,如果第一次启动正常后,并且gMotorVars.Flag_Run_Identify置位后,再启动是不是应该不再会有抖动?因为第一次启动后已经定到位了

    CTRL_setFlag_enableCtrl(ctrlHandle, gMotorVars.Flag_Run_Identify);

    目前是使用电位器和RS232通信调整速度。电位器拧到0或者通信设置速度为0后,gMotorVars.Flag_Run_Identify=0,gMotorVars.Flag_enableSys=0

    然后是判断电位器AD大于10时gMotorVars.Flag_enableSys=1,电位器AD大于100时gMotorVars.Flag_Run_Identify=1,然后给速度。

    这样会不会有问题,相当于每次电位器拧到0后,都把gMotorVars.Flag_Run_Identify=0,gMotorVars.Flag_enableSys=0这2个清零了,再拧的时候还得用强制角启动导致每次都存在抖动隐患?

    如果强制角只使用一次,定好位后,后面不断电都不gMotorVars.Flag_Run_Identify,gMotorVars.Flag_enableSys保持它们2者为1,只是调整速度行不行?

    每次启动和上次启动都没有任何关系,算法无法记录上次停止的位置,而且如果记录停止位置,在停止时,如果转子被转动,位置也就丢失了。所以前后两次启动完全没有联系,每次都要重新找位置。

  • offset的时间是哪个控制,没看到offset的。RS的找到了并缩短了,

  • 请问下,为何启动开了RS校正后,抖动没了,但电机每次都反转一定角度定位,过几秒后启动,这正常吗?RS离线校正的时候不是说电机standstill静止的吗?

  • 这个就是Igor专家提到的Rs校正的过程,Rs的过程是把电机拉到0位置去,当然会有反转或者正转。

  • Hi,Young

    那如果是不想改变电机软件控制模型(即Rs重校准禁止),反转的问题怎么去解决?

  • 不知道您遇到的反转问题解决了吗,用了什么方法?可以交流一下吗?

  • 这种用Rs过程直流拉动的启动方式,由于进行Rs之前完全不知道转子位置,所以加入Rs拉动力矩后,强制将转子拉到0位置,那么就会出现顺时针转到0位置和逆时针转到0位置两种情况。这是无法避免的,因为在拉动前没有办法知道实际转子位置。但这种反转顶多就是半圈,在一些惯性较大的电机系统中,会出现拉到0位置后在0位置附近左右摆动的问题,这种情况可以通过改变电流的上升斜率和最终的电流幅值来改善。

    如果想要完全消除反转现象,唯一的途径就是在动之前就知道转子位置,0速无传感定位转子的算法主要就是高频注入或者其衍生算法,如6脉冲定位法等。

  • 好的,谢谢您的解答

  • 请问如何改变电流的上升斜率和最终的电流幅值?需要该哪里的参数?请大神教我

  • 请问在user.c中,哪里可以控制RsRecalc, offset时间呢?我反复看没看到。

  • 能否回复下这个帖子的问题。
    e2echina.ti.com/.../164524