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

motorware18 lab5c 无法识别惯量,使用069M+8305EVM套件

请问一下,lab5c 中无法正常识别惯量:

1、识别使能标志置一后,很快又被清零了,查看程序如下, 速度环PI控制器依然使能 CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);,但看说明中明确规定要关闭速度环PI控制器:

识别条件:

电机不应旋转,或者不应缓慢旋转。 如果在电机已经转动时开始执行转矩配置,惯性的估算结果会不准确。

InstaSPIN-FOC PI 速度控制器必须禁用。 为测试惯性,SpinTAC 速度识别需要提供 Iq 参考值。 这只有在 InstaSPIN-FOC PI 速度控制器禁用时才 能实现。

正向速度基准值必须在 FAST 中设置。 FAST 估算器需要通过速度基准获得电机旋转方向,从而正确地估算速度。 该值可以是速度基准设置的 任意正值。

强制角必须启用。

然而关闭foc 速度环PI控制器后开始实验,电机以100转运行,使能识别运行,一直报2004错误,不断减小目标速度,依然报2004错误。

2、使用lab12a,有感惯性识别,会报2003错误,减小时间后,则正常识别。

对比lab5c 和 lab12a,发现lab12a中没有使能foc 速度环PI控制器,而且在识别函数中也有不同,如下:

lab12a 识别函数中:

if(STVELID_getStatus(stObj->velIdHandle) == ST_VEL_ID_IDLE) {
// If inertia identification is successful, update the inertia setting of SpinTAC Velocity Controller
// EXAMPLE: STVELCTL_setInertia(stObj->velCtlHandle, STVELID_getInertiaEstimate(stObj->velIdHandle));
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = _IQ(0.0);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}
else if((STVELID_getErrorID(stObj->velIdHandle) != false) && (STVELID_getErrorID(stObj->velIdHandle) != ST_ID_INCOMPLETE_ERROR)) {
// if not done & in error, wait until speed is less than 1RPM to exit
if(_IQabs(speedFeedback) < _IQ(ST_MIN_ID_SPEED_PU)) {
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = _IQ(0.0);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}

lab5c识别函数中:

if((STVELID_getStatus(stObj->velIdHandle) == ST_VEL_ID_IDLE) && (_IQabs(speedFeedback) < _IQ(ST_MIN_ID_SPEED_PU))) {
// If inertia identification is successful, update the inertia setting of SpinTAC Velocity Controller
// EXAMPLE: STVELCTL_setInertia(stObj->velCtlHandle, STVELID_getInertiaEstimate(stObj->velIdHandle));
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = gMotorVars.StopSpeedRef_krpm;
CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}
else if((STVELID_getErrorID(stObj->velIdHandle) != false) && (STVELID_getErrorID(stObj->velIdHandle) != ST_ID_INCOMPLETE_ERROR)) {
// if not done & in error, wait until speed is less than 1RPM to exit
if(_IQabs(speedFeedback) < _IQ(ST_MIN_ID_SPEED_PU)) {
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = gMotorVars.StopSpeedRef_krpm;
CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}

将lab5c中上述程序修改与 lab12a 中一样,运行识别还是一直报2004错误,这是lab5c 程序有错么?求解!!!

Young Hu:电机传感器的线序正确么?

请问一下,lab5c 中无法正常识别惯量:

1、识别使能标志置一后,很快又被清零了,查看程序如下, 速度环PI控制器依然使能 CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);,但看说明中明确规定要关闭速度环PI控制器:

识别条件:

电机不应旋转,或者不应缓慢旋转。 如果在电机已经转动时开始执行转矩配置,惯性的估算结果会不准确。

InstaSPIN-FOC PI 速度控制器必须禁用。 为测试惯性,SpinTAC 速度识别需要提供 Iq 参考值。 这只有在 InstaSPIN-FOC PI 速度控制器禁用时才 能实现。

正向速度基准值必须在 FAST 中设置。 FAST 估算器需要通过速度基准获得电机旋转方向,从而正确地估算速度。 该值可以是速度基准设置的 任意正值。

强制角必须启用。

然而关闭foc 速度环PI控制器后开始实验,电机以100转运行,使能识别运行,一直报2004错误,不断减小目标速度,依然报2004错误。

2、使用lab12a,有感惯性识别,会报2003错误,减小时间后,则正常识别。

对比lab5c 和 lab12a,发现lab12a中没有使能foc 速度环PI控制器,而且在识别函数中也有不同,如下:

lab12a 识别函数中:

if(STVELID_getStatus(stObj->velIdHandle) == ST_VEL_ID_IDLE) {
// If inertia identification is successful, update the inertia setting of SpinTAC Velocity Controller
// EXAMPLE: STVELCTL_setInertia(stObj->velCtlHandle, STVELID_getInertiaEstimate(stObj->velIdHandle));
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = _IQ(0.0);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}
else if((STVELID_getErrorID(stObj->velIdHandle) != false) && (STVELID_getErrorID(stObj->velIdHandle) != ST_ID_INCOMPLETE_ERROR)) {
// if not done & in error, wait until speed is less than 1RPM to exit
if(_IQabs(speedFeedback) < _IQ(ST_MIN_ID_SPEED_PU)) {
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = _IQ(0.0);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}

lab5c识别函数中:

if((STVELID_getStatus(stObj->velIdHandle) == ST_VEL_ID_IDLE) && (_IQabs(speedFeedback) < _IQ(ST_MIN_ID_SPEED_PU))) {
// If inertia identification is successful, update the inertia setting of SpinTAC Velocity Controller
// EXAMPLE: STVELCTL_setInertia(stObj->velCtlHandle, STVELID_getInertiaEstimate(stObj->velIdHandle));
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = gMotorVars.StopSpeedRef_krpm;
CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}
else if((STVELID_getErrorID(stObj->velIdHandle) != false) && (STVELID_getErrorID(stObj->velIdHandle) != ST_ID_INCOMPLETE_ERROR)) {
// if not done & in error, wait until speed is less than 1RPM to exit
if(_IQabs(speedFeedback) < _IQ(ST_MIN_ID_SPEED_PU)) {
gMotorVars.SpinTAC.VelIdRun = false;
// return the speed reference to zero
gMotorVars.SpeedRef_krpm = gMotorVars.StopSpeedRef_krpm;
CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);
CTRL_setSpd_ref_krpm(ctrlHandle, gMotorVars.SpeedRef_krpm);
}

将lab5c中上述程序修改与 lab12a 中一样,运行识别还是一直报2004错误,这是lab5c 程序有错么?求解!!!

user5919672:请问您的问题解决了吗?我也遇到了同样的问题

赞(0)
未经允许不得转载:TI中文支持网 » motorware18 lab5c 无法识别惯量,使用069M+8305EVM套件
分享到: 更多 (0)