初步认识ADRC(自抗扰控制)与应用

2022-08-31 15:25:08 浏览数 (2)

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

这是一个目录

  • ADRC的基本原理
    • 一、参考资料推荐
    • 二、为什么PID好,以及,为什么PID不够好
      • 1.为什么PID好——不依赖于模型的控制器
      • 2.为什么PID不够好——PID的缺点
    • 三、ADRC给出的方案——如何保留PID的优点,同时弥补PID的缺点
      • 1. 误差的取法——安排过渡过程
      • 2. 由误差提取误差微分的方法——跟踪微分器
      • 3. 加权和的策略不一定最好——非线性反馈
      • 4. 积分反馈的副作用——扩张状态观测器
  • ADRC的公式以及参数整定
      • 一、跟踪微分器(TD)
      • 二、非线性反馈函数
      • 三、扩张状态观测器(ESO)
  • ADRC应用到二阶导弹模型
      • matlab脚本
      • simulink模型
  • 结语

ADRC的基本原理

一、参考资料推荐

想要初步了解ADRC,可以从韩京清教授的一篇文献和一本书看起 1.文献: 从PID技术到“自抗扰控制”技术(《控制工程》,2002) 2.书: 自抗扰控制技术——估计补偿不确定因素的控制技术

不过文章里讲的不是很细,是把之前多篇文章内容综合到一起提出了ADRC整体的控制框架。想要更深入学习当然还是看书更好一些。

二、为什么PID好,以及,为什么PID不够好

1.为什么PID好——不依赖于模型的控制器

经典的PID控制直到如今都还是应用最广泛的控制算法,大部分的控制系统里用的都还是这个。它的好处主要在于,不需要被控对象的模型。

什么是被控对象的模型?

举个例子,假设我们以小车的速度 V V V为被控量,但是推动小车的力 F F F才是我们的控制量。

考虑阻力并假设阻力和速度成正比的话,根据牛顿第二定律我们可以得到小车的动力学方程 F − k V = m a F-kV=ma F−kV=ma,其中 k k k为阻力系数, m m m为小车质量。

根据质点运动学方程又有 V ˙ = a dot{V}=a V˙=a,

这样就可以得到利用外力 F F F控制小车速度 V V V的模型 V ˙ = − k m V 1 m F dot{V}=-frac{k}{m}V frac{1}{m}F V˙=−mk​V m1​F (也就是 x ˙ = − A x B u dot{x}=-Ax Bu x˙=−Ax Bu的线性模型的结构)

OK,这个方程通常就是我们需要的,如果要应用现代控制理论(比如最优控制)设计一个控制器,那么我们就需要知道这个模型的全部信息东西,在这里就是模型的结构以及阻力系数 k k k和小车质量 m m m。

获得这个模型存在两个问题:

  1. 实际工程的模型结构远比这复杂。比如阻力和速度的关系可能并不是成正比,我们只是这么假设的,实际的的关系可能是一个复杂的非线性函数。
  2. 模型的参数难以获得。这里的阻力系数 k k k和小车质量 m m m好像挺容易获得的,但是实际被控对象的模型参数可能要多的多,有些是很难获得的。

由于模型难获得,而现代控制理论又大多基于模型设计,虽然能够满足各种各样的性能条件,但大都不够实用,这也就导致了PID一直称霸各个控制领域。因为PID是只利用误差 e e e 来计算控制量的,不需要模型知识,只需要调一调 K P , K I , K D K_P,K_I,K_D KP​,KI​,KD​ 三个参数就能得到可以接受的效果。

2.为什么PID不够好——PID的缺点

注意到前面说 PID 能得到可以接受的效果,我们当然希望PID能够得到更好的控制效果,那么PID还有哪些不足呢?

以下摘自前面说的韩京清的那篇文章

  1. 误差的取法(直接由给定指令计算误差)
  2. 由误差提取误差微分的方法(使用传统的线性微分器)
  3. 加权和的策略不一定最好(比例,积分,微分项各乘上放大系数 K K K然后相加来计算控制量)
  4. 积分反馈有许多副作用(对误差进行积分并放大然后反馈到系统)

三、ADRC给出的方案——如何保留PID的优点,同时弥补PID的缺点

上一节写了PID的几个缺点,下面一条一条解释这些缺点的意思,并给出ADRC的解决方案:

1. 误差的取法——安排过渡过程

直接根据给定指令计算误差可能会导致控制效果变差,比如有些指令里包含了我们不希望的高频信号,这类信号的例子有:阶跃指令,方波指令。 为了将高频信号解决掉,ADRC提出了安排“过渡过程”的方法,类似于把给定指令进行低通滤波,得到一个更容易实现的指令,从而在牺牲一点快速性的同时大大降低超调。

这里给个例子,考虑两个系统,一个带有指令滤波,一个不带:

图1 带有指令滤波器

0 人点赞