ADRC-active disturbance rejection control-自抗扰控制器
ADRC自抗扰控制基本思想要点:
1.标准型与总扰动,扩张状态与扰动整体辨识,微分信号生成与安排过渡过程以及扰动的消减与控制量产生。
ADRC主要构成:

1)跟踪微分器(TD)---the tracking differentiator –跟踪微分器
解决由不连续或带随机噪声的量测信号,合理提取连续信号(跟踪给定)及微分信号的问题。
根据微分输出与最速综合函数,可以安排闭环系统的过渡过程。
以单位阶跃信号为例,经过跟踪微分器的过渡,产生的输出效果为:

特点:1>使误差反馈增益和误差微分增益选取范围扩大
2>使给定的反馈增益所适应的对象参数范围扩大,提高鲁棒性

2)扩张状态观测器(ESO)--extended state observer –扩展状态观测器
状态观测器将影响被控对象输出的扰动作用扩张成新的状态变量,通过特殊的反馈机制观测被扩张的总扰动信号
通过输入,输出构建总扰动为一个状态变量,二阶的系统,他的扩张观测器达到三阶,加入了总扰动的状态。
总扰动中包含系统内部扰动和外部高频噪声干扰,
扩张状态观测器的输出为:Z1=y ,Z2=dy ,Z3(观测到的系统总扰动)‘

3)非线性状态误差反馈控制律(NLSEF)--nonlinear state error feedback –非线性状态误差反馈

根据跟踪微分器(TD)得出的给定信号和给定信号的微分与状态观测器观测到的系统输出和输出的导数的误差,进而进行控制和扰动补偿,非线性控制方法由fal或最速控制综合函数Fhan构造。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
经典PID

优点 :
1.仅由误差来决定控制
2.运算量低,可以以极高的速率运行
缺点:
1.误差函数采用
e=v−y
的形式不太合理,比如输入阶跃信号的时候,会导致误差函数也是一个阶跃信号,对控制的稳定性有影响
2.在经典PID里面需要计算误差信号的微分,但是根本无法严格的计算微分信号,只能使用近似计算
3.经典PID的比例、误差、积分项是线性组合输出最后的控制量的,线性组合并不是一个最优的组合方案
4.严格上来说,积分项虽然消除了静态固有误差,但是会大大影响控制的稳定性能
针对上面的四个缺点,ADRC分别提出了改进方法,如下:
1》transient profile generator–经典微分器
为了防止跳变信号,对信号作如下处理,其实也就是下面的跟踪微分器:

如下图所示,使用这种变换实际上是模仿最短时间到达一个点的概念,在到达平衡位置处前恒定加速运动,过平衡位置后恒定减速运动,使目标点在规定的加速度下以最短的时间到达目标点,并且到达速度为零,其中v是当前位置

此外在计算机中或者仿真中只能使用离散时间的解决方案,因此,解决方案可以表示为

其中,

1》--1)跟踪微分器(TD)---the tracking differentiator –跟踪微分器
这里解释为什么要改进经典的微分器,实际上,使用经典PID里面的微分器会很大的放大信号噪声。如果使用经典的微分器,当附加上噪声n(t)的时候


即:采样周期越短,噪声被放大越大,因此采用如下改进:

nonlinear weighted sum--非线性加权和
在使用了跟踪微分器之后,一个输入实际上变成了两个输入e1=v1−x1,e2=v2−x2,为信号的误差和信号误差的微分,这里利用这两个信号来组合得到控制输出,ADRC里面采用非线性的组合方式,使用了一个函数如下所示 
fal函数具有小误差,大增益;大误差,小增益的特性,十分适合用于控制,可以减少控制误差,最后的非线性PID可以写作


这是跟踪微分控制器的离散方程,看方程其实就很直接。
h:为时间尺度 MATLAB的仿真步长为0.001 所以 h = 0.001

Simulink 模型里的TD 有一个输入状态,经过TD安排过渡时间,计算fst(快速控制最优综合函数)后,会得到两个输出v1 目标状态,v2系统的微分。

这是TD的内部结构,和公式里面的一样,就是跟踪微分的阶跃响应公式。fst 输入的第一个参数为
v1(t) - v0(t).在结构图里,就是v1-v,之后的结构对照公式即可看明白。

这里看一下对TD的仿真波形图:

基本上很好的跟踪上了正弦波。
这里提示一下TD模型里的参数修改的地方。在这个模型里只有两个参数r,h.


