永磁同步电机谐波抑制算法(8)——基于神经网络的傻瓜式(无需知道谐波频率)谐波抑制

1.简介

前面的内容已经介绍了很多谐波抑制的方法:多同步、PIR、陷波器等等。也介绍了比较多的谐波来源:死区(5、7、11、13等次相电流谐波)、绕组不对称(基波不等幅值、3次相电流谐波)等等。

上述的方法都是知道谐波的次数,然后根据谐波的次数来搭建谐波抑制算法的。

比如多同步方法需要抑制相电流的五七次谐波电流,所以要搭建五次、七次多同步坐标系。再比如PIR方法需要抑制相电流的五七次谐波电流,所以要在dq回路加上以六次电频率为谐振频率的R调节器。

那有没有什么办法是不需要知道谐波频率,即可对任意次谐波电流进行抑制的方法呢?

文章摘要:

基于扩张状态观测器(ESO)的无差拍自抗扰控制(DB-ADRC)常用于高性能的转矩或电流控制,但在抑制逆变器非线性和磁链谐波等周期性扰动引起的电流谐波时效果不佳。

当谐波频率已知时,基于内部模型的方法(如谐振控制)可与ESO结合以减轻电流纹波,但在真实的应用中并不总是这样。

本文将一种具有快速训练过程的在线训练径向基函数神经网络(RBFNN)补偿器集成到DB-ADRC系统中,以在不知道谐波频率的情况下同时抑制非周期和谐波扰动。该方案能在不影响系统动态性能的前提下,有效抑制各种转速和负载条件下的电流谐波。

这种方法的特点就是不需要预先知道谐波频率,就可以自适应抑制谐波电流。这种方法如果非常有效的话,将来可以推广在工业控制器上的,在工业上会非常有用

2.论文的基本内容

论文中涉及神经网络的那部分公式其实很少。我这里简单展示一下,有兴趣可以搜搜论文看看。(直接按照他给的公式搭建模型即可)

 

 

参数设置:直接按照论文中给的参数即可。但是我没明白这个学习率kw后面为啥有个s-2,问了GPT和我学计算机的同学。s-2应该是学习率变化调整与时间的平方成反比。

3.仿真验证

注意一下,论文相当于在传统LESO-DPCC(基于线性扩张状态观测器的无差拍预测电流控制)上加了一个神经网络,神经网络的输出就是需要的交流谐波电压数值。

那我们可以先对神经网络的输出进行FFT分析,看看其频谱是否正确。

我下面是在三相不对称(dq二次谐波)、死区时间为4us(dq六、十二、十八次谐波)的电机下做的仿真。神经网络的输出d轴谐波电压、q轴谐波电压分别如下图蓝线、红线所示。

神经网络d轴输出电压FFT

神经网络q轴输出电压FFT

这里可以看到,dq输出电压的FFT都是正确的,没有明显引入其他次谐波。这里还注意一个问题,d轴死区效应的等效的电压幅值更大。这是有理论依据的。

 

3.1仿真参数

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

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

Vdc = 310;%直流母线电压

Tdead = 4e-6;%死区时间

%下面这是电机的实际参数

Pn = 4;%电机极对数

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

Ld = Ls;

Lq = Ls;

Rs = 1;%定子电阻

flux = 0.1688;%永磁体磁链

iqmax = 25;%额定电流

J = 4e-3;%转动惯量

B = 2e-3;%阻尼系数

%不对称参数

L1 = 3e-3;

M1 = 1.5e-3;

L2 = -2e-3;

M2 = -1e-3;

R1 = 1;

R2 = -0.5;

3.2仿真总体波形

总体波形看的谐波电流不太明显,下面我进行FFT分析看看。

我这里还是用两台电机进行验证,一台三相对称、一台不对称,两台的逆变器死区都是4us。

电机1是三相对称的电机,即相电流中不存在基波不对称、也不存在三次谐波电流。

电机2是三相不对称的电机,相电流中存在基波不对称、也存在三次谐波电流。

仿真设定为0.21s开始进行神经网络训练,即开始抑制谐波电流。

3.3电机1的相电流FFT分析-1200RPM

0.22s时的相电流FFT分析

