拓展卡尔曼滤波在电机控制中的应用解析
在机电系统中,电机的转速和位置角度参数是设计者、使用者十分关心的对象,在电机控制方式中包括有感控制和无感控制,有感控制即使用传感器获得电机的速度和角度。 本文着重介绍的是无感控制中使用拓展卡尔曼滤波方式控制电机运行。电机的无感控制,可以省去位置传感器,通过电机的特性参数,获得速度、角度信息,进而在控制系统作为其他模块的输入。 无感观测器的输入有DQ轴的电流和电压,并通过电感、电阻、磁链参数,计算获得转速和角度。
扩展卡尔曼滤波器(EKF )是非线性和随机的,不仅具有优化和自适应能力,还可以更好地抑制测量和扰动噪声。 基于EKF 的观测器,可以直接得到定子磁链矢量和转子位置的估计值。卡尔曼滤波的关键是选择系数值以获得可能的最好的位置估计性能。卡尔曼滤波方法计算强度大;由于数字信号处理器的出现,扩展卡尔曼滤波器的位置估计法可以在线地观测速度和转子位置。 拓展卡尔曼滤波算法中,我们的目的是在单片机中虚拟一个电机在里面运行,把角度和速度取出来用,结合PARK和反PARK运算,使得单片机中的虚拟电机和真实电机非常接近。 我们先来解释一下这个框图,Ut为输入,对应的为alpha、beta电压,Ut输入乘以B矩阵,再叠加上系统噪声Wk,并通过积分得到观测状态量Xt,其中C为输出矩阵并叠加测量噪声Vk后,得到状态输出。 上述的输入输出运算过程有两套,分别构建出虚拟模型和现实状态,其输出通过运算获得模型误差E,K为增益,通过调节K,使E无限收敛于0,也就是虚拟的状态和真实的状态无限接近。
观测器推导
利用数学公式推导,获得一系列矩阵,利用这些矩阵运算,获得状态估计、预测方差以及卡尔曼增益,使得虚拟电机状态的误差与真实电机的误差很接近,进而获得良好输出。
卡尔曼滤波的控制本质:根据概率的统计特征计算动态的K。 而滑膜、龙伯格控制的本质是根据稳定性判据计算固定的K。拓展卡尔曼滤波(EKF)能处理非线性系统,电机就是一个非线性系统。所谓拓展的卡尔曼滤波,实际中就是对系统转移矩阵求偏导。 需要指出的是,EKF(拓展卡尔曼滤波)处理的信号的误差为正态分布的信号。 电机采集的信号符合正态分布么?答案是肯定的,如电机的真实电流为1A,通过AD采样与转换误差、运放的叠加误差等,得到的电流不一定是1A,可能为0.98A、1.02A,但是,其误差符合正态分布。
拓展卡尔曼滤波的过程:
1、预测方程
例如:真实的室内温度21度,我们如何用一个传感器和一个预测模型来获得最接近真实的误差呢? 首先我们需要一个不太精准的传感器,姑且认为这个温度计的误差为±3度;还需要一个模型的当前估计温度,这个温度多少都可以,暂且认为是18度,以及模型的估计误差为±2度。
E(误差)=(1-0.286)*1.2=0.8565T3=20.57+0.222(20-20.57)=20.44 E(误差)=(1-0.222)*0.868=0.666T4=20.443+0.182(21.5-20.443)=20.64 E(误差)=(1-0.182)*0.666=0.545
根据公式,K越小,上一时刻的估计占的比重远大,即此时的结果更加相信模型的预测
利用MATLAB,对卡尔曼滤波算法建模,由于涉及矩阵运算,同时考虑到模型的代码可以快速移植到芯片中,使用S函数方法编辑卡尔曼滤波算法。
将离散化的卡尔曼滤波方程以函数的形式进行封装,进行模块化管理,输出参数供外界使用,方便灵活。右图展示了在MATLAB中的部分方程的实现代码过程。
下图为simulink下的部分模型,和有感的FOC矢量控制架构一样,采用电流、转速、角度闭环方式。与之不同的是,不需要霍尔类传感器采集转子信息,而对转子角度进行间接获取。
角度追踪过程的结果可以看出,利用扩展卡尔曼滤波获得的角度信息仅仅跟随真实的角度信息。
速度追踪过程的结果可以看出,利用扩展卡尔曼滤波获得的角度信息仅仅跟随真实的速度信息。
本文先从状态观测器概念的引入,通过输入输出框图形式解释了拓展卡尔曼滤波的原理,并通过一个例子的形式,直观地感受到卡尔曼滤波算法的思想,最后在利用仿真平台进行算法验证。 拓展卡尔曼滤波算法的核心思想就是获得动态K(卡尔曼增益)值,来调节虚拟电机系统与真实电机系统,是两者各个状态拟合,进而达到控制的目的。可以看出,拓展卡尔曼滤波可以较好地处理非线性的电机控制系统。 以上是对无速度传感器中的拓展卡尔曼滤波算法的解读,本人也是通过资料的搜集整理,以及对知识的理解消化后,形成自己的阐述方式,将此篇文章奉献给大家,如本人在撰写的文章中,对某些知识有认识不足或有疏漏的地方,还请多多指正。
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-13
最近编辑:1年前