MATLAB 自抗扰控制 - Active Disturbance Rejection Control

系列文章目录

MATLAB 模型参考自适应控制 - Model Reference Adaptive Control


文章目录

  • 系列文章目录
  • 前言
  • 一、控制器结构
    • 1.1 一阶逼近
    • 1.2 二阶逼近
  • 二、指定控制器参数
  • 参考


前言

自抗扰控制 (ADRC) 是一种无模型控制方法,适用于为具有未知动态特性以及内部和外部扰动的被控对象设计控制器。此算法只需要对被控对象动态特性进行逼近,即可设计具有稳健抗扰功能的无超调的控制器。

您可以使用 Active Disturbance Rejection Control 模块来实现 ADRC。该模块使用已知系统动态特性的一阶或二阶模型逼近以及建模为被控对象的扩张状态的未知动态特性和扰动。通常,您可以根据工作范围内被控对象的开环阶跃响应来确定此阶数。

一阶逼近 - y ˙ ( t ) = b 0 u ( t ) + f ( t ) {\dot{y}}(t)=b 0 u(t)+f(t) y˙(t)=b0u(t)+f(t)

二阶逼近 - y ¨ ( t ) = b 0 u ( t ) + f ( t ) {\ddot{y}}(t)=b 0 u(t)+f(t) y¨(t)=b0u(t)+f(t)

其中:

  • y(t) 是被控对象输出。

  • u(t) 是输入信号。

  • b0 是临界增益,它是描述被控对象对输入 u(t) 的响应的估计增益。

  • f(t) 是总扰动,包括未知动态特性扰动和其他扰动。

该模块使用扩张状态观测器 (ESO) 来估计 f(t),并通过减少估计的扰动对模型逼近已知部分的影响来实现抗扰控制。

您可以实现离散时间和连续时间控制器。设置控制器时域和采样时间以匹配被控对象模型的时域。


一、控制器结构

1.1 一阶逼近

对于一阶被控对象模型逼近 y ˙ ( t ) = b 0 u ( t ) + f ( t ) {\dot{y}}(t)=b0u(t)+f(t) y˙(t)=b0u(t)+f(t),被控对象输出状态是 x 1 = y ( t ) x_{1}=\mathrm{y}(t) x1=y(t) ,扩张状态是 x 2 = f ( t ) x_{2}=\mathrm{f}(t) x2=f(t)
状态空间模型如下。
x ˙ = A x + B u + ( 0 f ˙ ( t ) ) {{\dot{x}=A x+B u+\left(\begin{array}{c}{{0}}\\ {{\dot{f}(t)}}\end{array}\right)}} x˙=Ax+Bu+(0f˙(t))
y = C x , y=C x, y=Cx,

其中

A = ( 0 1 0 0 ) ,   B = ( b 0 0 ) , C = ( 1   0 ) . A=\begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix},\ B=\begin{pmatrix} b0 \\ 0 \end{pmatrix},C=(1\ 0). A=(0010), B=(b00),C=(1 0).

对于此可观测系统,模块使用龙伯格观测器来提供被控对象状态和总扰动的估计值。使用估计的状态

z 1 = y ^ ( t ) z 2 = f ^ ( t ) , \begin{array}{c}{{z_{1}=\hat{y}(t)}}\\ {{z_{2}=\hat{f}(t),}}\end{array} z1=y^(t)z2=f^(t),

控制器计算控制输入 u(t),如下所示。

u ( t ) = u 0 ( t ) − z 2 b 0 , u(t)={\dfrac{u0(t)-z2}{b0}}, u(t)=b0u0(t)z2,

其中

u 0 ( t ) = K P ( r ( t ) − z 1 ) . u\mathrm{0}(t)=K P(r(t)-z1). u0(t)=KP(r(t)z1).

这是一个基于估计的状态反馈控制器,当估计值和实际值相等时,系统具有一阶闭环行为。此闭环系统具有极点 s = –KP。

此控制器表示为以下控制结构。

在这里插入图片描述

