基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

news2024/11/20 18:47:12

关注“电气仔推送”获得资料(专享优惠)

模型简介

针对永磁同步电机调速系统的响应性能和抗干扰能力问题,本文做了四个仿真,分别为:永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最优滑模控制的永磁同步电机调速系统及改进滑膜控制的永磁同步电机调速系统。

重点是改进滑膜控制永磁同步调速系统,在传统滑模控制器的基础上,对趋近率和开关函数进行改进得到最优滑模控制器的函数表达式,将滑模控制与扰动观测器相结合,以参数变化及负载的扰动作为前馈补偿,当负载及电机参数发生变化时,控制器能克服负载及参数扰动对系统的影响,有效的抑制系统的抖振现象,同时引入饱和函数,进一步的提高系统的鲁棒性。

最后通过仿真对比了四种方法的控制性能,效果非常完美!!

改进滑模控制器设计

取PMSM状态变量为:

式中:ωref为目标转速,ωm为电机输出转速。

定义系统滑模面函数为:

对滑模面函数求导,得:

在电机实际控制时,滑模控制方法存在高频抖振问题,则需要选取合适的指数趋近率可以有效的减弱滑模抖振。因此,为了提高系统的性能,将引入改进的新型趋近率,其改进的趋近率为

当误差增大时,等速趋近项使系统状态变量接近滑模面;同时,指数趋近项使系统状态变量减少至0。

得控制器的输出方程为:

采用饱和函sat(s,δ)代替sgn(s),能有效的抑制抖振,并进一步提高系统的鲁棒性。将观测的扰动及负载转矩的摄动值 β^带入到上式=可得:

以参数变化及负载的扰动作为前馈补偿,当负载及电机参数发生变化时,控制器能克服负载及参数扰动对系统的影响,有效的抑制系统的抖振现象,同时引入饱和函数,进一步的提高系统的鲁棒性。

仿真模型

设定目标转速为1000r/min,直流侧电压 为311v,初始负载为0N.m,在0.4s突加10N.m的负载。改进滑膜控制算法、最优滑模、PI及传统滑模的速度响应曲线如下:

由结果图可知,在系统启动时,改进滑膜控制的速度响应略次与最优滑膜控制,但在负载扰动时,改进滑膜控制的抗扰性能很好,鲁棒性很高!!

参考文献:

王要强——永磁同步电机新型趋近律滑模控制策略

段方宾——永磁同步电机最优滑模控制

李政——永磁同步电机调速系统的积分型滑模变结构控制

详细建模说明文件

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

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

相关文章

Windows 系统 Solr 8.11.3 安装详细教程(最新)

Windows 系统 Solr 8.11.3 安装详细教程 说明什么是Solr下载与解压如何启动启动命令:浏览器中打开dashboard其他命令查看关闭命令 说明 本次只是简单安装,为了在项目中使用,如果在公开服务器中安装需要更改开放端口,配置权限等。 …

echarts 图例有数值但是柱子不显示问题

