永磁同步电机MTPA控制策略及matlab仿真

2023-12-15 10:40

本文主要是介绍永磁同步电机MTPA控制策略及matlab仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

一、目的

二、主体框架

三、转PI速PI

四、电流PI

五、MPTA环节

六、仿真结果

七、附加问题


 

一、目的

1、给自己写一份学习笔记

2、自己对MTPA控制中感到困惑的点的说明

 

二、主体框架

内置式永磁同步电机,那么就有Ld != Lq,

对于表贴式Ld=Lq,id等于0时,就是MPTA控制了(从转矩方程分析)。

所以表贴式一般用id等于0控制,内置式更适合用mpta控制。

我是在双PI控制的基础上加入MPTA控制的,如下图一

efbfccdc60744c88ac819bc98023fd46.png

图一

68adc39dfa514ed2ac7287236350d374.png

图二 加入MPTA后

 

三、转PI速PI

613802fecb35465ab1dda8f2901ff6b9.png

图三 转速PI

PI参数自己试凑了一些

3e6443c03f14412aa5a950d6b8c54bf3.png

图四 PI参数

 

四、电流PI

ebc2776bc7904e949d027eee58299f56.png

图五

 

电流PI参数

24fee39385c845de81a27ecd42be62bc.png

Id和Iq的PI环节是一样的

后面环节SVPWM,坐标变换等不具体展开

 

PMSM电机参数

011c319584d94b008abab6455100284c.png

五、MPTA环节

原理:参考文献 《电动汽车用 IPMSM 矢量控制策略研究》郑 飞

b0634e1aa0c641a9931bf2d096cef399.png

3b490ba8358a4690a59bb5bc8b1d1c0e.png

a02471d6c21946c28374af3e93713f14.png

以上是文献的原文内容,但是我感觉其中有几个错误之处。第一个是图中红色底纹的部分,id不应该全部提出来;第二个是id*的公式,在其他文献上找到的是下面这个:

90cfc2d00a2e4ef6af995c4607084ea1.png

另附网上找的一篇公式的详细推导:https://www.cnblogs.com/iable/archive/2012/03/09/4206899.html

有了以上的公式,就可以搭建MPTA了,可以用模块,这里为了更快采用了M函数。

外部:

9150848127ca45dca11a4848a0e3f9a7.png

内部:用M函数写的代码如下

function [iq,id] = fcn(Te,Pn,flux,Ld,Lq)% id、iq是电流环的给定,也就是MTPA的输出,无法用星号表示% 第一步 计算iq
num1 = 8*Te*flux/(3*Pn);
num2 = flux^2-4*(Ld-Lq)^2;
num4 = num1^2-4*num2*((0.5*num1/flux)^2-flux^2);
iq = (num1+sqrt(num4))/(2*num2);%第二步 计算id
num3 = flux*0.5/(Lq-Ld);
num5 = 0.25*flux^2/(Ld-Lq)^2+iq^2;
id = num3-sqrt(num5);% num = flux^2+4*(Ld-Lq)^2*iq^2;
% id = (-flux+sqrt(num))/(2*(Ld-Lq));
end

 

六、仿真结果

MPTA

6e371d032cb648d5acf9c3b74985fefc.pngf40cea10c14d4b7195e96640df208125.png

 

id=0

6a07227c8e6940b08fdf2641f2ae1548.png

转速和转矩曲线

 

ff3a0fe310f0410c8180a9e653a4b61d.png

电流曲线

仿真对比:从电流曲线上看,带动同样的20N转矩,电流幅值MPTA是比id=0更小一些的。 

 

七、附加问题

带动较大的转矩时转速和转矩出现波动,在MPTA和Id=0时都存在。

这也是我还没想明白的问题,希望看到的大佬有知道的可以指导一下。

bb0e18575a2d4c0ea0f9bddde30535fb.png

MPTA

 

cac9930bb4c94eae8b026ad1c376b1ce.png

id=0

 

 参考文献:《现代永磁同步电机控制原理及MATLAB仿真》袁雷

《电动汽车用 IPMSM 矢量控制策略研究》郑 飞

《车用永磁同步电机最大转矩电流比控制研究》李  强

《永磁同步电机MTPA弱磁控制方法研究》孙旭霞

《永磁同步电机最大转矩电流比控制》徐佳园

CSDN博主 : 沉沙丶

 

 

这篇关于永磁同步电机MTPA控制策略及matlab仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/496160

相关文章

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

MATLAB层次聚类分析法

转自:http://blog.163.com/lxg_1123@126/blog/static/74841406201022774051963/ 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征

MATLAB的fix(),floor()和ceil()函数的区别与联系

fix(x),floor(x)和ceil(x)函数都是对x取整,只不过取整方向不同而已。 这里的方向是以x轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。 fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整 ceil(x):向右取整 举例: 4个数:a=3.3、b=3.7、c=-3.3、d=-3.7 fix(a)=3 fl