电机控制杂谈——永磁同步电机中的永磁体谐波反电势

1.问题的引出

在我的谐波抑制专题中,讲了三种谐波抑制的策略。当时是通过增大逆变器死区来产生较大的谐波。但是在实际电机里面,我感觉死区的影响基本上没有。。。课题组的驱动器中,逆变器的非线性其实基本可以忽略不计了。

但是,目前研究的最多的就是永磁同步电机PMSM了,永磁同步电机的反电势不太可能是非常理想的正弦波,多多少少都会有谐波的。以我用的电机为例子,测出的反电势里面只有1%的五次谐波,但是实际运行中,相电流中的五次谐波电流非常明显。。。。。。仅仅是1%而已。。。。。。

所以呢,就想搭建一个具有谐波反电势的PMSM。

一般来说,三相电机里面,永磁体谐波一般就考虑五次和七次就ok了。例如下图,这是参考文献1中的永磁体反电势的波形以及FFT分析。可以看到五七次的占比比较大,3、9次谐波在星型三相电机里面是不存在的,所以不考虑。

参考文献1:

Lyu Z, Wu L, Yi J, et al. Hybrid frame-based current control scheme for LC-equipped PMSM with non-sinusoidal back-EMF[J]. IEEE Transactions on Power Electronics, 2023, 38(5): 5994-6004.

 

为什么3、9次谐波在星型三相电机里面是不存在的?可以看看我之前写的内容。

永磁同步电机中3的倍数次谐波为什么不存在? - 知乎写这个回答,还想顺便回答一下其他几个相关的问题。1.永磁同步电机中3的倍数次谐波为什么不存在?2.在静止…icon-default.png?t=N7T8https://www.zhihu.com/question/362376425/answer/3372378100

好,那我现在的想法是想搭建一个具有五七次谐波反电势的PMSM,但是simulink没有这玩意呢。

那这样的话,我只能自己搭建新的PMSM模型了。然后呢,我找了找有没有什么论文里对PMSM的永磁体五七次谐波反电势进行建模。找了好久,终于找到了。

2.考虑五七次谐波反电势的PMSM数值模型

参考文献2:

Lyu Z, Wu L, Song P. A Novel Harmonic Current Control Method for Torque Ripple Reduction of SPMSM Considering DC-Link Voltage Limit[J]. IEEE Transactions on Power Electronics, 2023.

在参考文献2中,浙大吴老师给出了五七次谐波磁链的表达式:

值得注意的是这个theta5和theta7,五七次谐波磁链的初始相位确实不一定和基波初始相位一致,很多论文都没有考虑到这一点。

这篇参考文献中并没有给考虑磁链谐波的d-q电压方程,然后找了找,发现在参考文献1(这篇也是浙大吴老师的论文)中给了考虑磁链谐波的d-q电压方程。

我自己试着推导了一下,发现是ok的,计算的没错。 

 

3.考虑五七次谐波反电势的PMSM simulink模型搭建

(1)不考虑谐波反电势的PMSM模型

先搭建一个不考虑五七次谐波的PMSM模型吧,模型内部如下。因为我自己之前已经搭建过了,这里就不在赘述了。我是用dq坐标系搭出来的。

现在来和simulink自带的PMSM模型做个对比,看看我搭出来的PMSM是否正确。

自己搭建的
系统自带的

直接看启动电流的波形吧,仿真时间为0.01s。

 

搭出来的PMSM模型与simulink自带PMSM模型电流波形基本一致了。说明搭建的是正确的。

(2)考虑五次谐波反电势的PMSM模型

那接下来再搭包含五次谐波反电势的PMSM模型吧。注意,我个人是比较喜欢一步一步来,一步一步验证模型是否正确,而不是直接把整个模型都搭建好。

就老老实实按照公式搭建就好了。

把五次反电势加入到d-q电压方程之后,我把五次谐波磁链的数值设置为基本磁链的1%,而五次谐波反电势的变化频率是基波的五倍,所以这时候的五次谐波反电势实际上是占基波反电势的5%

加入五次谐波反电势前的相电流FFT分析

 

加入五次谐波反电势后的相电流FFT分析

可以看到,加入五次谐波反电势之后,相电流中的五次谐波有了很明显的提升,而其他次谐波基本不变。但是这里注意到,好像七次谐波电流也上升了。

这是由于数字系统的一拍延时导致的。首先,由于相电流存在五次谐波,然后呢,d-q电流就是存在6次谐波。然后导致d-q电流环输出的d-q电压参考值了也存在6次谐波,经过考虑数字延时的坐标变化,可能就把d-q电压参考值的6次谐波,变换到相电流的7次谐波里面去了。

现在验证一下这个问题。我原本的模型里是在PWM生成之前加了一拍延时的,现在我把一拍延时拿走。

 

