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

news2024/11/27 20:37:33

文章目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis(一) Redis简介

Redis,全名Remote Dictionary Server,是一种开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,如字符串(strings)、哈希(hashes)、列…

前端学习之路-项目实战(1)

每日吐槽:有一个奇怪的问题,怎么一眼看出一个求职者是否是培训班出来的,有的求职上写着,希望大家坦诚一点,but,你这艘诚实的泰坦尼克号终究还是撞上了社会阴暗面的冰山,OMG,不让包装…

【六 (5)机器学习-分类任务-kaggle泰坦尼克号宇宙飞船实战】

目录 文章导航一、什么是分类任务二、分类任务常见算法三、代码实现字段说明1、导入类库2、读取数据3、查看缺失值和数据类型4、特征衍生5、缺失值处理6、特征编码7、建立模型并评估8、模型融合 文章导航 【一 简明数据分析进阶路径介绍(文章导航)】 一…

基于单目相机的标靶三维定位——原理阐述

之前我们已经完成了 棋盘格标靶的制作相机内参的标定 接下来我们将实现使用标定后的相机完成图像内棋盘格标靶起始点的三维定位/测距,如下图所示。 看到这句话我们的第一印象可能是:单目相机如何实现三维测距呢?的确,由于相机的成像结果中丢失了深度信息,我…

4/11 QT_day5

服务器端 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QMessageBox> #include <QTcpSocket> #include <QList> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass …

强化学习-DQN改进及一些强化学习路由优化论文笔记

RL 通用超参数 DQN改进 Duel Structure VS→该state在当前policy下的value QSA→该state进行这个action在当前policy下的value advantage VS - QSA 裁剪区域的确定&#xff1f; 34194按行输出min&#xff0c;33193min为90*90 Replay buffer background knowledge [b…

最优算法100例之41-用两个栈实现队列

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 用两个栈实现队列 题解报告 stack<int> stack1; stack<int> stack2; void push(int node) {stack1.push(node);…

多线程的入门(五)线程池的保活策略

线程池是如何保活的呢&#xff1f;通过对源码的分析得出&#xff0c;线程池通过阻塞队列&#xff0c;与关闭工作线程后新生成空闲线程实现的保活策略源代码如下&#xff1a; runkworker&#xff08;&#xff09;方法的getTask&#xff08;&#xff09;方法中有这样一段代码&…

读书笔记之《如何精心设计提示词来精通ChatGPT》

《如何精心设计提示词来精通ChatGPT》这本书英文标题为&#xff1a;《The Art of Prompt Engineering with chatGPT》&#xff0c;于2023年出版。作者是Nathan Hunter 。 Nathan Hunter简介&#xff1a;ChatGPT培训的创始人。作为一名资深培训师和教学设计师&#xff0c;我在过…

睿尔曼复合机器人之底盘操作流程

以操作流程为例&#xff0c;介绍底盘的操作流程。 开机&#xff1a;长按电源按钮&#xff0c;蜂鸣器短响两声&#xff0c;当第三声变长鸣后松开&#xff0c;等待机器开机。 使用&#xff1a; 建立通讯&#xff1a;主要采用无线WiFi与底盘进行通讯连接 无线连接方式&#xff…

Oracle 数据库 count的优化-避免全表扫描

Oracle 数据库 count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table …

流媒体的安全谁来保障

流媒体的安全谁来保障 说起媒体&#xff0c;我们马上就会想到报纸新闻、广播、电视。 其实所谓的流媒体同我们通常所指的媒体是不一样的&#xff0c; 它只是一个技术名词。流媒体到底是什么&#xff1f;能给我们的生活带来什么&#xff1f;跟小德一起来看看。 流媒体是什么&a…

最优算法100例之39-机器人的运动范围

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 题目描述: 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,…

备考ICA----Istio实验20---跨网络Primary-Remote主从架构部署

备考ICA----Istio实验20—跨网络Primary-Remote主从架构部署 按照本实验在 cluster1&#xff08;主集群&#xff09;上安装 Istio 控制平面&#xff0c;并将 cluster2&#xff08;远程集群&#xff09;配置为使用 cluster1 中的控制平面。群集 cluster1 在 network1 网络上&am…

[Kubernetes[K8S]集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

文章目录 操作流程&#xff1a;前置&#xff1a;Docker和K8S安装版本匹配查看0.1&#xff1a;安装指定docker版本 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一&#xff1a;主节点操作 查看主机域名->编辑域名->域名配置二&#xff1a;安装自动填充&#xff0c;虚拟…

贪心算法|763.划分字母区间

力扣题目链接 class Solution { public:vector<int> partitionLabels(string S) {int hash[27] {0}; // i为字符&#xff0c;hash[i]为字符出现的最后位置for (int i 0; i < S.size(); i) { // 统计每一个字符最后出现的位置hash[S[i] - a] i;}vector<int> …

ASUS华硕ROG幻16Air笔记本电脑GU605M原装出厂Win11系统工厂包下载,带有ASUSRecovery一键重置还原

适用型号&#xff1a;GU605MI、GU605MY、GU605MZ、GU605MV、GU605MU 链接&#xff1a;https://pan.baidu.com/s/1YBmZZbTKpIu883jYCS9KfA?pwd9jd4 提取码&#xff1a;9jd4 华硕原厂Windows11系统带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性联机支持…

VUE typescript 调用stompjs[Rabbit MQ]

npm拉下来最新的2.3.9版本&#xff0c;发现一些原来Js代码已经不能用了。顺便解读了下最新定义的内容 // <reference types"node" />export const VERSIONS: {V1_0: string;V1_1: string;V1_2: string;supportedVersions: () > string[]; };export class C…

风储微网虚拟惯性控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 风储微网虚拟惯性控制系统simulink建模与仿真。风储微网虚拟惯性控制系统是一种模仿传统同步发电机惯性特性的控制策略&#xff0c;它通过集成风力发电系统、储能系统和其他分…

微信小程序自定义关闭按钮在弹窗下面的效果

效果图: 我之前用vant 的popup的弹窗写&#xff0c;会出现close图标移动到弹窗内容外部不可见。 自定义代码&#xff1a; popup.JS/*** 生命周期函数--监听页面初次渲染完成*/onReady() {//自定义弹窗 动态获取屏幕高度var that this;wx.getSystemInfo({success: (result) &…