【ADRC】跟踪微分器
在上一篇文章中,分析了PID算法的基本数学原理,从PID算法的原理与实际应用,是可以看出其PID的优点与缺点的,ADRC算法(自抗扰控制)也可以说是针对PID算法的一些缺点,或者说工程中难以实现的点做的一个改进的算法。因此后续我会将ADRC的各个部分分别介绍与分析,本节即从最先出现的比较重要的环节---跟踪微分器开始。
PID的缺点
在开始学习跟踪微分器之前,有必要简要的介绍一下PID算法的主要缺点:
1.从PID的原理可以看出PID的稳定裕度是不小的,但其动态性能的裕度并不大。也就是说,如果被控对象处于一个动态变化的环境之中时,便需要经常改动PID的增益来达到控制效果
2.PID算法的核心是:基于误差反馈来消除误差,但有时这种方式并不是最合理的,在初始状态时,直接取这种误差,往往会使初始控制量太大而出现超调的现象,正是这个原因,导致PID算法控制的系统会有“快速性”与“超调”的矛盾
3.在实际应用中,由于实际测量很少有比较合适的微分器,导致大部分的系统使用PI控制,从而限制了PID的控制能力
上述描述中,有两个点比较重要,一个是由于初始误差较大而导致控制量大进而导致的超调问题,另一个是微分信号获取得不准确的问题导致PID中的D项没有发挥出应有的作用。而跟踪微分器便是一个解决这两个问题的一个较好的工具。
跟踪微分器的作用
与PID的缺点相对应,跟踪微分器的作用是提供两个信号:一个是目标点的过渡信号,一个是目标点过渡信号的微分信号。过渡信号的意思可以简单的理解为缓慢的向目标点靠近而不阶跃,不超调。即过渡信号可以理解为惯性环节,不超调,缓慢的向目标点生成一条曲线。
线性跟踪微分器
线性跟踪微分器的原理是根据二阶系统的一个传递函数得来,即:
这个传递函数的性质是非常好的,由于截止频率分子上与分母相等,都为r^2,因此此传递函数的阶跃响应最终会收敛到1,即稳态值是1。
另外,其中的阻尼系数 ξ 可以控制中间达到稳态时的过程,当 ξ <1 时,欠阻尼,阶跃响应速度变快,但是超调变大;当 ξ > 1时,过阻尼,系统没有超调,但是达到稳态的时间变长;当 ξ = 1 时,系统会无超调的一次进入稳态值。这便是我们想要的一个理想的线性跟踪微分器。当 ξ = 1时,传递函数就变成:
此时的参数 r 便可以代表系统的收敛速度,r越大,系统收敛得越快,就越快达到设定值,但实际调试的时候需要根据实际系统来调试r,不同的系统可以达到的实际收敛速度是不同的。
之后便可以根据此传递函数来推导出线性跟踪微分器(TD)的微分方程:
输出x1一直跟踪输入v,x2为x1的微分。接下来可以建立simulink模型看看效果:
我们可以随便指定一个传递函数作为被控对象,之后一个使用PID模块,另一个输入信号增加过渡曲线之后,再经过PID模块,参数都只使用PI参数,都写一样,可以对比看一下过渡曲线的作用:
非线性跟踪微分器
非线性跟踪微分器首先可以联系线性跟踪微分器TD来建立一个二阶积分串联系统:
其中x1相当于是目标过渡信号,x2相当于是过渡信号的微分信号,如果将控制量 u 的控制率修改为一个非线性函数,便可以得到一个非线性跟踪微分器,这个非线性函数的形式有很多种,比较常用的是快速最优控制综合函数:
快速最优控制综合函数有点像最优控制中 bang-bang控制的思想,不过其原理的话,也比较容易理解,我们可以将这个式子拆分来理解:
v 为目标位置,x1为当前位置,x1 - v 表示的是目标位移,即像上图中,将符号函数括号内的内容看做两部分组成,一个是目标位移,一个是减速到0过程的位移,减速过程的位移还是挺好推导的,高中的物理知识:
x = (v1^2 - V2^2) / 2*a
由于减速是有正负号的,因此写作 x2 * |x2| 的形式。当目标位移比减速过程的位移大时,即减速到0并不能达到目标位置,因此u = -r ,以-r的加速度减速,反之,则u = +r,加速。
之后可以建立simulink模型来观察:
线性与非线性跟踪微分器对比
将两个微分器的效果进行对比,使用相同的参数r:
在使用相同的阶跃信号与相同的参数r的情况下,非线性跟踪微分器的收敛速度是要快很多的,不过也有末端的尖峰的缺点,不过具体他们的实际效果作用在控制系统中如何,需要后续再进一步对比。其实做到这一步,已经有对于PID算法的改进效果了,不过后续再针对性的做实验,记录笔记。
【ADRC】跟踪微分器相关推荐
- 如何只使用TD跟踪微分器改进普通PID控制(附完整梯形图代码)
ADRC自抗扰控制专栏有系列文章,大家可以自行搜索.ADRC的模块基本都可以独立使用,这篇博客我们讲解只使用TD跟踪微分器+传统PID的组合来改良PID控制.ADRC 跟踪微分器TD的算法详解请参看下 ...
- ADRC线性跟踪微分器(ST+SCL语言)
ADRC自抗扰相关算法源代码和公式请参看下面文章链接: ADRC/Matlab一步步实现跟踪微分器TD(附完整PLC测试代码链接)_ladrc线性跟踪微分器差分方程_RXXW_Dor的博客-CSDN博 ...
- 【ADRC】一. 线性跟踪微分器
跟踪微分器(TD,Tracking-Differentiator)由韩京清研究员在<自抗扰控制技术>中提出,是自抗扰控制(ADRC,Active Disturbance Rejection ...
- 自抗扰控制ADRC之三种微分跟踪器TD仿真分析
目录 前言 1 全程快速微分器 1.1仿真分析 1.2仿真模型 1.3仿真结果 1.4结论 2 Levant微分器 2.1仿真分析 2.2仿真模型 2.3仿真结果 3.非线性跟踪微分器--韩教授 3. ...
- 2020-12-28 Matlab自动化控制-Adrc自抗扰控制
Matlab自动化控制-Adrc自抗扰控制 想要初步了解ADRC,可以从韩京清教授的一篇文献和一本书看起 1.文献: 从PID技术到"自抗扰控制"技术(<控制工程>,2 ...
- ADRC自抗扰控制自学笔记(包含simulink仿真)(转载)
他这里让我很好理解了跟踪微分器 非线性PID(准确说是非线性PD,所以可以看到输入是两根线而不是三根线) 也就是说传统PID是线性的?但是不是那些系统是非线性的,比如无人机,平衡车,只是小幅度里近似 ...
- 博途PLC ADRC自抗扰控制完整SCL源代码
关于自抗扰控制框图可以参看专栏的其它文章,这里不再讲解具体算法过程,详细了解也可以参看韩京清研究员写的 <ADRC自抗扰>一书.限于本人水平和能力,文中难免出现错误和不足之处,诚恳的欢迎大 ...
- 【永磁同步电机转速环ADRC电流环ADRC双环无传感器控制】
永磁同步电机转速环ADRC电流环ADRC无传感器控制 原理.仿真.波形.总结 转速环.电流环ADRC原理 仿真框图 仿真波形 总结 原理.仿真.波形.总结 转速环.电流环ADRC原理 1.转速环ADR ...
- 无名的ADRC的C语言实现
分为ADRC.h和ADRC.c 确实看头文件有用,有哪些变量都一目了然. 和ACfly一样的是比如都有beta这个参数 ADRC.c /*------------------------------- ...
最新文章
- writeValueAsString封装成工具类
- 检查PHP会话是否已经开始
- 【ros】4.rosbag的相关用法
- edittext禁止换行符但能自动换行简书_使用n-gram创建自动完成系统
- 18.HMM隐马尔可夫模型
- oracle实验四运动会,实验四oracle的安全性和完整性控制
- matlab字符串固定长度,限制Matlab用户界面编辑框中的字符串长度
- Eclipse的代码补全方法可以实现psvm和sout
- 【解决】linux磁盘扩容大全:新增磁盘、原磁盘扩容、home分区root分区扩容
- 计算机网络实验--Cisco Packet Tracer 实验
- 2016-2019 书单
- 守望先锋:射线命中位置,相距距离,根据射线命中位置和相距距离找到对应实体在数组中的值
- 程序逸的Java项目之旅-图书管理系统之环境的搭建
- Linux - 可视化菜单界面设计
- 常见的PS安装错误代码与解决方法
- TCP的三次握手与四次挥手基本理解
- acmore|acmore.cc1211采油区域1212会议中心1213抢掠计划APIO2009
- html浏览器在哪里,javascript在哪儿启用?
- 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体
- Latex文字环绕踩坑记录