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

文章目录

  • 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.rhkb.cn/news/309909.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零自制docker-8-【构建实现run命令的容器】

文章目录 log "github.com/sirupsen/logrus"args...go moduleimport第三方包失败package和 go import的导入go build . 和go runcli库log.SetFormatter(&log.JSONFormatter{})error和nil的关系cmd.Wait()和cmd.Start()arg……context.Args().Get(0)syscall.Exec和…

GRE/MGRE详解

GRE GRE:通用路由封装,是标准的三层隧道技术,是一种点对点的隧道技术; 该技术可以实现不同的网络之间安全的访问; 如上:可以使用该技术搭建一条专线,实现公司A与分公司A1之间相互通信&#xf…

(处理流)转换流与对象流

1.字符编码与解码. (1). 字符编码 : 将字符,字符串,字符数组------> 字节,字节数组. (2). 字节,字节数组------>字符,字符串,字符数组. 如果希望程序在读取文件时(也就是解码)不…

Linux多进程开发2 - 进程间通信

1、进程间通信的概念 进程是一个独立的资源分配单元,不同进程之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。但是,进程不是孤立的,不同的进程需要进行信息的交换和状态的传递等&…

【算法基础】插入排序与二分查找、升级二分查找

文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌,不断…

儿童对讲机玩具AW30N方案

一、儿童对讲机简介 儿童对讲机一种专为孩子们设计的通讯设备,可以让父母与孩子之间进行双向通讯,增强亲子关系,增强孩子的可玩性。儿童对讲机近几年发展的比较快,相比之前的方案,在设计、生产、成本都优化了很多&…

Win10 使用Telnet

命令行 telnet 127.0.0.1 80 调试是否能连接服务 输入exit 回车即可退出 相比于ping的不同

Java编译期注解处理器AbstractProcessor使用

我们接触的注解主要分为以下两类 运行时注解:通过反射在运行时动态处理注解的逻辑编译时注解:通过注解处理器在编译期动态处理相关逻辑 编译期注解我们常用的有Lombok,在class文件中自动生成get和set方法 解编译期处理流程最关键的一个类就…

【TCP套接字编程,UDP套接字编程】

文章目录 TCP套接字编程Socket编程Socket 编程TCP套接字编程TCPsocket编程C/S socket 交互: TCP数据结构 sockaddr_in数据结构 hostent UDP套接字编程UDP Socket编程Client/server socket 交互: UDP TCP套接字编程 Socket编程 应用进程使用传输层提供的服务才能交换报文。实现…

【嵌入式】交叉编译指南:将开源软件带到嵌入式世界

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

PostgreSQL入门到实战-第二十八弹

PostgreSQL入门到实战 PostgreSQL中数据分组操作(三)官网地址PostgreSQL概述PostgreSQL中GROUPING SETS命令理论PostgreSQL中GROUPING SETS命令实战更新计划 PostgreSQL中数据分组操作(三) 使用PostgreSQL grouping sets子句在查询中生成多个分组集。 官网地址 声明: 由于操…

建筑覆膜板是干什么用的?

在现代建筑施工中,覆膜板是一种非常重要的工程材料。它俗称"模板",主要用于浇筑混凝土和钢筋结构的支撑和固定。覆膜板的质量直接关系到建筑物的施工效率和质量,因此选择一家专业、靠谱的生产厂家至关重要。 贵港市能强优品木业有限公司就是一家广西知名的建筑覆膜板…

[SystemVerilog]常见设计模式/实践

常见设计模式/实践 RTL 设计(尤其是 ASIC)的最终目标是制作出最小、最快的电路。为此,我们需要了解综合工具如何分析和优化设计。此外,我们还关注仿真速度,因为等待测试运行实际上是在浪费工程精力。虽然综合和仿真工…

【Linux】封装一下简单库 理解文件系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、封装一下简单库 二、理解一下stdin(0)、stdout(1)、stderr(3) 2.1、为什么要有0、1、2呢? 2.2、特点 2.3、如果我想让2也和1重定向到一个文件…

如何在Linux系统部署Joplin笔记并结合内网穿透实现无公网IP远程访问

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能,…

华为数通方向HCIP-DataCom H12-821题库(多选题:321-340)

第321题 关于OSPF的命令描述,不正确的是: A、stub区域和totally stub区域配置了no-summary参数 B、OSPFv2和OSPF v3配置接口命令的区别是OSPF V2可以使用network命令,而OSPFv3直接 C、在接口上使能stubrouter命令用来配置次路由器为stub路由器,stub路由器可以与非stub路由 …

微软搭建零售新媒体创意工作室大举抢占数字营销广告市场

“微软新零售创意工作室新平台利用生成式人工智能,在几秒钟内轻松定制横幅广告。零售媒体预计到2026年将成为一个价值1000亿美元的行业。” 零售媒体在过去几年中发展迅速。根据eMarketerOpens在新窗口的数据,预计到2024年,仅美国的零售媒体…

【Node.js】Express学习笔记(黑马)

目录 初识 ExpressExpress 简介Express 的基本使用托管静态资源nodemon Express 路由路由的概念路由的使用 Express 中间件中间件的概念Express 中间件的初体验中间件的分类 初识 Express Express 简介 什么是 Express? 官方给出的概念:Express 是基于…

navicat远程连接mysql的异常解决-1130-2003-10061

结论: 1、修改数据库下root用户的host字段(为空或%) 2、修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件下 bind-address 的配置为 0.0.0.0 或者屏蔽此配置内容 (默认配置是: bind-address 127.0.0.1) 补充: 查看数据库下用户与host字段的关…

3D医疗图像配准 | 基于Vision-Transformer+Pytorch实现的3D医疗图像配准算法

项目应用场景 面向医疗图像配准场景,项目采用 Pytorch ViT 来实现,形态为 3D 医疗图像的配准。 项目效果 项目细节 > 具体参见项目 README.md (1) 模型架构 (2) Vision Transformer 架构 (3) 量化结果分析 项目获取 https://download.csdn.net/down…