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™ 功能的引入意义最为重大,但也最常引起困惑.与 ...
随机推荐
- 使用curl制作简易百度搜索
这几天研究了一下php中的curl类库,做了一个简单的百度搜索,先上代码 <div style="width:200px;height:100px;"> <div ...
- 修改phpcms中的评论样式
phpcms中自带的评论插件很好用!但是样式个人感觉丑的狠,百度一下也没能找到解决方式,也许是自己的搜索方式不对,于是自己就研究了研究,这里可以使用两种方法进行修改 方法一: 使用PHPCMS中的ge ...
- 基础概念PHP-FPM、FastCGI和CGI
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器.接下来我们就以图形方式,解释这些概念之间的关系. 基 ...
- 生鲜配送管理系统_升鲜宝供应链系统V2.0 设计思想及主要模块,欢迎大家批评指点。
前言: 经过这几年的开发,升鲜宝生鲜供应链系统管理软件,终于完成C/S与B/S二个版本的开发,先主要介绍B/S版本的功能,C/S版本的功能更加完善. 升鲜宝供应链系统主要由以下几个主要端组成: ...
- TestLink-Windows安装教程
TestLink-Windows安装教程 QQ群交流:585499566 一.这篇文章的目的 以后工作中要使用Testlink来管理测试的流程,需要在本地或者Testlink服务器上练习使用,在个人本 ...
- C# ToString()日期格式
C# ToString()日期格式 ToString:2016/9/27 0:00:00ToString("yyyy/MM/dd"):2016/09/27ToString(&quo ...
- 记一次 c 语言 的 多线程查找 简单实现
//仅供参考学习 1 #define _CRT_SECURE_NO_WARNINGS //屏蔽 vs 的a #include <stdio.h> #include <stdlib.h ...
- 数字信号处理专题(2)——利用FPGA进行基本运算及特殊函数定点运算
一.前言 FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积.滤波.变换等基本的数学运算.但由于FPGA的硬件结构和开发特性使得其对 ...
- DotNetCore + Sonar + Coverlet 代码覆盖率检查
一,下载 sonar-scanner-msbuild 我当前下载的最新版本是:sonar-scanner-msbuild-4.5.0.1761-netcoreapp2.0 https://docs.s ...
- Fix: Unable to terminate process ‘Access is denied’ 杀进程,关服务
https://appuals.com/fix-unable-to-terminate-process-access-is-denied/ 我 Process Hacker (方法3),成功杀掉: 阿 ...