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

news2024/11/18 2:42:59

目录

前言

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模块的使用。也没实际上硬件系统进行测试,结果仅供参考。

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

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

相关文章

智能井盖传感器能不能监测井盖位移

智能井盖传感器能够精准监测井盖的位移。这些传感器运用了前沿科技对井盖状态进行实时监测。一旦井盖出现异常移动传感器会立即捕捉到信号,并通过与互联网相连接的智能系统发出警报或记录数据。这种智能监测仪为城市或相关部门的井盖管理提供了实时数据支持&#xf…

Acer宏碁Predator掠夺者笔记本PH315-51原装出厂Windows10系统工厂模式ISO镜像文件

下载链接:https://pan.baidu.com/s/1GGRKYLQzl6SxdtCXbnzhrA?pwdrel7 提取码:rel7 宏基原厂Win10系统自带重置功能、带所有驱动、PredatorSense风扇键盘控制中心、Office办公软件、出厂主题壁纸、系统属性Acer宏基专属的LOGO标志、 Acer Care Center…

C#,数值计算——插值和外推,双线性插值(Bilin_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 双线性插值 /// interpolation routines for two dimensions /// Object for bilinear interpolation on a matrix. /// Construct with a vector of x1. /// value…

Vue3-watchEffect函数

Vue3-watchEffect函数 功能&#xff1a;watchEffect 函数在一开始时就会执行一次&#xff0c;而当中的回调函数的属性发生变化&#xff0c;那么watchEffect 就会再执行一次&#xff0c;主要作用还是在于监视回调函数每次的变化。 // App.vue <template><h2>计数…

Idea 创建 Spring 项目(保姆级)

描述信息 最近卷起来&#xff0c;系统学习Spring&#xff1b;俗话说&#xff1a;万事开头难&#xff1b;创建一个Spring项目在网上找了好久没有找到好的方式&#xff1b;摸索了半天产出如下文档。 在 Idea 中新建项目 填写信息如下 生成项目目录结构 pom添加依赖 <depende…

Appium自动化测试完全指南

背景 在当今快速发展的互联网时代&#xff0c;UI 需求越来越大、越来越高大上、越来越复杂&#xff0c;相对应的 App 作为最重要的大前端的一部分&#xff0c;也不可避免。 App 迭代的不断加速&#xff0c;需求的不断复杂化&#xff0c;给测试人员增加了非常大的工作量&#…

CTFhub-RCE-过滤目录分隔符 /

根据源代码信息可知&#xff0c;过滤掉了/ <?php $res FALSE; if (isset($_GET[ip]) && $_GET[ip]) { $ip $_GET[ip]; $m []; if (!preg_match_all("/\//", $ip, $m)) { $cmd "ping -c 4 {$ip}"; exec($cmd,…

代码执行相关函数以及简单例题

代码/命令 执行系列 相关函数 &#xff08;代码注入&#xff09;

【开源】基于Vue和SpringBoot的民宿预定管理系统

项目编号&#xff1a; S 058 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S058&#xff0c;文末获取源码。} 项目编号&#xff1a;S058&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色…

什么是 802.1X?它是如何工作的?

什么是 802.1X&#xff1f;它是如何工作的&#xff1f; 什么是IEEE 802.1X&#xff1f;802.1X是如何工作的&#xff1f;802.1X EAP安全是什么&#xff1f;802.1X用在哪里&#xff1f;IEEE 802.1X和Wi-Fi是否相同&#xff1f;什么是有线802.1X&#xff1f; 802.1X的安全性有多高…

(论文阅读)TiDB:一款基于Raft的HTAP数据库

引言 混合事务分析处理&#xff08;HTAP&#xff09;数据库要求隔离处理事务查询和分析查询&#xff0c;以消除它们之间的干扰。要实现这一点&#xff0c;有必要维护为这两种查询类型指定的数据的不同副本。然而&#xff0c;为存储系统中的分布式副本提供一致的视图是一项挑战…

滚雪球学Java(09-3):Java中的逻辑运算符,你真的掌握了吗?

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

7.docker运行redis容器

1.准备redis的配置文件 从上一篇运行MySQL容器我们知道&#xff0c;需要给容器挂载数据卷&#xff0c;来持久化数据和配置&#xff0c;相应的redis也不例外。这里我们以redis6.0.8为例来实际说明下。 1.1 查找redis的配置文件redis.conf 下面这个网址有各种版本的配置文件供…

Android Studio Error “Unsupported class file major version 61“---异常信息记录

编译时异常信息 原因及解决办法 问题出在JAVA 17上&#xff0c;并且使用的Gradle JDK是&#xff1a;Android Studio java home版本17.0.1将其更改为&#xff1a;Android Studio默认JDK版本11.0.10 即可解决 操作步骤 1 2 3

基于STC12C5A60S2系列1T 8051单片的IIC总线器件模数芯片PCF8591实现模数转换应用

基于STC12C5A60S2系列1T 8051单片的IIC总线器件模数芯片PCF8591实现模数转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC总线器件模数芯片PCF8591介绍通过I…

RT-Thread STM32F407 PWM

为了展示PWM效果&#xff0c;这里用ADC来采集PWM输出通道的电平变化 第一步&#xff0c;进入RT-Thread Settings配置PWM驱动 第二步&#xff0c;进入board.h&#xff0c;打开PWM宏 第三步&#xff0c;进入STM32CubeMX&#xff0c;配置时钟及PWM 第四步&#xff0c;回到R…

免费开源的区域屏幕录制(gif转换)工具(支持编辑功能)

软件优点&#xff1a;区域截屏&#xff0c;直接转换为gif即刻分享&#xff0c;免费开源&#xff0c;支持编辑功能 它可以让你轻松地录制屏幕&#xff0c;摄像头或画板的动画&#xff0c;并编辑、保存为 GIF&#xff0c;视频或其他格式。 下载并安装 ScreenToGif 首先&#xf…

CentOS挂载:解锁文件系统的力量

目录 引言1 挂载简介2 挂载本地分区3 挂载网络共享文件系统4 使用CIFS挂载结论 引言 在CentOS&#xff08;一种基于Linux的操作系统&#xff09;上挂载文件系统是一项常见而重要的任务&#xff0c;无论是将新的磁盘驱动器添加到系统&#xff0c;还是挂载网络共享资源&#xff…

C#检查服务状态,以及进行服务启停

1. linux环境 linux环境通过执行bash命令直接执行&#xff1a; public string RunCmdLinux(string cmd){var proc new Process();System.Console.Write($"Run Linux cmd > [{cmd}] START!");proc.StartInfo.CreateNoWindow true;proc.StartInfo.FileName &…

【如何学习Python自动化测试】—— 自动化测试环境搭建

1、 自动化测试环境搭建 1.1 为什么选择 Python 什么是python&#xff0c;引用python官方的说法就是“一种解释型的、面向对象、带有励志语义的高级程序设计语言”&#xff0c;对于很多测试人员来说&#xff0c;这段话包含了很多术语&#xff0c;而测试人员大多是希望利用编程…