自抗扰控制(ADRC)仿真系统(matlab/simulink)的搭建

自抗扰控制(ADRC)仿真系统(matlab/simulink)的搭建一、现在关于自抗扰控制技术方面的研究已经比较成熟了,基本上了解结构以后都可以找到历程实现,今天简单总结一采用自抗扰控制的仿真系统搭建,不必畏惧,熟悉皆可达。1.首先自抗扰控制分为TD(跟踪微分器),非线性组合,ESO扩张状态观测器。而每部分的公式推导均可在《自抗扰控制技术-估计补偿不确定因素的控制技术》这本书中找到,很推荐,如果有些不了解的也可以搜索韩老师的论文看看。2.按照一般论文流程,先介绍整体结构,框图如下:其实结构也挺少,使用习惯以后,其实很好理解。3.接下来按照每个部分简单做一个介绍。

大家好,又见面了,我是你们的朋友全栈君。

一、现在关于自抗扰控制技术方面的研究已经比较成熟了,基本上熟悉结构以后都可以找到例子实现,今天以一个简单的例子来介绍自抗扰控制的仿真系统搭建,不必畏惧,熟悉皆可达。
1.首先自抗扰控制分为TD(跟踪微分器),非线性组合,ESO扩张状态观测器。而每部分的公式推导均可在《自抗扰控制技术-估计补偿不确定因素的控制技术》这本书中找到,很推荐,如果有些不了解的地方也可以搜索韩老师的论文看看。
在这里插入图片描述
2.按照一般论文流程,先介绍整体结构,框图如下:
在这里插入图片描述
其实结构也挺少,使用习惯以后,其实很好理解。
3.接下来按照每个部分简单做一个介绍。
(1)先介绍一下TD(跟踪微分器)部分。
首先我们需要知道为什么需要TD部分,我个人有些自己粗浅的理解。首先想想我们常见的输入信号,是不是个阶跃,一般如下图所示:
在这里插入图片描述
这里是输入为1的阶跃信号,其实这种信号很常见,数值大小我们暂时不看。例如智能车的位置信息,锅炉系统的设置温度,水流控制的流量大小。这种信号最大的缺点就是,系统开始工作的时候我们希望加快系统的响应速度,因此给一个较大的放大环节(可以想成传统PID的P控制器系数),而这个时候的输入减输出(e=r-y)就很大,在乘以P环节的比例系数会更大,在到达设定值之前也就是y<r之前这个偏差一直是朝着一边变化的,因此很容易出现超调。这就是超调和快速性之间的矛盾出现了。
因此你想不想让输入变成下图这样:
在这里插入图片描述
其中红色曲线为输入,绿色曲线为红色的微分信号。完成这个功能的过程就是TD部分的设计。公式如下:
在这里插入图片描述
上面有个fhan函数有点懵,别急下面马上有。fhan 是最速控制综合函数,当 在这里插入图片描述
时,有以下表达式:
在这里插入图片描述
不用担心,这上面这么多公式你只需要注意两个变量,r,h。其中r为速度因子,h表示步长(采样间隔,一般单片机是0.1s)。r一般在10-500之前选取,具体看你系统的情况,调试不难,调试的时候看TD的输出曲线就行。
(2)非线性组合
这部分有个很简单的方法,你可以直接在TD的两个输出的(TD后输入信号,TD后输入信号的微分)做差后面分别加一个KP就ok了,一个取名KP,一个取名KD。这就等于两个比例环节,说明白了就是对信号的组合方式,如何利用误差和误差的微分。当然也可以采用非线性组合,例如以下:
在这里插入图片描述

非线性组合方式有很多,前面介绍的那本书上也有很多介绍,百度也能很多,自己设置几个非线性函数也可以,这里就不介绍了。
(3)ESO_扩张状态观测器
大家应该对状态观测器还有一点印象吧。没印象也没关系,就是设置另一个系统出来观测原系统的状态变量。公式如下:
在这里插入图片描述
看着复杂,其实自己推导确实很复杂。简单介绍一下。这个z1就是对输出的估计,毕竟叫扩张状态观测器。这个z3是对系统总扰动的估计。到这里有个简单的了解就行了。对于上面扩张状态观测器有很多变量,看的可能有点晕。fal函数仅仅是对误差e进行了一些变化。这里我们可以直接使用误差,有兴趣的这里可以继续研究。这样的话ESO就会变成如下形式:
在这里插入图片描述

