ADRC学习

ADRC,中文名是自抗扰控制技术。继承了经典PID控制器的精华,对被控对象的数学模型几乎没有任何要求,又在其基础上引入了基于现代控制理论的状态观测器技术,将抗干扰技术融入到了传统PID控制当中去,最终设计出了适合在工程实践中广泛应用的全新控制器。

1. ADRC介绍

ADRC主要跟踪微分器,非线性状态反馈(非线性组合),扩张观测器(ESO)三部分组成。
ADRC学习_第1张图片

2. 跟踪微分器TD

2.1 作用

2.2 表达式

ADRC学习_第2张图片

2.3 参数含义及作用

2.4 代码实现

2. 跟踪微分器TD

2.1 作用

最速跟踪微分器的作用是起到一个缓冲作用,比如输入一个阶跃信号,它会让信号有一定斜率,让执行机构不会一启动就进入最大马力,从而导致第一次及后面几次逼近设定值时出现超调。

2.2 表达式

ADRC学习_第3张图片
此处的fhan()函数有两种实现方式,我们这里使用第二种改进的fhan函数。
ADRC学习_第4张图片
fsg()函数表达式,是为了减少高频振荡设置的函数
在这里插入图片描述
sign()函数为获取数值符号的函数。

2.3 参数含义及作用

2.4 代码实现## 2. 跟踪微分器TD

2.1 作用

2.2 表达式

ADRC学习_第5张图片

2.3 代码实现

//ADRC最速跟踪微分器TD,改进的算法fhan
void Fhan_ADRC(Fhan_Data *fhan_Input,float expect_ADRC)//安排ADRC过度过程
{
  float d=0,a0=0,y=0,a1=0,a2=0,a=0;
  float x1_delta=0;//ADRC状态跟踪误差项
  x1_delta=fhan_Input->x1-expect_ADRC;//用x1-v(k)替代x1得到离散更新公式
  fhan_Input->h0=fhan_Input->N0*fhan_Input->h;//用h0替代h,解决最速跟踪微分器速度超调问题
  d=fhan_Input->r*fhan_Input->h0*fhan_Input->h0;//d=rh^2;
  a0=fhan_Input->h0*fhan_Input->x2;//a0=h*x2
  y=x1_delta+a0;//y=x1+a0
  a1=sqrt(d*(d+8*ABS(y)));//a1=sqrt(d*(d+8*ABS(y))])
  a2=a0+Sign_ADRC(y)*(a1-d)/2;//a2=a0+sign(y)*(a1-d)/2;
  a=(a0+y)*Fsg_ADRC(y,d)+a2*(1-Fsg_ADRC(y,d));
  fhan_Input->fh=-fhan_Input->r*(a/d)*Fsg_ADRC(a,d)
                  -fhan_Input->r*Sign_ADRC(a)*(1-Fsg_ADRC(a,d));//得到最速微分加速度跟踪量
  fhan_Input->x1+=fhan_Input->h*fhan_Input->x2;//跟新最速跟踪状态量x1
  fhan_Input->x2+=fhan_Input->h*fhan_Input->fh;//跟新最速跟踪状态量微分x2
}

2.4 参数含义及作用

float x1;//跟踪微分期状态量
float x2;//跟踪微分期状态量微分项
float fh;//最速微分加速度跟踪量
float h0;/跟踪微分器解决速度超调h0=N*h

需要整定的参数

float r;//时间尺度 r为速度因子,值越大,逼近速度越快,当r大于一定值后,继续增大不会产生太大的效果,需要根据实际被控对象选定
float h;//ADRC系统积分时间 h可以设置为adrc执行周期,例如1000hz的频率运行,h设为0.001.
uint16 N0跟踪微分器的滤波因子 一般来说,h可以等于h0,但是为了减少超调和减少震荡,一般设置h0大于h。减小h可以抑制噪声放大作用。

跟踪微分器(TD)的微分效果是可以用阶跃响应来进行验证实。

2.5 备注

步长大,振荡幅度大,步长小,只是减小了振荡幅度,由于符号函数sign(a)的作用,高频振荡不能完全消除.。
通过使用fsg()来解决高频振荡问题后,会产生一定的超调现象,这种超调现象就会加剧对微分信号的噪声放大效应.但是,如果把函数fhan(x,2,h)中的变量h改为与步长h独立的新变量ho,而取ho为适当大于步长h的参数,那么就能消除速度曲线中的这种超调现象,从而能很好地抑制微分信号中的噪声放大。
ADRC学习_第6张图片

3. 扩张状态观测器(ESO)

3.1 作用

控制系统中的负反馈对扰动有一定的抑制作用,但不能完全消除其影响,采取什么样的措施来有效地消除各种扰动的影响,始终是控制系统设计者们要考虑的重要课题,消除扰动影响。
借用状态观测器的思想,把能够影响被控输出的扰动作用扩张成新的状态变量,用特殊的反馈机制来建立能够观测被扩张的状态–扰动作用的扩张状态观测器,这个扩张状态观测器并不依赖于生成扰动的具体数学模型,也不需要直接去测量其作用.扩张状态观测器,从某种意义上,是通用而实用的扰动观测器.

3.2 表达式

你可能感兴趣的:(面试)