永磁同步电机无感FOC(扩展卡尔曼滤波EKF位置观测控制)

news/2024/12/13 14:12:41

文章目录

  • 1、前言
  • 2、扩展卡尔曼滤波器原理
    • 2.1 预测阶段(时间更新阶段)
    • 2.2 校正阶段(状态更新阶段)
  • 3、永磁同步电机EKF的模型
  • 4、永磁同步电机EKF的无位置状态观测仿真
    • 4.1 核心模块(在滑膜、龙伯格、磁链等观测器基础上修改)
    • 4.2 观测效果
  • 参考

写在前面:本人能力、时间、技术有限,没有对一些细节进行深入研究和分析,也难免有不足和错误之处,欢迎交流和指正。本人写博客主要是学习过程的记录。

1、前言

在这里插入图片描述

2、扩展卡尔曼滤波器原理

在这里插入图片描述

2.1 预测阶段(时间更新阶段)

在这里插入图片描述

2.2 校正阶段(状态更新阶段)

在这里插入图片描述

3、永磁同步电机EKF的模型

在这里插入图片描述
在这里插入图片描述

4、永磁同步电机EKF的无位置状态观测仿真

模型下载地址: 永磁同步电机无感FOC(扩展卡尔曼滤波EKF位置观测控制)simulink仿真模型
PMSM控制框图如下如所示:
在这里插入图片描述

4.1 核心模块(在滑膜、龙伯格、磁链等观测器基础上修改)

在这里插入图片描述
其中EKF模块如下:
在这里插入图片描述
其中使用matlab function实现具体算法:

