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

请问装有增量式编码器的PMSM如何确定电机的零初始位置

大家好,我最近在学PMSM的矢量控制,然后看到一段程序,程序的作用是确定电机的零初始位置,但是我实在是不理解为什么是这么操作,还请懂得人给以解答,非常感谢!

void Motor_ZeorPosi_cs(void)//确定零点位置
{
if(logicContr.Start_order==1)  //电机开始启动
{
logicContr.Qiehuan_count++;
IparkU.Ds=3*pi_spd.Ref; //将给定速度的3倍直接给反park变变换的输入d,接下来就是svpwm的计算。
if( IparkU.Ds>_IQ(0.2))
IparkU.Ds= _IQ(0.2);
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>1200)
{
logicContr.Start_order=2;
EQEPPare.initial_angle=EQEPPare.ElecThetaYS;   //EQEPPare.ElecThetaYS是通过编码器测得的电角度
}
}
else if(logicContr.Start_order==2)
{
logicContr.Qiehuan_count++;
IparkU.Ds=0; //
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>1500)
logicContr.Start_order=3;
}
else if(logicContr.Start_order==3)
{
logicContr.Qiehuan_count++;
IparkU.Ds=3*pi_spd.Ref; //
if( IparkU.Ds>_IQ(0.2))
IparkU.Ds= _IQ(0.2);
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>2500)
{
logicContr.Start_order=4;
EQEPPare.initial_angle= EQEPPare.ElecThetaYS;
}
}
}

Green Deng:请问这段程序的具体来源是什么?
增量式编码器没办法一上电就知道电机转子的位置,需要给个转矩矢量,让电机转到那个角度,然后接着以那个角度为起始角度。
有种算法叫IPD,就是初始位置检测,就是可以在电机没动之前,用注入高频的电流来测出转子的具体位置,然后这个角度就可以给到FOC算法。

大家好,我最近在学PMSM的矢量控制,然后看到一段程序,程序的作用是确定电机的零初始位置,但是我实在是不理解为什么是这么操作,还请懂得人给以解答,非常感谢!

void Motor_ZeorPosi_cs(void)//确定零点位置
{
if(logicContr.Start_order==1)  //电机开始启动
{
logicContr.Qiehuan_count++;
IparkU.Ds=3*pi_spd.Ref; //将给定速度的3倍直接给反park变变换的输入d,接下来就是svpwm的计算。
if( IparkU.Ds>_IQ(0.2))
IparkU.Ds= _IQ(0.2);
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>1200)
{
logicContr.Start_order=2;
EQEPPare.initial_angle=EQEPPare.ElecThetaYS;   //EQEPPare.ElecThetaYS是通过编码器测得的电角度
}
}
else if(logicContr.Start_order==2)
{
logicContr.Qiehuan_count++;
IparkU.Ds=0; //
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>1500)
logicContr.Start_order=3;
}
else if(logicContr.Start_order==3)
{
logicContr.Qiehuan_count++;
IparkU.Ds=3*pi_spd.Ref; //
if( IparkU.Ds>_IQ(0.2))
IparkU.Ds= _IQ(0.2);
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>2500)
{
logicContr.Start_order=4;
EQEPPare.initial_angle= EQEPPare.ElecThetaYS;
}
}
}

user5956715:

回复 Green Deng:

你好,Green Deng,这个程序是我买的一套电机控制开发板上带的。根据你所说的我大概知道这个原理了,但是这个程序在中间一段给了电机零矢量,请问这是为什么呢?

大家好,我最近在学PMSM的矢量控制,然后看到一段程序,程序的作用是确定电机的零初始位置,但是我实在是不理解为什么是这么操作,还请懂得人给以解答,非常感谢!

void Motor_ZeorPosi_cs(void)//确定零点位置
{
if(logicContr.Start_order==1)  //电机开始启动
{
logicContr.Qiehuan_count++;
IparkU.Ds=3*pi_spd.Ref; //将给定速度的3倍直接给反park变变换的输入d,接下来就是svpwm的计算。
if( IparkU.Ds>_IQ(0.2))
IparkU.Ds= _IQ(0.2);
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>1200)
{
logicContr.Start_order=2;
EQEPPare.initial_angle=EQEPPare.ElecThetaYS;   //EQEPPare.ElecThetaYS是通过编码器测得的电角度
}
}
else if(logicContr.Start_order==2)
{
logicContr.Qiehuan_count++;
IparkU.Ds=0; //
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>1500)
logicContr.Start_order=3;
}
else if(logicContr.Start_order==3)
{
logicContr.Qiehuan_count++;
IparkU.Ds=3*pi_spd.Ref; //
if( IparkU.Ds>_IQ(0.2))
IparkU.Ds= _IQ(0.2);
IparkU.Qs= 0; //
if( logicContr.Qiehuan_count>2500)
{
logicContr.Start_order=4;
EQEPPare.initial_angle= EQEPPare.ElecThetaYS;
}
}
}

mangui zhang:

回复 user5956715:

是不是还需要结合Z相位置和转过的脉冲数量可以判断转动的位置
上电的位置硬件是判断不出来的只能靠特殊的做法

赞(0)
未经允许不得转载:TI中文支持网 » 请问装有增量式编码器的PMSM如何确定电机的零初始位置
分享到: 更多 (0)