Simulink 自动代码生成电机控制:模型预测控制(MPC)模块使用总结(1)

目录

前言

MPC模块使用步骤和参数设计

 电机控制系统验证

 MPC参数调整

 MPC和PI控制器比较

总结 


前言

前面尝试了基于电机DQ轴电流环的传递函数设计PI控制器的参数,最近尝试了下模型预测控制(MPC)对电流环进行控制,这里总结一下方便日后回顾。关于MPC的基本原理随便搜一下一大堆资料这里不再多说,下面主要介绍怎么把电机控制的双电流环替换成MPC控制,如果用MPC模块设计MPC的参数。

永磁同步电机矢量控制电流环参数整定方法----Matlab controlSystemDesigner的使用_永磁同步电机模型传递函数-CSDN博客

MPC模块使用步骤和参数设计

新建一个Simulink模型,在模型窗口里找到MPC模块,如下图所示:

 取消勾选Measured disturbance, 暂且不用这个功能。

 创建模型如下 ,D1Q1分别是DQ轴的功率部分传递函数,参考PI参数整定的文章。

 双击MPC模型,配置默认选项

 Sample time: 采样时间,这里电机的控制频率是10K, 采样时间设置成0.0001s. 

Prediction Horizon: 预测的范围,越小响应越快,但是稳定性会差些,根据实际调整即可,先用默认的后面可在线调整

Number of manipulated variables: 这里设置为2是因为输入有两个DQ轴电流环一个两个输入和两个输出

Number of measured outputs: 设置为2,同上。

 配置好后点Design, 弹出如下窗口,选择MPC Structure.

 确定采样时间和输入输出数量,直接点Import

 左边窗口会弹出plant, mpc1, scenario1。这时候会生成一组默认参数,可以把下图中的响应放大看细节。

 如下,放大之后系统是能收敛的。这时候就可以点TUNING去调整MPC的参数。

 下图框里分别是采样时间,预测范围,控制范围

 把控制范围改小,响应变缓,可暂且设置一个收敛效果还不错的参数,一会把模型放到电机控制的系统仿真进行验证,在线调参等等。

 如下,需要设置约束条件,其实就是设置输入输出的上下限,还有变化率,根据电机控制环路的输入输出合理设计就行。变化率太快容易超调,太小响应慢,合理选择即可。

 配置好后,如下,ECR是软约束,前面配置后面就可以不用管:

 权重会默认生成,如果系统收敛了可以先不用动,后面慢慢优化。通过调节滑块优化控制性能,如果能正常收敛也可以先不用管。

 

 配置完成后点更新模块并运行仿真。

 可以看到DQ轴系统能正常的收敛,这是基于传递函数的验证,接下来直接上电机控制仿真系统。

 电机控制系统验证

把原先电机的控制系统PI控制输出断掉,换成MPC。如下,mo分别是DQ轴电流输入,ref就是DQ轴电流的给定参考值。输出是Vd和Vq。

 设计好MPC的参数后会有一个MPC控制器,如下图。可以在WorkSpace里导出设计好的MPC控制器,方便下一次运行的时候不需要再重新调参。

 在Others里调整数据类型,避免生成代码的时候不会报错。

 运行仿真,电流环控制,仿真结果如下,控制没有问题至少MPC控制器能正常工作。

 看看给定的电流和反馈的电流:

给定和反馈都能快速响应,会有些稳态误差,虽然能控住但是性能并不理想。

 看看细节,十几个周期之后才进入稳态。

 MPC参数调整

 下面对MPC的控制参数进行调整,先把预测范围从10改到2,效果有明显提升。

再看看细节,三四个周期就进入了稳态。那是不是再把预测范围改小还会更快?

 

 直接把预测范围改到1,系统还是能控住,不过有明显的超调了。

 把细节放大看看,也是几个周期就稳定了,不过相比之前的效果超调更大,运气比较好,系统响应都比较快,后面有时间再试试其他参数的特性。

 MPC和PI控制器比较

这里简单比较下响应和生成代码的复杂度,仅供参考。

先把电机控制的模型改成PI控制电流环。比对MPC,稳态误差更小,几乎重合在一起了。

 PI控制器的响应速度,给定Q轴电流和反馈的响应PI控制器甚至更快些。

 DQ轴响应都挺快

 MPC模块生成代码,下面只是生成的一部分代码,生成的代码比PI控制器的复杂太多。一个可能是MPC模块里添加的冗余功能太多,比如系统自带的PI控制器生成的代码就比自己搭的还复杂。仅供参考,也可以自己搭个MPC测试。

总结 

从仿真效果和生成代码的效果来看MPC在这种电机环路控制上优势并不明显,甚至表现不如PI,MPC同样依赖被控对象的传递函数,需要调整的参数也更多,对于算力低的MCU还是PI控制器更有性价比。当然MPC还有很多参数可以优化,这里并没有花太多时间优化,主要介绍一下MPC模块的使用。也没实际上硬件系统进行测试,结果仅供参考。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 运算符二

逻辑运算符 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。 运算符号作用NOT 或 !逻辑非AND逻辑与OR逻辑或XOR逻辑异或 1、与 mysql> select 2 and 0; --------- | 2 and 0 | --------- | 0 | -…

pipeline agent分布式构建

开启 agent rootjenkins:~/learning-jenkins-cicd/07-jenkins-agents# docker-compose -f docker-compose-inbound-agent.yml up -d Jenkins配置添加 pipeline { agent { label docker-jnlp-agent }parameters {booleanParam(name:pushImage, defaultValue: true, descript…

【日常】爬虫技巧进阶:textarea的value修改与提交问题(以智谱清言为例)

