“高频注入”(HFI,High Frequency Injection)在永磁同步电机离线参数辨识以及低速运行的应用较为广泛。TI的InstaSPIN-FOC对HFI进行了一些介绍,其采用的是脉振高频电压注入,如下图所示。
对于注入频率的选取,其在Projects and Labs User’s Guide中有如下描述,不难发现,所注入的频率是freq_pwm/2k,
(k=1,2……)。 对于注入频率的选取,其在Projects and Labs User’s Guide中有如下描述,不难发现,所注入的频率是freq_pwm/2k,(k=1,2……)。
由PWM触发的中断服务函数中的相关代码如下,采用HFI时,为d轴电压设置偏置。
// run IPD-HFI
if(IPD_HFI_isEnabled(ipdHandle))
{
// run the IPD algorithm
IPD_HFI_run(ipdHandle,&Iab_pu);
// set the Vdq bias
Vdq_offset_pu.value[0] = HPD_HFI_getVdValue(ipdHandle);
Vdq_offset_pu.value[1] = _IQ(0.0);
// get the reference angle and frequency values
angle_pu = IPD_HFI_getAngle_pu(ipdHandle);
speed_pu = IPD_HFI_getSpeed_lp_pu(ipdHandle);
}
else
{
// zero the Vdq bias
Vdq_offset_pu.value[0] = _IQ(0.0);
Vdq_offset_pu.value[1] = _IQ(0.0);
// get the estimator angle and frequency values
angle_pu = EST_getAngle_pu(estHandle);
speed_pu = EST_getFm_pu(estHandle);
}
// run IPD-HFI
if(IPD_HFI_isEnabled(ipdHandle))
{
// run the IPD algorithm
IPD_HFI_run(ipdHandle,&Iab_pu);
// set the Vdq bias
Vdq_offset_pu.value[0] = HPD_HFI_getVdValue(ipdHandle);
Vdq_offset_pu.value[1] = _IQ(0.0);
// get the reference angle and frequency values
angle_pu = IPD_HFI_getAngle_pu(ipdHandle);
speed_pu = IPD_HFI_getSpeed_lp_pu(ipdHandle);
}
else
{
// zero the Vdq bias
Vdq_offset_pu.value[0] = _IQ(0.0);
Vdq_offset_pu.value[1] = _IQ(0.0);
// get the estimator angle and frequency values
angle_pu = EST_getAngle_pu(estHandle);
speed_pu = EST_getFm_pu(estHandle);
}
---------------------
在控制器的相关函数中,将前述d轴电压的偏置叠加到d轴电压上,用以计算PWM的占空比。
// add voltage offsets
CTRL_addVdq_offset(handle);
笔者发现在很多关于HFI的论文中,PWM频率并不是注入频率的倍数关系,觉得很奇怪,这是怎么做到的?着实有点想不通。
---------------------
作者:Ronnie_Hu
来源:CSDN
原文:https://blog.csdn.net/ronnie_hu/article/details/71698187
版权声明:本文为博主原创文章,转载请附上博文链接!