加入五次谐波反电势后且不考虑一拍延时的相电流FFT分析

可以看到,这时候的七次谐波就没有了。说明模型搭建的没问题。

从这里也可以发现,即使电机里面有五次谐波反电势,而没有七次谐波反电势,但由于数字延时的影响,也会使相电流产生七次谐波。

(3)考虑七次谐波反电势的PMSM模型

五次搭好了,那我们就来看看七次。

我把五次谐波磁链数值设置为0,七次谐波磁链设置为基本磁链的1%,同理,由于七次谐波的速度是基波的七倍,所以此时七次谐波反电势数值为基波的7%。

加入七次谐波反电势后且不考虑一拍延时的相电流FFT分析

加入七次谐波之后,五次谐波也没有增长,说明模型搭建ok。

(4)考虑五七次谐波反电势的PMSM模型

既然五七次都搭建好了,那就来看看仿真结果吧。

 

仿真参数:(五次谐波反电势设置为基波反电势的5%,七次谐波反电势设置为基波反电势的7%)

Tpwm = 1e-4;%开关周期

Tspeed = 5e-4;%转速采样周期

Ts = 5e-7;%仿真步长

Pn = 4;%电机极对数

Ls = 8.5e-3;%定子电感,采用隐极的,Ld=Lq=Ls

Ld = Ls;

Lq = Ls;

Rs = 3;%定子电阻

flux = 0.1688;%永磁体磁链

B = 0.0004924;

J = 0.0013;

%谐波反电势参数

theta5 = 0;

theta7 = 0;

Flux5 = 0.001688*1;

Flux7 = 0.001688*1;

Vdc = 311;%直流母线电压

iqmax = 20;%额定电流

电流环PI调节器带宽为200Hz时的相电流FFT

可以看到,这个相电流的畸变还是挺明显的。

3.五七次谐波的抑制

值得注意的是,PI本身对交流量就具有一定的抑制作用,带宽足够大的时候是可以跟上交流量的。刚才的电流环PI带宽是200Hz,我把电流环带宽改成1000Hz看看效果。

电流环PI调节器带宽为1000Hz时的相电流FFT

可以看到呢,相电流THD明显下降了,五七次谐波已经减少了一些。

之前已经讲过了五七次谐波的抑制,最方便的还是直接用PIR调节器。我这里设置

Kr = 500;%电流环R调节器的谐振增益

wc = 10;%电流环R调节器的谐振带宽

从下面这个图可以看到,PIR调节器的抑制效果还是很好的,把五七次谐波电流抑制到了0.3%以下。

电流环采用PIR调节器时的相电流FFT

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

怎么配置Dubbo的容错机制?

Dubbo的容错机制用于处理在分布式环境中可能出现的故障和异常情况,以保障系统的稳定性和可靠性。Dubbo提供了多种容错机制,可以根据实际情况进行配置。以下是几种常见的容错机制及其适用场景: Failover(重试)&#xff…

langchin-chatchat部分开发笔记(持续更新)

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径及一点个人思考大模型应用开发实用开源项目汇总大模型问答项目…

Spring MVC Thymeleaf在一个表单中的多个提交按钮

今天遇见一个form需要两个button提交显示不同Controller的需求 一开始解决思路&#xff1a; 我有一个HTML页面的一个窗体和2个按钮的片段&#xff1a; <form action"#" data-th-action"{/action/edit}" data-th-object"${model}" method&qu…

JS获取本机IP地址的2种方法

目录 1.获取本机IP地址方法1&#xff1a;2.获取本机IP地址方法2解决方案&#xff1a; 1.获取本机IP地址方法1&#xff1a; if(typeof window ! undefined){var RTCPeerConnection window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnectio…

SpringBoot中处理校验逻辑的两种方式:Hibernate Validator+全局异常处理

最近正在开发一个校园管理系统&#xff0c;需要对请求参数进行校验&#xff0c;比如说非空啊、长度限制啊等等&#xff0c;可选的解决方案有两种&#xff1a; 一种是用 Hibernate Validator 来处理一种是用全局异常来处理 两种方式&#xff0c;我们一一来实践体验一下。 一、…

AXI4-Stream Interconnect IP核(1)——原理

一、概述 AXI4-Stream Interconnect 是复杂片上系统&#xff08;SoC&#xff09;和现场可编程门阵列&#xff08;FPGA&#xff09;应用设计中的关键组件&#xff0c;它负责在系统内部不同模块之间路由数据流。AXI4-Stream协议是ARM引入的AMBA&#xff08;高级微控制器总线架构&…

httpClient使用介绍

HttpClient 是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新的版本和建议。 就是用来发送http请求或者解析http响应的。 导入依赖&#xff1a; <dependency…

插入排序和希尔排序:

插入排序 1. 算法思想&#xff1a; 由数组下标为1 开始的数值作为判断依据&#xff0c;与之前的数据从后往前比较定义tmp 暂存判断的数值&#xff0c;若前面的数据大于tmp&#xff0c;则将前面的数据向后移动 : arr[j1]arr[j]若对比的数据比tmp 大&#xff0c;则往后移&#…

Mysql中的执行计划怎么分析?

一、背景 在我们日常工作中&#xff0c;我们可能会遇到一些慢SQL语句或者要对一些SQL进行性能优化&#xff0c;那么就需要使用explain对SQL进行执行计划分析了。Mysql中的执行计划可以通过EXPLAIN或DESCRIBE关键字获取&#xff0c;当我们拿到执行计划后可以帮助我们分析这条sq…

JavaIO流与字节输出流OutputStream

1 概述 1.1 什么是IO流 IO流是存储和读取数据的解决方案&#xff0c;用于读写文件中的数据&#xff08;包括本地文件、网络等&#xff09; IO流的参照是程序或内存&#xff0c;即使程序在读&#xff0c;程序在写。 1.2 IO的分类 根据流的方向分为&#xff1a;输入流和输出流…

C++STL学习之unordered_map与unordered_set(底层Hash)

前言&#xff1a;我们前面已经学习论map和set&#xff0c;现在又冒出来一个unordered_map和unordered_set&#xff0c;这两个有啥差别吗&#xff1f;前面我们已经说过&#xff0c;map和set的底层是红黑树&#xff0c;那unordered_map和unordered_set的底层是什么呢&#xff1f;…

入门指南:使用Spark MLlib进行数据处理和机器学习

引言&#xff1a; 在当今大数据时代&#xff0c;数据处理和机器学习成为了许多企业和数据科学家的核心任务。然而&#xff0c;处理大规模数据和训练复杂的机器学习模型并不容易。幸运的是&#xff0c;Apache Spark提供了一个强大的机器学习库&#xff0c;即Spark MLlib&#xf…

esp32CAM环境搭建(arduino+MicroPython+thonny+固件)

arduino ide 开发工具 arduino版本&#xff1a;1.8.19 arduino ide 中文设置&#xff1a;​ file >> preferences >> ​ arduino IDE 获取 ESP32 开发环境&#xff1a;打开 Arduino IDE &#xff0c;找到 文件>首选项 ,将 ESP32 的配置链接填入附加开发板管理网…

TypeScript实战使用技巧分享

TypeScript使用分享 前言 本次技术分享是想将自己使用TypeScript&#xff08;TS&#xff09;的经验给大家做一个技术分享。主要目的是分享我使用TS的方式或者习惯&#xff0c;以及怎么在项目中更好的使用它&#xff0c;而不是对TS这门语言的学习。并非说需要大家都去这样写&a…

python --dejavu音频指纹识别

Dejavu是一个用于音频指纹识别的Python库&#xff0c;它能够将音频文件转换成独特的指纹&#xff0c;然后通过比对数据库中已知音频的指纹&#xff0c;识别出输入音频的来源或相似音频。Dejavu库支持多种类型的音频文件&#xff0c;包括MP3、WAV等&#xff0c;同时也支持在不同…

【Canvas与艺术】简约式胡萝卜配色汽车速度表

【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>胡萝卜色汽车速度仪表盘简化版</title><style type"…

go |struct embedding、generics、goroutine

go 的结构内嵌 注意点&#xff0c;有点像js func main() {fmt.Println("hello zhangbuda...")// 这个内嵌 和 js 有点像co : container{base: base{num: 22,},str: "zhangdbau hahahahah ",}fmt.Println("co: ", co)/*在 Go 语言中&#xff0c;如…

Linux学习第三天(gcc/g++的使用、gdb的使用)

1、gcc的四个阶段 预处理 预处理功能主要包括宏定义&#xff0c;文件包含&#xff0c;条件编译&#xff0c;去注释预处理指令是以#号开头的代码行例子&#xff1a;gcc -E hello.c -o hello.i选项&#xff1a;-E 该选项的作用是让gcc在预处理之后停止编译过程选项&#xff1a;-…

设置mysql 数据库和表 的编码方式UTF-8

要设置 MySQL 数据库表和字段的编码方式为 UTF-8&#xff0c;可以使用下面的SQL语句&#xff1a; 1. 设置数据库默认编码为 UTF-8&#xff1a; ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2. 创建表时指定编码为 UTF-8&#xff1a…

C# 值类型和引用类型

值类型 传递就是拷贝&#xff0c; a b意味着在内存里我讲b的所有复制了一份&#xff08;复制到a这里&#xff09; 类似C函数传实参 引用类型 传递的是地址 a b意味着我将a也指向了b所指向的内存 类似C函数传指针