function [theta, we] = EKF(ialpha, ibeta, ualpha, ubeta, Ts, Ls, Rs, flux)% 声明持久变量
persistent x_k_1 P_K_1% 如果持久变量为空,则进行初始化
if isempty(x_k_1)x_k_1 = single([0, 0, 0, 0]');
end   
if isempty(P_K_1)P_K_1 = single(diag([0.1, 0.1, 0, 0]));
end % 输入向量
Is = single([ialpha ibeta]');
Us = single([ualpha ubeta]');% 系统噪声和测量噪声协方差矩阵
Q = single(diag([0.1 0.1 1 0.01]));
R = single(diag([0.2 0.2]));% 系统矩阵和控制矩阵
C = single([1 0 0 0;0 1 0 0]);
B = single([1/Ls 0;0 1/Ls;0 0;0 0]);% 状态方程和状态转移矩阵
f = single([-Rs*x_k_1(1,1)/Ls + x_k_1(3,1)*flux*sin(x_k_1(4,1))/Ls;-Rs*x_k_1(2,1)/Ls - x_k_1(3,1)*flux*cos(x_k_1(4,1))/Ls;0;x_k_1(3,1)]);
F = single([-Rs/Ls 0 flux*sin(x_k_1(4,1))/Ls flux*x_k_1(3,1)*cos(x_k_1(4,1))/Ls;0 -Rs/Ls -flux*cos(x_k_1(4,1))/Ls flux*x_k_1(3,1)*sin(x_k_1(4,1))/Ls;0 0 0 0;0 0 1 0]);%v=diag([1,1,1,1])+Ts*F;
% 计算预测值
X_pred = x_k_1 + Ts * (f + B * Us);
Y_Pred = C * X_pred;
Y = Is;% 计算预测误差协方差
P_Pred = P_K_1 + Ts * (F * P_K_1 + P_K_1 * F') + Q;
%P_Pred=v*P_K_1*v'+Q;% 计算卡尔曼增益
K = P_Pred * C' * inv(C * P_Pred * C' + R);% 修正预测值
x_hat = X_pred + K * (Y - Y_Pred);% 更新误差协方差
P_hat = P_Pred - K * C * P_Pred;% 输出更新后的状态值
we = single(x_hat(3,1));
theta = single(x_hat(4,1));% 更新持久变量
x_k_1=x_hat;
P_K_1 = P_hat;end

4.2 观测效果

  • 速度(给定速度、反馈速度及观测速度)
    在这里插入图片描述
    可以看到EKF可以实现正反转的切换。
  • 位置(反馈位置及观测位置)
    在这里插入图片描述
    位置重合度较高。
    个人觉得扩展卡尔曼是目前几个无感方案中最简单的一种方案,需调节的参数少,控制效果好。不过,如果在MCU中实现,需要计算矩阵。

参考

【1】KF、EKF、ESKF的区别与联系:
https://blog.csdn.net/liu3612162/article/details/114634670
【2】彭程. 无位置传感器的永磁同步电机模型预测控制研究[D].武汉理工大学,2022.DOI:10.27381/d.cnki.gwlgu.2022.000761.
【3】姜畅畅. 基于强跟踪EKF的永磁同步电机无位置传感器控制[D].江苏大学,2023.DOI:10.27170/d.cnki.gjsuu.2023.000998.
【4】李杰. 基于EKF的永磁同步电机无位置传感器控制的研究[D].湖南大学,2014.
【5】现代永磁同步电机控制原理及MATLAB仿真 袁雷
【6】小猫爪:PMSM之FOC控制13-搭建EKF观测器:
https://blog.csdn.net/Oushuwen/article/details/122112664
【7】电控5:扩展卡尔曼的实际应用:
https://zhuanlan.zhihu.com/p/662050208


https://dhexx.cn/news/show-5318062.html

相关文章

VScode远程连接虚拟机提示: 无法建立连接:XHR failed.问题解决方案

一问题描述 在vscode下载插件Remote-SSH远程连接虚拟机时提示无法建立连接 二.最大嫌疑原因: 我也是在网上找了许久,发现就是网络原因,具体不知,明明访问别的网页没问题,就是连不上,然后发现下载vscode的…

react合成事件与原生事件区别备忘

朋友问起在做一个下拉框组件,下拉的点击事件是用react的onClick触发,外部区域点击关闭则用dom的原生点击事件绑定,问题是下拉的点击事件无法阻止冒泡到dom的原生事件。 我说,react的合成事件 和 原生事件是不一样的,尽…

SkyWalking 为所有的API接口增加 tag

背景胡扯 线上接口报错,接着被 SkyWalking 抓到,然后 SkyWalking 触发告警,最后老板你,让你辛苦一下,在明早上班前把这个bug 改了,并告诉你你是全公司的希望。谁说不是呢?为公司业务保驾护航&a…

【云存储】Go项目实践(Fedora、GlusterFS、ownCloud)实验解析

本博客主要是为了理解并记录实验中的每一个步骤的含义,以更好的理解该实验的目的与所作的内容。 一些建议: 由于安装在VMWare中的Fedora由版本原因没有办法安装VMTools,因此会导致难以将Windows中的Word文件内的命令直接复制到Fedora里面&a…

【贪心算法经典应用】哈夫曼编码原理与算法详解 python

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

使用Google reCAPTCHA防止机器注册

本文作者:陈进坚 博客地址:https://jian1098.github.io CSDN博客:https://blog.csdn.net/c_jian 简书:https://www.jianshu.com/u/8ba9ac5706b6 联系方式:jian1098qq.com 环境要求 能翻墙的电脑域名 验证原理 在谷歌…

xhci 数据结构

xhci 数据结构 xhci 数据结构主要在手册上有详细的定义,本文根据手册进行归纳总结: 重点关注的包括: device contexttrb ringtrb device context设备上下文 设备上下文数据结构由xHC管理,用于向系统软件报告设备配置和状态信息。…

URL的绝对路径/相对路

一、URL 浏览器要想发起请求,必须是一个完整的url地址. URL是一个固定格式的字符串 它表达了: 从网络中 哪台计算机(domain) 中的 哪个程序(port) 寻找 哪个服务(path),并注明了…

Python(九十四)变量的作用域

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查) 文章目录 CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)前端验证—文件头检查题目解析 各种文件头标志 前端验证—文件头检查 题目考的是:pn…