电机控制【FOC】_准同步旋转坐标系下的反电动势观测器

一、前言

在无感 FOC 控制中,角度和速度的估算至关重要,而角度和速度的估算先要估算出电机的反电动势,这一次将讲解基于准同步旋转坐标系下的反电动势观测器 (The Back Electronmotive Force,后面简称 BEMF)  的原理。以及对应的在 NXP 的 S32K144 芯片上面的实现。

 

二、原理解析

在基于准同步旋转坐标系下的计算中,观测器的输入是静止坐标系下的 Ualpha、Ubeta、Ialpha、Ibeta(下图中黑色坐标系),经过 Park 变换后得到旋转坐标系下的 Ud、Uq、Id、Iq(下图中蓝色坐标系),观测器再根据此 dq 坐标系构建准同步旋转坐标系(下图中紫色坐标系),观测器根据相应的信息计算电机的感应电动势,再根据感应电动势计算得到两个坐标系之间的角度误差。角度误差给到锁相环去估算速度和角度。



观测器根据输入的Ualpha、Ubeta、Ialpha、Ibeta 重构电机的数学模型。重构的电机方程的表达式如下。



其中 Rs 是定子电阻,单位是欧姆

Ld、Lq  是定子电感,单位是亨

ωγδ 是转子的电角速度,单位是弧度每秒

Uγ、Uδ 是估算的定子电压,单位是伏特

iγ、iδ  是估算的电子电流,单位是安培

Esal 就是反电动势,单位是伏特

θerr 是观测器构建的 γ/δ 坐标系与电机实际的  d/q 坐标系之间的相位差, s 是拉普拉斯微分算子

基于上述构建的电压方程,为了得出反电动势,构建的比较器内部的结构如下图。



框图内部构建了一个电机的数学模型,根据得到此刻电机真实的电压电流信息,让数学模型对齐到真实的电机。

可以看到右侧,观测器估算反电动势,最终是要得出两个坐标系之间的相位差,也就是常说的角度差。

根据上述框图和电机的数学模型方程,做梯形离散后,得到框图的方程。



关于式中各项的系数,这里不详细说明,后续再专门解析。

这里再给出 ed、eq 的计算公式。从框图中看出,它调用了电机库的一个 PI 控制器函数

tFloat GFLIB_ControllerPIrAW_FLT(tFloat fltInErr,GFLIB_CONTROLLER_PIAW_R_T_FLT *const pParam);



根据上述式子,就能算出来反电动势,然后得到两个坐标系的相位差。

三、实现

根据上面公式的推导,在 S32K144 做对应的实现。涉及到式子中的参数的都直接使用原厂的算法中的观测器参数。

原厂的观测器的函数声明是:

tFloat AMCLIB_BemfObsrvDQ_FLT(const SWLIBS_2Syst_FLT *const pIAB,
const SWLIBS_2Syst_FLT *const pUAB, tFloat fltVelocity, tFloat fltPhase, AMCLIB_BEMF_OBSRV_DQ_T_FLT *const pCtrl);

pCtrl 这个指针里面就包含了上述式子中所需要的参数。

实现之后,把依据本文实现的观测器算出来的反电动势与原厂的做对比,如下。



从图中可以看出来本文实现的 Edq_emf.fltArg1 与原厂的 drvFOC.pospeSensorless.bEMFObs.pEObsrv.fltArg1 和 Edq_emf.fltArg2 与原厂的 drvFOC.pospeSensorless.bEMFObs.pEObsrv.fltArg2 完全重合。意味着本文实现的观测器估算反电动势的效果与原厂的观测器一致。

 

四、总结

本文解析了基于准同步旋转坐标系下的 PLL,并且在 S32K144 中做了实现。选在 S32K144 中做实现是因为它支持浮点运算,公式实现起来相对较其他不支持浮点运算的 MCU 简单。

 

五、参考资料

链接:  汽车数学和电机控制库(AMMCLib)_NXP 半导体

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

陆生

陆生

2023年5月16日
您好,这个源码方便提供吗,最近在学习NXP的电机库,遇到问题了。