1s时的相电流FFT分析

2.9s时的相电流FFT分析

可以看到,经过神经网络训练之后:

1)死区产生的5711131719次谐波都有一定变化。

2)主要的571113次都得到了比较明显的抑制。

3)到1s左右谐波已经得到一个很好的抑制,1s2.9s的相电流FFT基本没区别

3.4电机2的相电流FFT分析-1200RPM

0.22s时的相电流FFT分析

1s时的相电流FFT分析

2.9s时的相电流FFT分析

可以看到,经过神经网络训练之后:

1)绕组不对称产生的3次谐波和死区产生的5711131719次谐波都有一定变化。

2)主要的357次这些低次谐波都得到了比较明显的抑制。

3)到1s左右谐波已经得到一个很好的抑制,1s2.9s的相电流FFT基本没区别

3.5电机2的相电流FFT分析-300RPM

0.22s时的相电流FFT分析

1s时的相电流FFT分析

2.9s时的相电流FFT分析

可以看到,经过神经网络训练之后:

1)绕组不对称产生的3次谐波和死区产生的5711131719次谐波都有一定变化。

2)主要的35711131719次这些谐波都得到了比较明显的抑制。

3)到1s左右谐波已经得到一个很好的抑制,1s2.9s的相电流FFT基本没区别

值得注意的是,由于电机转速较低,此时的17、19次谐波频率不算太高,所以17、19次谐波也得到了相对明显的抑制。

4.总结

从上面仿真来看,这个基于神经网络的谐波抑制算法还是比较有效的,对各次谐波都起作用,包括次数很高的17、19次谐波电流。

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

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

相关文章

vue3集成google第三方登陆

网上资源很多,但乱七八糟,踩坑几小时后,发现下面的方式没问题。 npm install vue3-google-login 插件文档:vue3-google-登录 (devbaji.github.io) 修改main.js import ./assets/main.css import { createApp } from vue impor…

Dockerfile部署xxljob

使用Dockerfile部署xxljob 1. 背景 我们在使用定时任务调度时,通常会使用xxljob容器化部署xxljob,通常使用 docker pull xuxueli/xxl-job-admin:2.4.0 拉取镜像并启动容器。这种方式对于x86架构服务器来说,没有任何问题。但是在arm架构的服…

结构体、共用体、Makefile

