带有扰动观测器的MPC电机控制

news2024/9/17 7:34:01

模型预测控制(Model Predictive Contro1, MPC)是一种先进的控制策略,虽然具有鲁棒性、建模简单、处理多变量系统、显示约束、预测未来行为和优化性能的能力等优势。它的不足在于预测控制行为的计算需要繁琐的计算量,以及抗干扰能力较弱。这里提出基于扰动观测器的鲁棒MPC控制策略;

速度模型建模

\dot{\omega}_m=\frac{1}{J_m}\left( k_fi_q-B_m\omega _m-T_L \right)

基于扰动前馈补偿的两种策略:

1) 通过扰动观测器估计当前时刻的负载转矩T_L,进而构造前馈组件\frac{T_L}{J_m}实现简单的前馈补偿来提高模型预测控制的抗干扰能力。

2) 除了当前时刻负载扰动的影响外,扰动未来可能行为的影响被主动嵌入到输出预测中,显著提高了时变扰动存在下的预测精度和动态性能,这类方法称为鲁棒MPC。

本次只针对第一个基于扰动前馈补偿策略设计,具体分为两方面:

第一方面扰动观测器设计;

第二方面MPC设计。

一、扩张状态观测器设计

\begin{cases} \dot{\omega}_m=\frac{1}{J_m}\left( k_fi_q-B_m\hat{\omega}_m-\hat{T}_L \right) -l_1\left( \hat{\omega}_m-\omega _m \right)\\ \dot{\hat{T}}_L=l_2\left( \hat{\omega}_m-\omega _m \right)\\ \end{cases}

具体地稳定性证明可以参考相关文献[1]。

估计负载扰动的方法有很多,这里就不多介绍,最常用的有扩张状态观测器和滑模观测器。想系统地了解和学习观测器系列的内容,可以参考视频B站up:拾小白电控foc。

二、MPC基本概念

MPC的主要步骤包括:

  • 模型预测:使用系统的数学模型预测未来的输出。
  • 滚动优化:在每个控制周期内,求解一个优化问题,找到最佳的控制序列。
  • 反馈修正:每个周期只实施第一个控制输入,然后重新测量系统状态并重复这个过程。

电机速度环一阶系统模型:

\dot{\omega}_m=\frac{1}{J_m}\left( k_fi_q-B_m\omega _m \right)

z=\omega _mi_q\left( k \right) =u\left( k \right)则采用前向欧拉离散化方法:

\begin{cases} z\left( k+1 \right) =\left( 1-\frac{T_sB_m}{J_m} \right) z\left( k \right) +\frac{T_sk_f}{J_m}u\left( k \right) =A_zz\left( k \right) +B_zu\left( k \right)\\ y_z\left( k \right) =z\left( k \right) =C_z\left( k \right)\\ \end{cases}

第一步预测:

\begin{cases} z\left( k+1 \right) =A_zz\left( k \right) +B_zu\left( k \right)\\ y_z\left( k+1 \right) =C_zz\left( k+1 \right)\\ \end{cases}

第二步预测:

\begin{cases} z\left( k+2 \right) =A_{2}^{2}z\left( k \right) +A_zB_zu\left( k \right) +B_zu\left( k+1 \right)\\ y_z\left( k+2 \right) =C_zz\left( k+2 \right)\\ \end{cases}

第三步预测:

\begin{cases} z\left( k+3 \right) =A_{z}^{3}z\left( k \right) +A_{z}^{2}B_zu\left( k \right) +A_zB_zu\left( k+1 \right) +B_zu\left( k+2 \right)\\ y_z\left( k+3 \right) =C_zz\left( k+3 \right)\\ \end{cases}

\cdots

N_p步预测:

\begin{cases} z\left( k+N_p \right) =A_{z}^{N_p}z\left( k \right) +A_{z}^{N_p-1}B_zu\left( k \right) +\cdots +\sum_{i=0}^{N_p-N_c}{A_{z}^{i}B_zu\left( k+N_c-1 \right)}\\ y_z\left( k+N_p \right) =C_zz\left( k+N_p \right)\\ \end{cases}

其中N_p是预测步长,N_c是控制步长。

定义预测输出序列Y_z、控制输入序列U_z如下:

Y_z=\left[ \begin{matrix} y_z\left( k \right)& y_z\left( k+1 \right)& \cdots& y_z\left( k+N_p \right)\\ \end{matrix} \right] ^T

U_z=\left[ \begin{matrix} u\left( k \right)& u\left( k+1 \right)& \cdots& u\left( k+N_c-1 \right)\\ \end{matrix} \right] ^T

因此,输出预测方程可以组织成矩阵形式如下:

Y_z=F_zz\left( k \right) +\varPhi _zU_z

F_z=\left[ \begin{matrix} C_zA_z& C_zA_{z}^{2}& \cdots& C_zA_{z}^{N_p}\\ \end{matrix} \right] ^T