这里再推荐高志强的一篇线性化设计ADRC的论文,也可以参考上面给出的书本自抗扰控制技术第209页,将带宽的概念引入自抗扰控制。参考论文《 Scaling and bandwidth-parameterization based controller
tuning》。引入后ESO中的三个变量将变成这样:
在这里插入图片描述

这样的话ADRC的ESO部分将变得非常清爽。

4.仿真框图
在这里插入图片描述
仿真结果:
输出显示:绿色为安排过渡过程后的输入信号,红线为输出信号。
在这里插入图片描述
TD输出:红色为TD后的输入,绿色为微分信号。
在这里插入图片描述
ESO输出:红色为z1、绿色 z2、蓝色z3
在这里插入图片描述
代码部分:
%TD部分

function [v1,v2] = fcn(u)
persistent v1_1 v2_1
h=0.1;
delta=10;
if isempty(v1_1)
    v1_1=0;
end

if isempty(v2_1)
    v2_1=0;
end



%hfst计算内容
d=delta*h;
d0=h*d;
y=v1_1-u+h*v2_1;
a0=sqrt(d*d+8*delta*abs(y));
a=0;
out1=0;
if abs(y)>d0
    a=v2_1+(a0-d)/2*sign(y);
end

if abs(y)<=d0
    a=v2_1+y/h;
end

if abs(a)>d
    out1=-delta*sign(a);
end

if abs(a)<=d
    out1=-delta*a/d;
end
out=out1;
%结束

v1=v1_1+h*v2_1;
v2=v2_1+h*out;

v1_1=v1;
v2_1=v2;

v1=v1;
v2=v2;

end

ESO部分:此部分我是用Simulink搭建的,和公式写都一样,有兴趣的可以用s-function写一个。

在这里插入图片描述
到此结束!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144200.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 时间复杂度是什么_时间复杂度的表示方法

    时间复杂度是什么_时间复杂度的表示方法-宝宝为啥听不懂他们在讨论的时间复杂度0.0-我怎么知道这个算法运行得比那个算法快0.0-我究竟会不会超时0.0-我为什么还会超时0.0-时间复杂度怎么算0.0在别人还不会求时间复杂度的时候而你会了是不是很酷在别人都会求时间复杂度的时候而你不会是不是很尴尬千里之行始于足下希望这篇文章能祝你一臂之力=w= 此篇详解,希望能帮助各位稍微解决一下不解=w=…

    2025年6月6日
    4
  • linux smartctl 命令,Linux smartctl命令

    linux smartctl 命令,Linux smartctl命令硬盘的SMART是S.M.A.R.T.的缩写,全称是“Self-Monitoring,AnalysisandReportingTechnology”,中文意思是“自我监测分析与报告技术”,它可以对硬盘的温度、内部电路、盘片表面介质材料等进行监测,力求及时分析出硬盘可能发出的问题,并发出警告,从而保护数据不受损失。在Linux上使用smartctl命令查看硬盘的SMART信息。安装工具:yu…

    2022年6月29日
    31
  • 771服务器cpu性能排行,CPU114查询网

    771服务器cpu性能排行,CPU114查询网4485083264155WQ4201954736564128225WQ2201964606764128200WQ220197392991632155WQ420198392701632105WQ4201910358722448180WQ420191333158122465WQ2201914318681224105WQ22019183067912246…

    2026年1月31日
    7
  • 两个队列实现一个栈思路c语言_栈和队列的主要区别

    两个队列实现一个栈思路c语言_栈和队列的主要区别用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“appendTail”,“ap

    2022年8月8日
    11
  • 超详细Linux配置DHCP服务器

    超详细Linux配置DHCP服务器概述DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。工作原理1、客户端开机没有IP,局域网内需要发送一个广播形式的DISCOVER(局域网内不知道谁是DHCP服务器),只要能收…

    2022年5月29日
    42
  • uml点餐系统活动图_UML 活动图

    uml点餐系统活动图_UML 活动图•活动图概述活动图概述•活动图和交互图是UML中对系统动态方面建模的两种主要形式•交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流•活动图是一种表述过程基理、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模•UML2.0而言,去除了“活动图是状态图的一种特例”这一规定•如何阅读活动图阅读简单活动图活动图的主要元素•初始节点和…

    2022年6月10日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号