在上一篇文章中,分析了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】跟踪微分器相关推荐

  1. 如何只使用TD跟踪微分器改进普通PID控制(附完整梯形图代码)

    ADRC自抗扰控制专栏有系列文章,大家可以自行搜索.ADRC的模块基本都可以独立使用,这篇博客我们讲解只使用TD跟踪微分器+传统PID的组合来改良PID控制.ADRC 跟踪微分器TD的算法详解请参看下 ...

  2. ADRC线性跟踪微分器(ST+SCL语言)

    ADRC自抗扰相关算法源代码和公式请参看下面文章链接: ADRC/Matlab一步步实现跟踪微分器TD(附完整PLC测试代码链接)_ladrc线性跟踪微分器差分方程_RXXW_Dor的博客-CSDN博 ...

  3. 【ADRC】一. 线性跟踪微分器

    跟踪微分器(TD,Tracking-Differentiator)由韩京清研究员在<自抗扰控制技术>中提出,是自抗扰控制(ADRC,Active Disturbance Rejection ...

  4. 自抗扰控制ADRC之三种微分跟踪器TD仿真分析

    目录 前言 1 全程快速微分器 1.1仿真分析 1.2仿真模型 1.3仿真结果 1.4结论 2 Levant微分器 2.1仿真分析 2.2仿真模型 2.3仿真结果 3.非线性跟踪微分器--韩教授 3. ...

  5. 2020-12-28 Matlab自动化控制-Adrc自抗扰控制

    Matlab自动化控制-Adrc自抗扰控制 想要初步了解ADRC,可以从韩京清教授的一篇文献和一本书看起 1.文献: 从PID技术到"自抗扰控制"技术(<控制工程>,2 ...

  6. ADRC自抗扰控制自学笔记(包含simulink仿真)(转载)

    他这里让我很好理解了跟踪微分器 非线性PID(准确说是非线性PD,所以可以看到输入是两根线而不是三根线)  也就是说传统PID是线性的?但是不是那些系统是非线性的,比如无人机,平衡车,只是小幅度里近似 ...

  7. 博途PLC ADRC自抗扰控制完整SCL源代码

    关于自抗扰控制框图可以参看专栏的其它文章,这里不再讲解具体算法过程,详细了解也可以参看韩京清研究员写的 <ADRC自抗扰>一书.限于本人水平和能力,文中难免出现错误和不足之处,诚恳的欢迎大 ...

  8. 【永磁同步电机转速环ADRC电流环ADRC双环无传感器控制】

    永磁同步电机转速环ADRC电流环ADRC无传感器控制 原理.仿真.波形.总结 转速环.电流环ADRC原理 仿真框图 仿真波形 总结 原理.仿真.波形.总结 转速环.电流环ADRC原理 1.转速环ADR ...

  9. 无名的ADRC的C语言实现

    分为ADRC.h和ADRC.c 确实看头文件有用,有哪些变量都一目了然. 和ACfly一样的是比如都有beta这个参数 ADRC.c /*------------------------------- ...

最新文章

  1. writeValueAsString封装成工具类
  2. 检查PHP会话是否已经开始
  3. 【ros】4.rosbag的相关用法
  4. edittext禁止换行符但能自动换行简书_使用n-gram创建自动完成系统
  5. 18.HMM隐马尔可夫模型
  6. oracle实验四运动会,实验四oracle的安全性和完整性控制
  7. matlab字符串固定长度,限制Matlab用户界面编辑框中的字符串长度
  8. Eclipse的代码补全方法可以实现psvm和sout
  9. 【解决】linux磁盘扩容大全:新增磁盘、原磁盘扩容、home分区root分区扩容
  10. 计算机网络实验--Cisco Packet Tracer 实验
  11. 2016-2019 书单
  12. 守望先锋:射线命中位置,相距距离,根据射线命中位置和相距距离找到对应实体在数组中的值
  13. 程序逸的Java项目之旅-图书管理系统之环境的搭建
  14. Linux - 可视化菜单界面设计
  15. 常见的PS安装错误代码与解决方法
  16. TCP的三次握手与四次挥手基本理解
  17. acmore|acmore.cc1211采油区域1212会议中心1213抢掠计划APIO2009
  18. html浏览器在哪里,javascript在哪儿启用?
  19. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体
  20. Latex文字环绕踩坑记录

热门文章

  1. 那个冬天(摘自联商水园里上尉的帖子)
  2. Verilog中使用inout如何编写以及仿真
  3. 研究表明:视频游戏和体育运动一样可以增强人的空间感
  4. python开发eos智能合约通用平台
  5. 变量是什么?变量的三要素是什么?
  6. 2023爱分析·AIGC市场厂商评估报告:拓尔思
  7. C语言:跨平台环境下使用snprintf,vsnprintf系列函数要注意返回值的问题
  8. K-means算法(无监督学习)
  9. php、js判断闭合标签最简算法
  10. 汇编学习笔记之阶码与移码