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

模型预测控制(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.rhkb.cn/news/386109.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPIO子系统

1. GPIO子系统视频概述 1.1 GPIO子系统的作用 芯片内部有很多引脚,这些引脚可以接到GPIO模块,也可以接到I2C等模块。 通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚: 当一个引脚被复用为GPIO功能时,我们可以去设…

数组模拟单调栈--C++

本题的计算量较大,用暴力算法会超时,的用别的方法,我们假设在左边找第一个比它小的数,那么在左边出现一次的数如果比右边大了,那么就不会在出现了,我们将它删除掉就可以了,用这个方法我们可以的…

28.Labview界面设计(上篇) --- 软件登陆界面设计与控件美化

摘要: 作为GUI界面设计的老大哥般的存在,Labview本身的G语言属性就展现了其优越的外观设计能力,其中不乏许多编程爱好者、架构师等的喜欢使用Labview进行界面相关的设计,而使用Matlab、Python等软件写底层数据处理模块、自动化脚本…

Javaweb项目|springboot医院管理系统

收藏点赞不迷路 关注作者有好处 文末获取源码 一、系统展示 二、万字文档展示 基于springboot医院管理系统 开发语言:Java 数据库:MySQL 技术:SpringSpringMVCMyBatisVue 工具:IDEA/Ecilpse、Navicat、Maven 编号:…

通信原理-思科实验五:家庭终端以太网接入Internet实验

实验五 家庭终端以太网接入Internet实验 一实验内容 二实验目的 三实验原理 四实验步骤 1.按照上图选择对应的设备,并连接起来 为路由器R0两个端口配置IP 为路由器R1端口配置IP 为路由器设备增加RIP,配置接入互联网的IP的动态路由项 5.为路由器R1配置静…

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

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

手写spring简易版本,让你更好理解spring源码

首先我们要模拟spring,先搞配置文件,并配置bean 创建我们需要的类,beandefito,这个类是用来装解析后的bean,主要三个字段,id,class,scop,对应xml配置的属性 package org…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十三章 输入子系统实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

IP 泄露: 原因与避免方法

始终关注您的IP信息! 您的IP地址不仅显示您的位置,它包含几乎所有的互联网活动信息! 如果出现IP泄漏,几乎所有的信息都会被捕获甚至非法利用! 那么,网站究竟如何追踪您的IP地址?您又如何有效…

Catalyst优化器:让你的Spark SQL查询提速10倍

目录 1 逻辑优化阶段 2.1 逻辑计划解析 2.2 逻辑计划优化 2.2.1 Catalys的优化过程 2.2.2 Cache Manager优化 2 物理优化阶段 2.1 优化 Spark Plan 2.1.1 Catalyst 的 Join 策略 2.1.2 如何决定选择哪一种 Join 策略 2.2 Physical Plan 2.2.1 EnsureRequirements 规则 3 相关文…

【Unity2D 2022:Data】读取csv格式文件的数据

一、创建csv文件 1. 打开Excel,创建xlsx格式文件 2. 编辑卡牌数据:这里共写了两类卡牌,第一类是灵物卡,具有编号、卡名、生命、攻击四个属性;第二类是法术卡,具有编号、卡名、效果三个属性。每类卡的第一…

qt 如何制作动态库插件

首先 首先第一点要确定我们的接口是固定的,也就是要确定 #ifndef RTSPPLUGIN_H #define RTSPPLUGIN_H #include "rtspplugin_global.h" typedef void (*func_callback)(uint8_t* data,int len,uint32_t ssrc,uint32_t ts,const char* ipfrom,uint16_t f…

【Maven学习】-3.进阶

文章目录 3. 进阶3.1 maven依赖传递特性 3.2 依赖冲突3.2.1 自动选择原则3.2.2 手动排除 3.3 聚合工程3.3.1 继承介绍继承作用继承语法父工程依赖统一管理-dependencyManagement 3.3.2 工程聚合关系简介聚合作用聚合作用 3.4 私服3.4.1 简介3.4.2 Nexus下载安装Nexus3Nexus2 3.…

带你学会Git必会操作

文章目录 带你学会Git必会操作1Git的安装2.Git基本操作2.1本地仓库的创建2.2配置本地仓库 3.认识一些Git的基本概念3.1操作流程: 4.一些使用场景4.1添加文件场景一4.2查看git文件4.3修改文件4.4Git版本回退4.5git撤销修改 5.分支管理5.1查看分支5.2创建本地分支5.3切…

IOS-05 Swift循环控制语句

在 Swift 编程语言中,控制语句用于决定程序的执行流程,使我们能够根据不同的条件和情况来控制代码的执行顺序。下面我们将详细介绍几种常见的控制语句 一、for 循环 let names ["zhangsan","lisi"] for name in names{print(name…

set,map(java)

前言:要了解set和map,首先需要对搜索树和哈希有一定的了解,才能进一步深入的了解set和map。 1.搜索树 (1)性质: 若它的左子树不为空,则左子树上所有节点值都小于根节点的值。 若它的右子树不…

TypeScript学习篇-类型介绍使用、ts相关面试题

文章目录 基础知识基础类型: number, string, boolean, object, array, undefined, void(代表该函数没有返回值)unknownenum(枚举): 定义一个可枚举的对象联合类型: | (联合类型一次只能一种类型;而交叉类型每次都是多个类型的合并类型。)交叉类型: & (联合类型…

按图搜索新体验:阿里巴巴拍立淘API返回值详解

阿里巴巴拍立淘API是一项基于图片搜索的商品搜索服务,它允许用户通过上传商品图片,系统自动识别图片中的商品信息,并返回与之相关的搜索结果。以下是对阿里巴巴拍立淘API返回值的详细解析: 一、主要返回值内容 商品信息 商品列表…

【算法/学习】前缀和差分

前缀和&&差分目录 1. 前缀和的概念及作用 🌈概念 🌈用途 🌙一维前缀和 🌙二维前缀和 2. 差分的概念及用途 🌈概念: 🌈用途 🌙一维差分 🌙二维差分 1. …

Linux系统编程——线程池

目录 一,池化技术 二,线程池概念 三,线程池实现 3.1 线程封装 3.2 预备头文件实现 3.3 线程池类的简单实现 3.4 主函数实现 3.5 效果展示 一,池化技术 池化技术是计算机编程领域非常常用的一种技术,该技术可以…