\varPhi _z=\left[ \begin{matrix} C_zB_z& 0& \cdots& 0\\ C_zA_zB_z& C_zB_z& \cdots& 0\\ \vdots& \vdots& \vdots& \vdots\\ C_zA_{z}^{N_p-1}B_z& C_zA_{z}^{N_p-2}B_z& \cdots& C_zB_z\\ \end{matrix} \right]

参考信号序列:

Y_r=\left[ \begin{matrix} y_r\left( k \right)& y_r\left( k+1 \right)& \cdots& y_r\left( k+N_p \right)\\ \end{matrix} \right] ^T

因此代价函数被设计如下:

J=\left( Y_z-Y_r \right) ^TQ\left( Y_z-Y_r \right) +\left( U_z-U_r \right) ^TR\left( U_z-U_r \right)

其中z_r\left( k \right) =y_r\left( k \right)

展开代价函数:

J=\psi +\frac{1}{2}U_{z}^{T}GU_z+U_{z}^{T}H

G=2\left( \varPhi _{z}^{T}Q\varPhi _z+R \right)

\varPsi =\left( F_zz\left( k \right) -Y_r \right) ^TQ\left( F_zz\left( k \right) -Y_r \right) +U_{r}^{T}RU_r

H=2\left( \varPhi _{z}^{T}QF_zz\left( k \right) -\varPhi _{z}^{T}QY_r-RU_r \right)

将优化问题转化为二次规划约束问题,

\underset{U_z}{\min}J=\frac{1}{2}U_{z}^{T}GU_z+U_{z}^{T}H

求解得到最优的虚拟控制序列:

U^*=\left[ \begin{matrix} u^*\left( k \right)& u^*\left( k+1 \right)& \cdots& u^*\left( k+N_c-1 \right)\\ \end{matrix} \right] ^T

取第一个值。

加入约束U_{\min}\leqslant U_z\leqslant U_{\max},二次规划问题如下:

\underset{U_z}{\min}J=\frac{1}{2}U_{z}^{T}GU_z+U_{z}^{T}H \\ s.t.U_z\leqslant U_{\max} \\ -U_z\leqslant U_{\min}

三、带有扰动补偿的MPC控制

最终的控制律设计:

u\left( k \right) =u^*\left( k \right) +\frac{1}{k_f}\hat{T}_L

四、仿真

在0.5s处加入T_L=2.4N\cdot m

无扰动观测器的MPC控制

带有扰动观测器的MPC控制

转速跟踪:

负载扰动估计:

[1]Chen W, Yun J ,Guo L , et al.Disturbance-Observer-Based Control and Related Methods - An Overview.[J].IEEE Trans. Industrial Electronics,2016,63(2):1083-1095.

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

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

相关文章

34 列表常用方法——copy()

列表对象的 copy() 方法返回列表的浅复制。 浅复制,是指生成一个新的列表,并且把原列表中所有元素的引用都都复制到新列表中。 如果原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的。但是&a…

黛米·摩尔和她的孙女卢埃塔在这张飘逸的快照很亲密

卢埃塔和她的祖母黛米摩尔显然是最好的朋友,这张飘逸的快照证明了这一点。准备好“哇!” 7 月 26 日,摩尔分享了一张非常迷人的照片,照片上有她、她的两个女儿和她的孙女在她昂贵的后院。她在照片中配文说:“夏日&…

SX_初识GitLab_1

1、对GitLab的理解: 目前对GitLab的理解是其本质是一个远程代码托管平台,上面托管多个项目,每个项目都有一个master主分支和若干其他分支,远程代码能下载到本机,本机代码也能上传到远程平台 1.分支的作用&#xff1a…

Home Assistant ESPHome 第一次烧录ESP8266设备记录日志

流程简介 windows PC->usb 数据线->板载usb-ttl->esp8266 connect 编译固件 下载固件 esp web tools 写入固件 编译固件 go esphome add on 1.创建设备 选择ESP8266 2.编写.yaml配置, 3.编译-输出bin 烧录 4.烧录 打开 Web-ESPHome 5.查看日志 查看手机wif…

如何让企业在获客上拥有竞争力?云微客打造流量爆款

做了这么久的短视频,还是没有客户,如果你还在单一账号上死磕,那么就别做爆款的白日梦了!因为你的做法是干不过同行的,同行可能早就开通上百个账号在互联网上抢流量了。 想获客只用一个云微客AI矩阵系统,不用…

科普文:深入理解ElasticSearch体系结构

概叙 Elasticsearch是什么? Elasticsearch(简称ES)是一个分布式、可扩展、实时的搜索与数据分析引擎。ES不仅仅只是全文搜索,还支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等。 官网地址:…

实习日志2之windows上大模型(qwen2-7b)部署