双击1,再选择2的地方就可以了。然后设置3处的两个参数;
2)扩张状态观测器(ESO)--extended state observer –扩展状态观测器
最后的扩张状态观测器也是最重要的一个模块,此处不需要误差积分模块了,ESO给出了系统未知状态和未知干扰的估计和补偿。假设外部的干扰为f(x1,x2,ω,t)控制信号为u,系统可以被表示为

之后增加一个新的状态x3用于表示干扰,最后ESO可以被写作

其中参数一个例子是β01=1,β02=1/2h0.5,β03=2/25*h1.2.输入输出如下图所示

最终整个系统函数和框图如下图所示
ADRC系统函数表示

整个ADRC系统框图表示

这里综合参考资料里面的结论,提炼几点:
1. ADRC系统的系统阶数由系统的相对阶数决定
2. 安排过渡过程解决快速控制和超调的矛盾
3. 不适用积分项也可以消除静态误差,避免积分副作用
4. ADRC的关键创新点其实在与ESO模块,也就是扩展状态观测器模块,他将所有不知道的影响归纳为一个中间控制量加入系统之中,可以很好的提高系统的抗干扰性能
5. ADRC中系统分类,不是按照线性、非线性、时变和时不变来分,而是按照系统的”时间尺度”来分类
参考资料:
1.韩京清.从PID技术到“自抗扰控制”技术[J].控制工程,2002,9(3):13-18
2.韩京清. 非线性PID控制器[J]. 自动化学报, 1994, 20(4):487-490.
3.韩京清. 自抗扰控制技术[J]. 前沿科学,2007,1(1):24-31
转载自:https://blog.csdn.net/mrhcat/article/details/71424198,https://blog.csdn.net/qq_34445388/article/details/79705968 仅为学习使用!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