为了简化控制器调节,该模块将控制器极点设置在 (s + ωc) 处,将观测器极点设置在 ( s + ω 0 ) 2 (s+\omega_{0})^{2} (s+ω0)2 处,其中 ωc 和 ωo 分别为控制器带宽和观测器带宽。

1.2 二阶逼近

对于二阶被控对象模型逼近 y ¨ ( t ) = b 0 u ( t ) + f ( t ) \ddot{y}(t)=b{0}u(t)+f(t) y¨(t)=b0u(t)+f(t) ,被控对象输出状态是 x 1 = y ( t ) x_{1}=\mathrm{y}(t) x1=y(t) x 2 = y ˙ ( t ) x_{2}=\mathrm{\dot{y}}(t) x2=y˙(t) ,扩张状态是 x 3 = f ( t ) x_{3}=\mathrm{f}(t) x3=f(t)

状态空间模型如下。

x ˙ = A x + B u + ( 0 0 f ˙ ( t ) ) \dot{x}=A x+B u+\left(\begin{array}{c}{{0}}\\ {{0}}\\ {{\dot{f}(t)}}\end{array}\right) x˙=Ax+Bu+ 00f˙(t)

y = C x , y=C x, y=Cx,

其中

A = ( 0 1 0 0 0 1 0 0 0 ) , B = ( 0 b 0 0 ) , C = ( 1 0 0 ) . A={\left(\begin{array}{l l l}{0}&{1}&{0}\\ {0}&{0}&{1}\\ {0}&{0}&{0}\end{array}\right)},B={\left(\begin{array}{l l}{0}\\ {b0}\\ {0}\end{array}\right)},C=(1\quad0\quad0). A= 000100010 ,B= 0b00 ,C=(100).

对于此可观测系统,模块使用龙伯格观测器来提供被控对象状态和总扰动的估计值。使用估计的状态

z 1 = y ^ ( t ) z 2 = y ˙ ^ ( t ) z 3 = f ^ ( t ) , \begin{array}{c}{{z_{1}=\hat{y}(t)}}\\{{z_{2}=\hat{\dot{y}}(t)}} \\ {{z_{3}=\hat{f}(t),}}\end{array} z1=y^(t)z2=y˙^(t)z3=f^(t),

控制器计算控制输入 u(t),如下所示。

u ( t ) = u 0 ( t ) − z 3 b 0 , u(t)={\dfrac{u0(t)-z3}{b0}}, u(t)=b0u0(t)z3,

其中

u 0 ( t ) = K P ( r ( t ) − z 1 ) − K D z 2. u\mathrm{0}(t)=K P(r(t)-z1)-K D z2. u0(t)=KP(r(t)z1)KDz2.

这是一个基于估计的状态反馈控制器,当估计值和实际值相等时,系统具有二阶闭环行为。

此控制器表示为以下控制结构。

在这里插入图片描述
为了简化控制器调节,该模块分别将控制器极点设置在 ( s + ω 0 ) 2 (s+\omega_{0})^{2} (s+ω0)2 处,将观测器极点设置在 ( s + ω 0 ) 3 (s+\omega_{0})^{3} (s+ω0)3 处,其中 ωc 和 ωo 分别为控制器带宽和观测器带宽。

二、指定控制器参数

为了对您的被控对象实现 ADRC,您必须为被控对象逼近的临界增益值 b0 提供合理的估计值。为此,可采用以下方法。

  1. 使用幅值为 uOL 的阶跃信号,在工作范围内对开环被控对象进行仿真。
  2. 记录较短持续时间内被控对象输出的变化。
    • 对于一阶 ADRC,请使用响应逼近 y = at 并确定 a,如下所示。
      a = y ( e n d ) − y ( 0 ) t ( e n d ) − t ( 0 ) a=\dfrac{y(e n d)-y(0)}{t(e n d)-t(0)} a=t(end)t(0)y(end)y(0)
    • 对于二阶 ADRC,请使用响应逼近 y = ½at² 并确定 a,如下所示。
      a = 2 ( y ( e n d ) − y ( 0 ) ) ( t ( e n d ) − t ( 0 ) ) 2 a={\dfrac{2(y(e n d)-y(0))}{(t(e n d)-t(0))^{2}}} a=(t(end)t(0))22(y(end)y(0))
  3. 然后,您可以基于 a 和阶跃幅值 uOL 确定 b0。
    b 0 = a u O L b{\mathrm{{0}}}={\dfrac{a}{u O L}} b0=uOLa
    在模块参数中使用临界增益参数设置此值。

