器件型号: TMS320F280037
尊敬的 TI 专家:
在使用 FAST 估算器时、我遇到了表面 PMSM 的一些启动问题。 我有一些关于 FAST 的问题、希望能帮助我解决这些问题。 下面是我对它的工作原理的理解。 我的工程基于 MotorControlSDK 中的 universal_motor_control_lab。
下面是控制 forceAngle 的两个变量。
objUser->forceAngle Freq_Hz
objUser->forceAngle Accel_Hzps
这是启动期间的代码状态流。 首先、在 d 轴上的对齐电流下对齐转子:
else if(obj->motorState == MOTOR_ALIGNMENT)
{
obj->angleFOC_rad = 0.0f;
obj->enableSpeedCtrl = false;
obj->IsRef_A = 0.0f;
obj->Idq_out_A.value[0] = obj->alignCurrent_A;
obj->Idq_out_A.value[1] = 0.0f;
TRAJ_setIntValue(obj->trajHandle_spd, 0.0f);
if((obj->stateRunTimeCnt > obj->alignTimeDelay) ||
(obj->flagEnableAlignment == false))
{
obj->stateRunTimeCnt = 0;
obj->motorState = MOTOR_OL_START;
obj->Idq_out_A.value[0] = obj->fluxCurrent_A;
EST_setAngle_rad(obj->estHandle, obj->angleFOC_rad);
PI_setUi(obj->piHandle_spd, obj->alignCurrent_A);
}
alignTimeDelay 出现后。 将 d 轴设置为 fluxCurrent、并使用 alignCurrent 为速度控制器种子。 看起来对齐电流被转移到了这里的 Q 轴。
然后、它移动到 MOTOR_OL_START、其中 FOC 角度捕捉估算器发出的角度。 我想这是此时的强制角、因为转子刚刚对齐并且还没有旋转。
else if(obj->motorState == MOTOR_OL_START)
{
obj->angleFOC_rad = obj->angleEST_rad;
obj->motorState = MOTOR_CL_RUNNING;
}
现在、在 MOTOR_CL_RUNNING 中、我们处于这种情况下、直到 startupTimeDelay 超过、此时 D 轴电流设置为零、我们移至 MOTOR_CTRL_RUN、这是正常的 FOC 运行。 此时、电机应该已成功启动、FOC 环路按预期工作。
if(obj->motorState == MOTOR_CL_RUNNING)
{
obj->stateRunTimeCnt++;
if(obj->stateRunTimeCnt == obj->startupTimeDelay)
{
obj->Idq_out_A.value[0] = 0.0f;
obj->motorState = MOTOR_CTRL_RUN;
}
}
- FAST 估算器如何使用 forceAngle Freq_Hz 和 forceAngle Accel_Hzps 变量? 我假设它从 forceAngle Freq_Hz 频率开始产生一个角度、并以 forceAngle Accel_Hzps 的速度加速?
- 估算器如何知道何时从强制角度切换到估算角度? 是否必须实现某种类型的误差阈值? 估计器中是否有一个标志指示何时发生切换? 我没能找到这样的旗帜。
- 在此启动例程的哪个时间点我可以预期/估算器需要从 ForceAngle 切换到正常运行角度估算? 我是否需要定义自己的条件、然后关闭 ForceAngle?
此致、
Ryan