如图所示在做echarts图表时发现柱状图有数值,但是柱子没展示,后来发现这个没展示的数值是最小值和左侧y轴的最小值保持持平了,所以没有展示出来。 将下图中设置y轴最小值为0就可以了 yAxis: [{type: value,name: 产出,min: 0max: dataMax,ax…

使用Visual Studio Code记笔记

因为学习需要,记笔记是很有必要的,平常发CSDN(都让CSDN是很棒的哈),后来使用VS Code的时候发现了很多插件,觉得做笔记还是相对不错的,主要用到的还是Markdown 主要设计的插件包括: …

为用户转出并处理MODIS NDVI数据案例过程记述,希望对大家有用!

最近为用户转出和处理了一次MODIS NDVI数据,我将过程做了个总结供大家参考!希望能帮助到一些下载和处理数据的朋友! 使用工具为三个:地图资源工具 和 GIS数据转换器-栅格,qgis。 1.选择【数据下载功能】,然后选择MO…

【C++】相机标定源码笔记- 立体视觉相机的校准和图像矫正类

类主要用于双目相机的标定和矫正。它包含了读取和保存相机模型、计算标定参数以及矫正图像的功能。通过这些功能,可以实现双目相机的标定和矫正,从而提高双目相机的精度和稳定性。 公有函数: 构造函数、带参构造函数、析构函数、读取双目相机…

java基于ssm+jsp 房屋租赁系统

1 管理员登录 管理员输入个人的用户名、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的用户名、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的用户名、密码,…

Allegro如何画2D弧形线?

Allegro如何画2D弧形线? 在用Allegro进行PCB设计时,画弧形线的主要是在对PCB进行邮票孔拼板的时候。 具体操作方法如下: 1、选择菜单栏Add 选择3pt Arc(3pt 圆弧) Add的下拉菜单的各项功能作用如下图

influxdb时序数据库使用

influxdb时序数据库使用 influxdb时序数据库使用免费influxdb申请云无服务器Telegraf安装influxdb安装mac安装Redhat && Centos安装docker安装Kubernetes安装windows安装 influx 网页使用influx CLI 安装influx命令行界面influx配置项权限认证配置管理 API 令牌InfluxD…

http.cookiejar.LoadError: Cookies file must be Netscape formatted,not JSON.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

解析桥式整流电路

下面这个桥式整流电路出场率很高,看着一定眼熟。 事实证明,强行灌输的东西总是难以下咽。记得读书那会,第一次看到这个电路时被吓到了,以至于直到这门课结束了也没搞清楚。 本文就来分析一下此电路中电流的走向,进而理…

1、什么是SSD?

概念 SSD(Solid State Drive)固态硬盘,是以闪存为介质的存储设备;这里突出的重点是闪存。 闪存,也就是常说的flash,分为NOR 和 NAND; NOR的地址线和数据线分开,所以NOR芯片可以像…

Mojo — 适用于所有人工智能开发人员的编程语言

Mojo语言是一个由人工智能公司Modular推出的全新编程语言,专为AI开发者设计。Mojo的语法与Python相似,但结合了Python的易用性和C语言的高性能,旨在解锁AI硬件的可编程性和AI模型的可扩展性。 Modular这个公司则是一个非常年轻的新生AI创业公…

Spark SQL 的总体工作流程

Spark SQL 是 Apache Spark 的一个模块,它提供了处理结构化和半结构化数据的能力。通过 Spark SQL,用户可以使用 SQL 语言或 DataFrame API 来执行数据查询和分析。这个模块允许开发者将 SQL 查询与 Spark 的数据处理能力结合起来,实现高效、优化的数据处理。下面是 Spark S…

【CT】LeetCode手撕—19. 删除链表的倒数第 N 个结点

题目 原题连接:19. 删除链表的倒数第 N 个结点 1- 思路 模式识别:删除倒数第 n 个结点 ——> 定义 dummyHead 并用双指针实现删除逻辑 2- 实现 ⭐19. 删除链表的倒数第 N 个结点——题解思路 class Solution {public ListNode removeNthFromEnd(Li…

选项类型组件支持动态默认值功能

06/26 主要更新模块概览 动态默认 批量设置 应用设置 表单组件 01 表单管理 1.1 【表单组件】-选项类型组件新增动态默认值功能 说明: 原选项类型默认值只支持固定默认值,且关联其他表单数据无法设置默认值,现增加…

体验升级:扫描全能王智能高清滤镜2.0全面测评

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

U盘数据恢复实战指南:原因、方案与预防措施

一、引言:U盘数据恢复概述 在数字化时代,U盘作为一种便携式存储设备,广泛应用于个人和企业中。然而,由于各种原因,U盘数据丢失的问题时有发生。U盘数据恢复技术便是在这种情况下应运而生,它帮助用户在数据…

灌水神刊《Heliyon》发文量暴涨3倍,跻身升JCR一区了!

本周投稿推荐 SSCI • 1区,4.0-5.0(无需返修,提交可录) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.1-0.5&…

Redis基础教程(五):string字符串

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

atcoder abc 360

A a healthy breakfast 问题&#xff1a; 思路&#xff1a;扫描给定字符串&#xff0c;看M和R哪个先出现 代码&#xff1a; #include <iostream>using namespace std;int main() {int cnt 0;string str;cin >> str;for(auto t: str) {if(t R) {cout << …