产品化ADRC:SpinTAC Motion Control Suite (Featuring ADRC)
SpinTAC使用了自抗扰控制器(ADRC,Active Disturbance Rejection Control),自抗扰控制器能够对系统扰动进行实时估算并补偿,其所要整定的参数只有一个即带宽,一旦整定,控制器可以工作在较宽的转速和负载范围内。
观察TI提供的Demo程序,可以发现,ADC中断中,在FOC运行之前运行了SpinTAC控制。
// Run the SpinTAC Components
if(stCnt++ >= ISR_TICKS_PER_SPINTAC_TICK)
{
ST_runVelCtl(stHandle, ctrlHandle);
stCnt = ;
} // run the controller
CTRL_run(ctrlHandle,halHandle,&gAdcData,&gPwmData);
进入ST_runVelCtl()函数,可以发现其输出就是转矩参考值,即Iq参考值,作为q轴电流PI调节器的输入。
void ST_runVelCtl(ST_Handle handle, CTRL_Handle ctrlHandle)
{
_iq speedFeedback, iqReference;
ST_Obj *stObj = (ST_Obj *)handle;
CTRL_Obj *ctrlObj = (CTRL_Obj *)ctrlHandle; // Get the mechanical speed in pu
speedFeedback = EST_getFm_pu(ctrlObj->estHandle); // Run the SpinTAC Controller
// Note that the library internal ramp generator is used to set the speed reference
STVELCTL_setVelocityReference(stObj->velCtlHandle, TRAJ_getIntValue(ctrlObj->trajHandle_spd));
STVELCTL_setAccelerationReference(stObj->velCtlHandle, _IQ(0.0));
STVELCTL_setVelocityFeedback(stObj->velCtlHandle, speedFeedback);
STVELCTL_run(stObj->velCtlHandle); // select SpinTAC Velocity Controller
iqReference = STVELCTL_getTorqueReference(stObj->velCtlHandle);
// Set the Iq reference that came out of SpinTAC Velocity Control
CTRL_setIq_ref_pu(ctrlHandle, iqReference);
}
ADRC-active disturbance rejection control-自抗扰控制器的更多相关文章
- 部署额外域控制器,Active Directory
部署额外域控制器 转自:http://yuelei.blog.51cto.com/202879/117599 如果域中只有一台域控制器,一旦出现物理故障,我们即使可以从备份还原AD,也要付出停机等 ...
- install Active Directory域控制器
设置Active Directory域控制器 正如我们在网络与系统配置专题文章中所提到的那样,我们已将两部服务器设置为对应于内部域“intdomain.com”的Active Directory域控制 ...
- 安装 Windows Server 2012 Active Directory 只读域控制器 (RODC)(级别 200)
安装 Windows Server 2012 Active Directory 只读域控制器 (RODC)(级别 200) 适用对象:Windows Server 2012 本主题介绍如何创建分步的 ...
- 将Samba设置为Active Directory域控制器
一 简介 从版本4.0开始,samba可以作为Active Directory(AD)域控制器(DC)运行,如果在生产环境中安装samba,建议运行两个或者多个DC用于故障转移 本文介绍如何让将一个S ...
- PID控制器(比例-积分-微分控制器)- II
Table of Contents Practical Process Control Proven Methods and Best Practices for Automatic PID Cont ...
- Active Directory网域
Active Directory网域 3.1Windows网络的管理方式 3.1.1工作组模式 工作组由一组用网络连接在一起的计算机组成,他们将计算机内的资源共享给用户访问.工作组网络也被称为“对等式 ...
- windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原
域内所有的域控制器都有一个内容相同的Active Directory,而且 Active Directory 的内容是动态平衡的,也就是说任何一个域控制器修改了 Active Directory,其他 ...
- Active Directory中获取域管理员权限的攻击方法
Active Directory中获取域管理员权限的攻击方法 译:by backlion 0x00 前言 攻击者可以通过多种方式在Active Directory中获得域管理员权限, ...
- Active Directory域
引言 在 Microsoft® Windows® 2000 Server 操作系统的诸多增强功能中,Microsoft Active Directory™ 功能的引入意义最为重大,但也最常引起困惑.与 ...
随机推荐
- 使用C# 操作存储过程,执行sql语句通用类
如何使用C# 操作存储过程,执行sql语句? 闲话不多说,直接上代码: /// <summary> /// Sql通用类 /// </summary> ...
- 使用tensorflow搭建自己的验证码识别系统
目录 准备验证码数据 保存为tfrecords文件 验证码训练 学习tensorflow有一段时间了,想做点东西来练一下手.为了更有意思点,下面将搭建一个简单的验证码识别系统. 准备验证码数据 下面将 ...
- 20190421-那些年使用过的CSS预处理器(CSS Preprocessor)之Sass and Less
写在前面乱七八糟的前言: emmm,还是决定把Sass与Less单独出来写成一篇,可能会稍微好辣么一丢丢?TAT语法特性是真的香,通篇下来能吸收个10%自我感觉已经很nice了,毕竟渣渣的我有渣渣的自 ...
- iis读取不到本地证书问题
导入证书时,通过mmc命令打开控制台->添加管理单元或删除单元->选择本地计算机账号->然后导入证书,解决 ssl证书无法与www.xxx通信. 证书导入后,不能正常读取.有两个问题 ...
- 3D GIS 应用开发 —— 基于 Mapbox GL 的实践总结
最近在折腾的 web 端的可视化项目,由于相关业务的需要,用到了 Mapbox 这一地图开发的神器.在此先奉上一个基于mapbox-gl实现的demo(来源:uber的deck.gl项目): 下面我们 ...
- odoo12 物流 自动计算运费 ,采购销售使用不同计量单位自动换算
在物流和食品生鲜类行业,重量是很重要的因素,不仅要处理产品的数量,也要处理产品的重量.在多数行业,重量也是订单的重要数据. odoo原生包含了对重量的处理,下文中将指导如何优雅应用odoo原生模块处理 ...
- QT通过url下载图片到本地
/* strUrl:下载图片时需要的url strFilePath:下载图片的位置(/home/XXX/YYY.png) */ void ThorPromote::downloadFileFromUr ...
- 【集合框架】JDK1.8源码分析之ArrayList详解(一)
[集合框架]JDK1.8源码分析之ArrayList详解(一) 一. 从ArrayList字表面推测 ArrayList类的命名是由Array和List单词组合而成,Array的中文意思是数组,Lis ...
- Sql Server 完全卸载,卸载干净,Windows 7。
一般卸载程序的卸载方法无法完全清除SqlServer 导致重装sqlserver报错,下面给大家介绍和讲解如何完全卸载Sql Server. (此教程使用的系统为Windows 7[Win10,Win ...
- C++设计模式视频讲解
设计模式(C++) 视频网址: http://www.qghkt.com/ 设计模式(C++)视频地址: https://ke.qq.com/course/318637?tuin=a508ea62 目 ...