然后,要调节控制器响应,请分别使用控制器带宽和观测器带宽指定 ωc 和 ωo 值。这些值取决于控制器的性能要求。一般情况下,更快的响应需要更大的控制器带宽。观测器还需要比控制器收敛得更快。因此,请将观测器带宽设置为控制器带宽的 5 到 10 倍。

此外,该模块允许您指定状态的初始条件,限制控制器输出,并输出估计的状态值。

参考

[1] Han, Jingqing. “From PID to Active Disturbance Rejection Control.” IEEE Transactions on Industrial Electronics 56, no. 3 (March 2009): 900–906. https://doi.org/10.1109/TIE.2008.2011621.

[2] Herbst, Gernot. “A Simulative Study on Active Disturbance Rejection Control (ADRC) as a Control Tool for Practitioners.” Electronics 2, no. 3 (August 15, 2013): 246–79. https://doi.org/10.3390/electronics2030246.

[3] Zhiqiang Gao. “Scaling and Bandwidth-Parameterization Based Controller Tuning.” In Proceedings of the 2003 American Control Conference, 2003, 6:4989–96. Denver, CO, USA: IEEE, 2003. https://doi.org/10.1109/ACC.2003.1242516.

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

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

相关文章

【深度学习】Adversarial Diffusion Distillation,SDXL-Turbo 一步出图

代码: https://huggingface.co/stabilityai/sdxl-turbo 使用 SDXL-Turbo 是SDXL 1.0的精炼版本,经过实时合成训练。SDXL-Turbo 基于一种称为对抗扩散蒸馏 (ADD) 的新颖训练方法(请参阅技术报告),该方法允许在高图像质…

linux防火墙NAT表原理及实操

目录 一、iptables保存规则 1、持久保存iptables规则 2、加载规则 3、开机自动重载规则 二、自定义链 1、创建自定义链 2、修改自定义链名 3、创建规则 4、删除自定义链 三、NAT表 1、SNAT 2、DNAT 一、iptables保存规则 使用iptables命令定义的规则,都…

数据链路层之网桥

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

linux查看进程_静态查看进程_动态查看进程

4.1.3 查看进程 4.1.3.1 静态查看进程:ps ps命令的基本语法如下: ps [options] 参数说明: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的进程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显…

设计模式之道:解构结构型设计模式的核心原理

解构常见的三种结构型设计模式的核心原理 一、引言:如何学习设计模式?二、责任链模式2.1、代码结构2.2、符合的设计原则2.3、案例分析:nginx 阶段处理2.4、小结 三、装饰器模式3.1、代码结构3.2、符合的设计原则3.3、小结 四、组合模式4.1、代…

TLS协议握手流程

浅析 TLS(ECDHE)协议的握手流程(图解) - 知乎 前言 通过 wireshark 抓取 HTTPS 包,理解 TLS 1.2 安全通信协议的握手流程。 重点理解几个点: TLS 握手流程:通过 wireshark 抓取 HTTPS 包理解…

【iOS】数据持久化(三)之SQLite3及其使用

目录 数据库简介什么是SQLite?在Xcode引入SQLite APISQL语句的种类存储字段类型 SQLite的使用创建数据库创建表和删表数据表操作增(插入数据INSERT)删(删除数据DELETE)改(更新数据UPDATE)查&…

KEPserver和S7-200SMART PLC通信配置

KEPserver和S7-1200PLC通信配置,请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/134683670https://rxxw-control.blog.csdn.net/article/details/134683670 1、OPC通信应用 2、选择Siemens驱动 3、添加S7-200设备