序言 记录一个近期困扰了一些时间的问题。 我很喜欢在爬虫中遇到问题,因为这意味着在这个看似简单的事情里还是有很多值得去探索的新东西。其实本身爬虫也是随着前后端技术的不断更新在进步的。 文章目录 序言Preliminary1 问题缘起1.1 Selenium长文本输入阻塞1.2…

60V100V降压ic推荐

在电源降压领域,一款优秀的降压IC需要具备高效、稳定、安全、易于使用等特性。今天,我们为大家推荐一款具有9.2V至100V输入电压范围、4.5A连续输出电流、96%峰值效率、495μA工作静态电流、峰值电流模式控制、100V19mQ高边和低边MOS、固定150kHz开关频率…

C/C++ 字符 - ‘0‘ 或者 + ‘0‘ 的含义及区别(从ASCII码深度解析,小白一看就懂!!!)

目录 一、前言 二、什么是ACSII码? 三、深度理解字符 - ‘0‘ 或者 ‘0‘ 四、实战演练 五、共勉 一、前言 想必大家在刷题或者是看别人写的代码中,经常会遇到 s[i]-’0‘ 或者 s[i]’0‘ 这个情况,初次遇到这种代码,肯定是…

4.1指令系统-指令格式

现代计算机的结构 计算机的工作过程 指令的定义 指令(又称机器指令): 是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。 一台计算机的所有指令的集合构成改机指令系统,也称为指令集。 注意&#xff1…

拼多多百亿补贴商品详情API接口系列

拼多多API接口是拼多多网提供的一种应用程序接口,允许开发者通过程序访问拼多多网站的数据和功能。通过拼多多API接口,开发者可以开发各种应用程序,如店铺管理工具、数据分析工具、购物比价工具等。在本章中,我们将介绍拼多多API接…

Jquery 通过class名称属性,匹配元素

UI自动化过程中,常常需要判断某个元素是否满足条件,再走不通的脚本逻辑;、本文介绍如何通过jquery判断菜单是否展开,来决定是否执行菜单展开脚本;Jquery通过class名称属性,匹配元素 我们先分析,…

HTML5学习系列之项目实战1

HTML5学习系列之项目实战1 前言代码记录问题总结 前言 学习记录 代码 <div id"player"><audio id"musicbox"></audio><div id"controls" class"clearfix controls"><div id"play" class"…

Android 当中的 Fragment 协作解耦方式

Android 当中的 Fragment 协作解耦方式 文章目录 Android 当中的 Fragment 协作解耦方式第一章 前言介绍第01节 遇到的问题第02节 绘图说明 第二章 核心代码第01节 代理人接口第02节 中间人 Activity第03节 开发者A第04节 开发者B第05节 测试类 第一章 前言介绍 第01节 遇到的…

Ubuntu22.04 Apache2安装SSL证书 https

一、免费证书申请 https://help.aliyun.com/zh/ssl-certificate/user-guide/overview-of-free-certificates 得到 三、配置 执行以下命令&#xff0c;打开default-ssl.conf文件。 vim /etc/apache2/sites-available/default-ssl.conf 在default-ssl.conf配置文件中&#xff…

List is a raw type. References to generic type List<E> should be parameterized

List is a raw type. References to generic type List<E> should be parameterized 都是代码习惯问题懒

大型且复杂项目的资源管理怎么做?

职场中&#xff0c;我劝你做个“显眼包”&#xff01;作为天天背锅、踩坑、救火的项目经理&#xff0c;积极响应、随时反馈、成果汇报这些一样都不落下&#xff0c;项目才能顺利开展。这不&#xff0c;项目经理小李就是由于自己过于低调且内敛的性格&#xff0c;差点把项目都做…

影像仪全景导航,快速定位产品特征!

**在工业制造领域中&#xff0c;影像仪全景导航可以提供全景影像&#xff0c;将整个区域的图像精准地捕捉下来&#xff0c;并通过软件算法实现高效处理&#xff0c;以呈现出更加清晰和详细的视图。**这一技术不仅可以提高定位精度&#xff0c;同时还能大幅度提升定位效率。与自…

Pytorch torch.exp()的使用举例

代码实验展示: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\Users\chenxuqi>python Python 3.7.7 (default, May 6 2020, 11:45:54) [MSC v.191…

轻量封装WebGPU渲染系统示例<34>-数据驱动之Json构建场景

场景和数据之间的互通&#xff1a; 场景数据化或者数据化场景&#xff0c;是当前的主流场景数据构成方式。方便传输方便交换甚至是交互。 内置数据互通机制更有利于用户在各种应用场合下实现具体的3D相关的应用需求。用户只需要关心标准的或者约定好的数据定义及操作方式就能方…

GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 频率点搜索 4.2. 捕获跟踪 4.3. 相关峰检测 5.算法完整程序工程 1.算法运行效果图预览 低信噪比下仿真结果如下&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...…

直接插入排序

一.介绍. 其基本思想为数据元素被已经放入一个已经排好的有序数组中&#xff0c;现插入一个元素进入该数组&#xff0c;按顺序&#xff08;即大小关系&#xff09;放进适当位置&#xff0c;并且其后面的元素都向后移动移位。 如图&#xff1a; 对于上述问题&#xff1a; 代码…

【AI视野·今日Sound 声学论文速览 第三十六期】Mon, 30 Oct 2023

AI视野今日CS.Sound 声学论文速览 Mon, 30 Oct 2023 Totally 7 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Style Description based Text-to-Speech with Conditional Prosodic Layer Normalization based Diffusion GAN Authors Neeraj Kumar, A…

湖科大计网:网络层

一、网络层概述 一、基本概念 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间传输。 若只有单个网络&#xff0c;只需要物理层和数据链路层即可。 不同的异构网络需要路由器将其互连&#xff0c;路由器的每一个接口代表一个不同的网络&#xff0c;也区…