一、结构体 1.1 结构体变量的初始化和赋值的方式 struct Student{int id;char name[32];int score; } struct Student s; s.id 1001; strcpy(s.name,"zhangsan"); s.score 98; struct Student{int id;char name[32];int score; }s; s.id 1001; strcpy(s.name,&…

数据清洗与预处理:从网页中提取的数据处理技术

目录 引言 一、数据清洗与预处理概述 1.1 数据清洗的定义 1.2 数据清洗的重要性 二、数据清洗与预处理的步骤 2.1 数据获取 2.2 数据去重 2.3 缺失值处理 2.4 异常值处理 2.5 数据格式化与标准化 2.6 数据转换与编码 2.7 数据整合与关联 2.8 数据可视化 三、技术…

C++11——function与bind

包装器 function包装器function的介绍function的使用function的使用场景function的意义 bind包装器bind的介绍bind的使用 function包装器 function的介绍 function是用来包装函数的,所以叫做包装器或者适配器,fuction的本质其实是一个类模板。 functio…

基于多域名,通过云运营商弹性负载,Nginx配置等基于的多租户系统部署

已经开发好久的系统,因为业务上没有需求,没有做上线部署,此系统为多租户系统,原来设计是通过租户码参数来识别的,每个租户访问,需要传自己的码过来,才能确定是哪个租户登录系统, 今…

数据结构和算法之树形结构(1)

文章出处: 数据结构和算法之树形结构(1) 关注码农爱刷题,看更多技术文章!! 树形结构是数据结构四种逻辑结构之一,也是被广泛使用的一种逻辑结构,它描述的是数据元素之间一对多的逻辑关系。树是一种非线性的数据结构&a…

SOMEIP_ETS_119: SD_Indicate_wrong_l4proto_param

测试目的: 验证DUT能够拒绝一个引用了带有错误l4proto参数(既不是UDP也不是TCP)的IPv4端点选项的SubscribeEventgroup消息,并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议,当接…

基于单片机的智能电话控制系统设计

摘要: 为了能够使用电话实现电器设备的控制,文中通过单片机及双音多频解码集成电路,使用用 户通过电话输入相应的指令就能够实现远程设备的智能化控制。文章主要对系统的构成、软件及 硬件设计进行了简单的介绍,并且对其中的电路…

出现conda不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法

发现是我的环境变量不对,需要改成conda.exe所在的目录下 如果不知道自己conda.exe在哪的 可以下载个everything这个软件 找东西很快 找到后 点击环境变量-系统变量-Path-新建-(你的conda.exe所在目录:绝对路径) 完成上述操作…

Day4:杨辉三角

题目&#xff1a;给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中&#xff0c;每个数就是左上方和右上方数的和。 import java.util.ArrayList; import java.util.List;public class Test {public static List<List<Integer>> generate(int numR…

【学术会议征稿】2024年先进控制系统与自动化技术国际学术会议(ACSAT 2024)

2024年先进控制系统与自动化技术国际学术会议&#xff08;ACSAT 2024&#xff09; 2024 International Conference on Advanced Control Systems and Automation Technologies 2024年先进控制系统与自动化技术国际学术会议&#xff08;ACSAT 2024&#xff09;将于2024年11月15…

solidwork装配体取消零件固定

前面有固定导致零件移动不了 右键&#xff0c;找到浮动

Three.js 3D人物漫游项目(上)

本文目录 前言1、项目构建1.1 安装依赖1.2 初始化1.3 项目结构1.4 初始化的项目运行 2、加载模型2.1 threejs三要素2.1.1 代码解读 2.2 加载模型2.2.1 代码解读 2.3 效果 前言 在数字技术的浪潮中&#xff0c;三维图形渲染技术以其独特的魅力&#xff0c;正逐步渗透到我们生活的…

react hooks--useMemo

概述 相当于计算属性!!! useMemo实际的目的也是为了进行性能的优化。 ◼ 如何进行性能的优化呢&#xff1f;  useMemo返回的也是一个 memoized&#xff08;记忆的&#xff09; 值&#xff1b;  在依赖不变的情况下&#xff0c;多次定义的时候&#xff0c;返回的值是相同…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格] Git仓库&#xff1a;https://gitee.com/msyycn/vue3-hei-ma.git 基本架子 - PageContainer 功能需求说明&#xff1a; 基本架子-PageContainer封装文章分类渲染 & loading处理文章分类添加编辑[element-plus弹层]文章分类删除…

k8s中的微服务

目录 一、什么是微服务 二、微服务的类型 三、IPVS模式 1、ipvs模式配置方式 &#xff08;1&#xff09;在所有节点中安装ipvsadm &#xff08;2&#xff09;修改master节点的代理配置 &#xff08;3&#xff09;重启pod 四、微服务类型详解 1、clusterip 示例&#…

Flink提交任务

第3章 Flink部署 3.1 集群角色 3.2 Flink集群搭建 3.2.1 集群启动 0&#xff09;集群规划 表3-1 集群角色分配 具体安装部署步骤如下&#xff1a; 1&#xff09;下载并解压安装包 &#xff08;1&#xff09;下载安装包flink-1.17.0-bin-scala_2.12.tgz&#xff0c;将该jar包…

有什么兼容macOS 15 Sequoia系统的加密软件?

前言&#xff1a;近日&#xff0c;苹果更新了 macOS 15 Sequoia正式版&#xff0c;已经有用户在电脑上安装使用了。在这个信息化时代&#xff0c;系统一直在更新&#xff0c;运用一些工具时需要考虑兼容性。 刚有个客户来问迅软&#xff1a;你们迅软DSE客户端支持新发布的macO…

Linux 磁盘清理重新格式化挂载脚本及问题解决

Linux 磁盘清理重新格式化挂载脚本&#xff1a;diskformat.sh #!/bin/bash for i in {1…8} do umount /data0$i done PIDARRAY() for i in a b c d e f g h do parted -s /dev/sd i m k l a b e l g p t p a r t e d − s / d e v / s d i mklabel gpt parted -s /dev/sd im…