一、模型部署 1、下载ollama(大模型本地部署工具),并安装 下载网址:https://ollama.com/ ollama是大模型部署方案,对应docker,本质也是基于docker的容器化技术。 2、下载大模型 在命令框,如windows系统在cmd窗口输…

汽车、能源、烟草、电力行业洞见:TDengine 用户大会亮点荟萃

近年来,随着物联网、车联网、工业互联网等前沿技术的迅猛发展,全球数据量呈指数级增长。作为大数据的一个重要组成部分,时序数据因其在实时监控、预测分析和智能决策中的独特优势,正逐步成为数字化转型的关键要素。尤其在 AI 时代…

如何使用Firefox浏览器连接IPXProxy设置海外代理IP教程

​Firefox浏览器是大家上网时经常会使用的一款工具。不过,有时候我们会遇到一些网站无法直接访问的情况。这时候,通过海外代理IP,比如像IPXProxy代理这样的服务,可能就能帮助我们进入那些受限制的网站,获取我们所需的资…

如何通过 CloudCanal 实现从 Kafka 到 AutoMQ 的数据迁移

01 引言 随着大数据技术的飞速发展,Apache Kafka 作为一种高吞吐量、低延迟的分布式消息系统,已经成为企业实时数据处理的核心组件。然而,随着业务的扩展和技术的发展,企业面临着不断增加的存储成本和运维复杂性问题。为了更好地…

Discourse 如何通过终端工具访问 PGSQL

PGSQL 在 Discourse 中是通过容器方式运行的,要访问 PGSQL 中的数据那么首先需要进入到容器后才可以。 进入容器的命令为: cd /var/discourse/./launcher enter appsu discoursepsql discourse最后的命令是登录到运行在容器中的 pgsql。 查看 pgsql 上…

CTFshow--Web--代码审计

目录 web301 web302 web303 web304 web305 web306 web307 web308 web309 web310 web301 开始一个登录框, 下意识sql尝试一下 发现 1 的时候会到一个 checklogin.php 的路径下, 但啥也没有 好吧, 这是要审计代码的 ,下载好源码, 开始审计 看了一下源码 , 应该就是sql…

thinkPHP开发的彩漂网站源码,含pc端和手机端

源码简介 后台thinkPHP架构,页面程序双分离,Mysql数据库严谨数据结构、多重数据审核机制、出票机制和监控机制,html5前端技术适用移动端,后台逻辑更多以server接口可快捷实现对接pc和ap,下载会有少量图片素材丢失,附件有下载说明前端demo账户密码和后台管理地址管理员账户密码…

c++修炼之路之二叉搜索树

目录 前言 一:二叉搜索树的介绍 二:二叉搜索树的实现 1.查找 2.insert(插入) 3.erase(删除) 4.析构函数 5.拷贝构造 6.赋值重载 7.插入,删除,查找的递归版本 三:二叉搜索树的应用 四:二叉搜索…

精灵图的使用——网页制作技巧

把许多小图标集中在一张背景透明的图片上,这种图片叫做精灵图,如下图。 在线工具地址:http://www.spritecow.com/ 通过工具可以快速找到图标在精灵图上的坐标位置。 首先,我们打开工具地址,点击第一个按钮。 点击后&am…

LeetCode 算法:搜索二维矩阵 c++

原题链接🔗:搜索二维矩阵 难度:中等⭐️⭐️ 题目 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果…

实战:ZooKeeper 操作命令和集群部署

ZooKeeper 操作命令 ZooKeeper的操作命令主要用于对ZooKeeper服务中的节点进行创建、查看、修改和删除等操作。以下是一些常用的ZooKeeper操作命令及其说明: 一、启动与连接 启动ZooKeeper服务器: ./zkServer.sh start这个命令用于启动ZooKeeper服务器…

手搓排序算法:插入排序、选择排序

文章目录 插入排序直接插入排序希尔排序内层循环时间复杂度计算 选择排序直接选择排序优化 堆排序 插入排序 直接插入排序 时间复杂度最差:大的数据都在左边,小的数据在右边,随着有序区间增大,交换次数增多 时间复杂度最优&…

C#知识|文本文件操作:删除、复制、移动文件的操作

哈喽,你好啊,我是雷工! 接下来学习文件的删除和复制,实际应用场景,当软件具有自动在线更新功能时,需要先检测服务器是否具有更新版本的安装包,如果有的话需要将其复制到本地进行升级安装,如果有勾选自动清理安装包功能的话,还可以将安装包删除。 01 删除文件 实现功能…

使用MultipartFile来上传单个及多个文件代码示例(前端传参数及后端接收)

背景 前端使用vue或vue+vant上传文件 后端java接收MultipartFile和其他参数 一、MultipartFile上传单个文件代码示例 1.1 MultipartFile上传单个文件,不包含其它参数 1.1.1 控制层代码如下: /*** 1、上传单个文件,不包含其它参数* */ @PostMapping( "/upload")…