C语言内存函数memcpy、memmove、 memset、memcmp

--------------------------------------------- 夜色难免黑凉&#xff0c;前行必有曙光。 -------------今天我将带大家认识C语言中的内存函数 ---------的使用和模拟实现 -----这些函数的头文件依然被#include<string.h>所包含 目录 memcpy函数的使用 memcpy函数的…

css中的 Grid 布局

flex布局和grid布局区别 flex布局是 一维布局grid布局是二维布局 flex布局示例 grid布局示例 grid 布局初体验 体验地址 <div class"wrapper"><div class"one item">One</div><div class"two item">Two</div&…

NIO--07--Java lO模型详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 何为 IO?先从计算机结构的角度来解读一下I/o.再从应用程序的角度来解读一下I/O 阻塞/非阻塞/同步/异步IO阻塞IO非阻塞IO异步IO举例 Java中3种常见的IO模型BIO (Blo…

二分查找边界问题——排序数组找元素第一次出现和最后一次出现

二分查找的边界逼近问题&#xff1a; 下面的代码&#xff0c;第一个函数会向左边界逼近&#xff0c;第二个函数会像右边界逼近&#xff01; 考虑left5,right6这种情况&#xff0c;如果5&#xff0c;6的值都是满足的条件的怎么办&#xff1f; 如果mid(leftright1)/2&#xff0c;…

详解Spring中的Aop编程原理JDK动态代理和CGLIB动态代理

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

HuggingFace学习笔记--BitFit高效微调

1--BitFit高效微调 BitFit&#xff0c;全称是 bias-term fine-tuning&#xff0c;其高效微调只去微调带有 bias 的参数&#xff0c;其余参数全部固定&#xff1b; 2--实例代码 from datasets import load_from_disk from transformers import AutoTokenizer, AutoModelForCaus…

【Pytorch】Visualization of Feature Maps(5)——Deep Dream

学习参考来自&#xff1a; PyTorch实现Deep Dreamhttps://github.com/duc0/deep-dream-in-pytorch 文章目录 1 原理2 VGG 模型结构3 完整代码4 输出结果5 消融实验6 torch.norm() 1 原理 其实 Deep Dream大致的原理和【Pytorch】Visualization of Feature Maps&#xff08;1&…

一起学docker系列之十七Docker Compose 与手动操作的比较与优势分析

目录 1 前言2 不使用 Docker Compose2.1 启动 MySQL 容器2.2 启动 Redis 容器2.3 启动微服务容器 3 使用 Docker Compose4 使用 Docker Compose 的优势5 结语参考地址 1 前言 在当今容器化应用的开发与部署中&#xff0c;容器编排工具的选择对于简化流程、提高效率至关重要。本…

蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解

题目 思路和解题方法 方案一——遍历哈希表 仅能过60%样例,大多数同学都用的该方法&#xff0c;就不过多赘述 #include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n s.size();int res n;for (int i 0…

未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法

当在本地计算机上使用Microsoft Office相关库时&#xff0c;可能会出现“未在本地计算机上注册microsoft.ACE.oledb.12.0”提供程序的报错。这是由于缺少相关的驱动程序或者未安装相应的软件所导致的。下面是解决该问题的完整攻略。 可能是因为没有安装数据访问组件&#xff0…

反序列化漏洞(二)

目录 pop链前置知识&#xff0c;魔术方法触发规则 pop构造链解释&#xff08;开始烧脑了&#xff09; 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识&#xff0c;魔术方法触…

树基本概念+前中后序遍历二叉树

&#x1f308;一、树的基本概念 ☀️1.树的定义&#xff1a;树是一种非线性结构&#xff0c;看起来像一棵倒挂的树&#xff0c;根朝上&#xff0c;而叶朝下。 ☀️2.相关术语 1.根节点&#xff1a;图中的A&#xff0c;无前驱结点 2.叶节点&#xff08;终端节点&#xff09;&a…