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

请教一下,FOC电机控制这段代码怎么理解?

static inline void SVGEN_run(SVGEN_Handle handle,const MATH_vec2 *pVab,MATH_vec3 *pT)

{

_iq Vmax,Vmin,Vcom;
_iq Va,Vb,Vc;
_iq Va_tmp = -(pVab->value[0]>>1);
_iq Vb_tmp = _IQmpy(SVGEN_SQRT3_OVER_2,pVab->value[1]);
Va = pVab->value[0]; //alpha
Vb = Va_tmp + Vb_tmp; //-0.5*alpha + sqrt(3)/2 * beta;
Vc = Va_tmp – Vb_tmp; //-0.5*alpha – sqrt(3)/2 * beta;
Vmax=0;
Vmin=0;

// find order Vmin,Vmid,Vmax
if (Va > Vb) {
Vmax = Va;
Vmin = Vb;
}
else
{
Vmax = Vb;
Vmin = Va;
}

if (Vc > Vmax)
{
Vmax = Vc;
}
else if (Vc < Vmin)
{
Vmin = Vc;
}
Vcom = _IQmpy(Vmax+Vmin, _IQ(0.5));

// Subtract common-mode term to achieve SV modulation
pT->value[0] = (Va – Vcom);
pT->value[1] = (Vb – Vcom);
pT->value[2] = (Vc – Vcom);
return;
}

这段代码是foc中PWM周期的设定过程,不明白为啥这样写,请大神讲解一下,谢谢

Igor An:

这是InstaSpin 中SV PWM的发波方法。

可以理解为7段式SVPWM。

具体原理,TI目前还没有系统的说明文档,如果感兴趣其实可以把代码的原理转换成数学表达式,应该比较容易看出基本原理。

赞(0)
未经允许不得转载:TI中文支持网 » 请教一下,FOC电机控制这段代码怎么理解?
分享到: 更多 (0)