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™ 功能的引入意义最为重大,但也最常引起困惑.与 ...
随机推荐
- 如何将workerman部署到windows服务器上面
一直以来对php的即时通讯都很好奇,其实是不知道应该怎么来实现,后来了解到了swoole和workerman这两个神器,他们都可以实现即时通信的功能,其中swoole是C语言编写的php扩展,其配置起 ...
- windows如何安装memcached
官网上并未提供 Memcached 的 Windows 平台安装包,我们可以使用以下链接来下载,你需要根据自己的系统平台及需要的版本号点击对应的链接下载即可: 32位系统 1.2.5版本:http:/ ...
- 《JavaScript高级程序设计》笔记:DOM扩展(十一)
选择符API querySelector()方法 // 取得body元素 var tbody = document.querySelector('body'); // 取得ID为"myDIV ...
- SAP MM ME29N 试图取消审批报错 - Document has already been outputed(function not possible) -
SAP MM ME29N 试图取消审批报错 - Document has already been outputed(function not possible) - 今天收到用户的一个问题,说他试图 ...
- win10 桌面设置为远程桌面
查看方法: 1.点击桌面“计算机”,右键,点击属性. 2.在计算机属性系统窗口中点击“远程设置”. 3.在“系统属性”对话框中远程协助勾选“允许远程协助连接这台计算机”. 4.在“远程协助”点击“高级 ...
- win7 wifi热点设置
1.创建wifi热点 netsh wlan set hostednetwork mode=allow ssid=pengyanPC key=11111111 2.启动wifi热点 netsh wlan ...
- Mysql5.6二进制包安装方法
1.Download MySQL Community Server 访问mysql官方网站转到下载页https://dev.mysql.com/downloads/mysql/5.6.html#dow ...
- Linux使用IDEA配置maven的web项目骨架archetype(模板) 自定义骨架
说明:本文说的骨架就是 archetype,也可以理解为模板,总是就是指你创建项目时的基本配置. 前言:在使用IDEA创建maven的web项目时,一般都是直接使用提供的默认web项目,如图 然而创建 ...
- Socket与WebScoket
socket 英文socket的意思是插座,网络中的Socket是一个抽象的接口,可以理解为网络中连接的两端.通常被叫做套接字接口,其意义在对传输层进行封装屏蔽了传输层的复杂性.它并不是一个协议,是为 ...
- 二、PHP基本语法 - PHP零基础快速入门
我们日常生活中,有些人使用普通话交流,有些人使用家乡话.类比到计算机的世界里,PHP 是人与计算机沟通的语言之一. 既然是语言,那就必须遵循一定的语法规则.譬如 A 向 B 表白,A 会对 B 说:& ...