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

MOTORWARE电机参数辨识问题

您好,

我手头有一个Estun_EMJ_04APB22电机,辨识出的参数和事例中几乎相同

define USER_MOTOR_TYPE MOTOR_Type_Pm // Motor_Type_Pm (All Synchronous: BLDC, PMSM, SMPM, IPM) or Motor_Type_Induction (Asynchronous ACI)
#define USER_MOTOR_NUM_POLE_PAIRS (4) // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only
#define USER_MOTOR_Rr (NULL) // Induction motors only, else NULL
#define USER_MOTOR_Rs (2.303403) // Identified phase to neutral resistance in a Y equivalent circuit (Ohms, float)
#define USER_MOTOR_Ls_d (0.008464367) // For PM, Identified average stator inductance (Henry, float)
#define USER_MOTOR_Ls_q (0.008464367) // For PM, Identified average stator inductance (Henry, float)
#define USER_MOTOR_RATED_FLUX (0.38) // Identified TOTAL flux linkage between the rotor and the stator (V/Hz)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL) // Induction motors only, else NULL
#define USER_MOTOR_RES_EST_CURRENT (1.0) // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current
#define USER_MOTOR_IND_EST_CURRENT (-1.0) // During Motor ID, maximum current (negative Amperes, float) used for Ls estimation, use just enough to enable rotation
#define USER_MOTOR_MAX_CURRENT (3.82) // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) // During Motor ID, maximum commanded speed (Hz, float), ~10% rated
#define USER_MOTOR_ENCODER_LINES (2500.0) // Number of lines on the motor's quadrature encoder
#define USER_MOTOR_MAX_SPEED_KRPM (3.0) // Maximum speed that the motor
#define USER_SYSTEM_INERTIA (0.02) // Inertia of the motor & system, should be estimated by SpinTAC Velocity Identify
#define USER_SYSTEM_FRICTION (0.01) // Friction of the motor & system, should be estimated by SpinTAC Velocity Identify

但是当我使用另一款电机(科尔摩根金线电机,M-405-C)做辨识的时候,却得出了与官方文档中相差较大的结果,我可以确定:

USER_MOTOR_NUM_POLE_PAIRS 、USER_MOTOR_RES_EST_CURRENT 、USER_MOTOR_IND_EST_CURRENT 、USER_MOTOR_FLUX_EST_FREQ_Hz 都是在合理范围内执行的,也尝试改变过这几个参数的值,不过我最终得到的结果为:

USER_MOTOR_Rs  == 0.2370315    

USER_MOTOR_Ls_d == 0.001854067

而官方文档中标注的是:

与此同时,我发现TI在例程中关于电流环PI参数的计算为

RoverLs_d = Rs/Ls_d;
Kp_Id = _IQ((0.25*Ls_d*fullScaleCurrent)/(ctrlPeriod_sec*fullScaleVoltage));
Ki_Id = _IQ(RoverLs_d*ctrlPeriod_sec);

RoverLs_q = Rs/Ls_q;
Kp_Iq = _IQ((0.25*Ls_q*fullScaleCurrent)/(ctrlPeriod_sec*fullScaleVoltage));
Ki_Iq = _IQ(RoverLs_q*ctrlPeriod_sec);

几乎为4倍关系,请问是否是TI有意在控制KP。

最后关于USER_MOTOR_RATED_FLUX在电机控制中有没有被使用,被哪些模块使用,谢谢

ming chen3:

按照模型设计的Kp = L *bandwidth;

bandwidth = 2*pi*currentctrlfreq(Hz)/20;

20倍关系是经验值。

这样算下来系数就是0.314与程序中的0.25接近吧。

USER_MOTOR_RATED_FLUX是实时检测的,应该是可以提供一个参考

您好,

我手头有一个Estun_EMJ_04APB22电机,辨识出的参数和事例中几乎相同

define USER_MOTOR_TYPE MOTOR_Type_Pm // Motor_Type_Pm (All Synchronous: BLDC, PMSM, SMPM, IPM) or Motor_Type_Induction (Asynchronous ACI)
#define USER_MOTOR_NUM_POLE_PAIRS (4) // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only
#define USER_MOTOR_Rr (NULL) // Induction motors only, else NULL
#define USER_MOTOR_Rs (2.303403) // Identified phase to neutral resistance in a Y equivalent circuit (Ohms, float)
#define USER_MOTOR_Ls_d (0.008464367) // For PM, Identified average stator inductance (Henry, float)
#define USER_MOTOR_Ls_q (0.008464367) // For PM, Identified average stator inductance (Henry, float)
#define USER_MOTOR_RATED_FLUX (0.38) // Identified TOTAL flux linkage between the rotor and the stator (V/Hz)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL) // Induction motors only, else NULL
#define USER_MOTOR_RES_EST_CURRENT (1.0) // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current
#define USER_MOTOR_IND_EST_CURRENT (-1.0) // During Motor ID, maximum current (negative Amperes, float) used for Ls estimation, use just enough to enable rotation
#define USER_MOTOR_MAX_CURRENT (3.82) // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) // During Motor ID, maximum commanded speed (Hz, float), ~10% rated
#define USER_MOTOR_ENCODER_LINES (2500.0) // Number of lines on the motor's quadrature encoder
#define USER_MOTOR_MAX_SPEED_KRPM (3.0) // Maximum speed that the motor
#define USER_SYSTEM_INERTIA (0.02) // Inertia of the motor & system, should be estimated by SpinTAC Velocity Identify
#define USER_SYSTEM_FRICTION (0.01) // Friction of the motor & system, should be estimated by SpinTAC Velocity Identify

但是当我使用另一款电机(科尔摩根金线电机,M-405-C)做辨识的时候,却得出了与官方文档中相差较大的结果,我可以确定:

USER_MOTOR_NUM_POLE_PAIRS 、USER_MOTOR_RES_EST_CURRENT 、USER_MOTOR_IND_EST_CURRENT 、USER_MOTOR_FLUX_EST_FREQ_Hz 都是在合理范围内执行的,也尝试改变过这几个参数的值,不过我最终得到的结果为:

USER_MOTOR_Rs  == 0.2370315    

USER_MOTOR_Ls_d == 0.001854067

而官方文档中标注的是:

与此同时,我发现TI在例程中关于电流环PI参数的计算为

RoverLs_d = Rs/Ls_d;
Kp_Id = _IQ((0.25*Ls_d*fullScaleCurrent)/(ctrlPeriod_sec*fullScaleVoltage));
Ki_Id = _IQ(RoverLs_d*ctrlPeriod_sec);

RoverLs_q = Rs/Ls_q;
Kp_Iq = _IQ((0.25*Ls_q*fullScaleCurrent)/(ctrlPeriod_sec*fullScaleVoltage));
Ki_Iq = _IQ(RoverLs_q*ctrlPeriod_sec);

几乎为4倍关系,请问是否是TI有意在控制KP。

最后关于USER_MOTOR_RATED_FLUX在电机控制中有没有被使用,被哪些模块使用,谢谢

laughing_C chang:

回复 ming chen3:

您好,

你说的0.314怎么算的,还有就是我这个帖子说的主要是辨识出的参数与官方文档差异过大问题

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