目录

  • 前言
  • 前期准备
  • 过程
    • pid的基础
    • 比例控制
    • 积分控制
    • 微分控制
    • PID控制
  • 位置式和增量式

前言

最近在学习关于PID的一些知识,记录一下。

前期准备

  • MATALAB R2020b

过程

pid的基础

PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法。PID控制的实质就是根据期望与测量的偏差值,按照比例、积分、微分的函数关系进行运算,运算结果用以控制输出,使得被控对象保持在一个稳定状态

系统由PID控制器和被控对象组成,原理框图如下

误差e(t)=r(t)−u(t)e(t)=r(t)-u(t)e(t)=r(t)−u(t)

连续控制系统的理想PID控制规律为:
u(t)=Kp(e(t)+1Ti∫0te(t)dt+Tdde(t)dt).u(t) = K_p\left(e(t)+\frac{1}{T_i}\int_0^t e(t)dt+T_d\frac{de(t)}{dt}\right). u(t)=Kp​(e(t)+Ti​1​∫0t​e(t)dt+Td​dtde(t)​).
式中
KpK_pKp​---- 控制器增益,比例系数,与比例度成倒数关系
TiT_iTi​------积分时间常数
TdT_dTd​------微分时间常数
e(t)e(t)e(t)------期望值与测量值之差

kpk_pkp​—成比例地反映控制系统的偏差信号,偏差一旦产生,立即产生控制作用以减小偏差(图中的 KpK_pKp​,等同)

kik_iki​—主要用于消除静差提高系统的无差度。积分作用的强弱,取决于积分时间常数 TiTiTi,TiTiTi越大积分作用越弱,反之则越强(图中的 KpTi\frac{K_p}{T_i}Ti​Kp​​)

kdk_dkd​—微分环节的作用能反映偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间(图中的 Kp⋅Td{K_p}\cdot{T_d}Kp​⋅Td​)

比例控制

利用matlab仿真来观察各个系数对曲线的影响,首先,搭建模型,将ki,kd=0k_i,k_d=0ki​,kd​=0,如下图

仿真结果如下图

从仿真图中可以看出,比例系数kpk_pkp​越小,控制作用越小,系统响应越慢;反之,比例系数kpk_pkp​越大,控制作用也越强,系统响应也越快。它能迅速反映偏差,从而减小偏差,但不能消除静差(静差是指系统控制过程趋于稳定时,给定值与输出量的实测值之差)。但是,kpk_pkp​过大会使系统产生较大的超调和振荡,导致系统的稳定性能变差。

比例控制具有抗干扰能力强、控制及时、过渡时间短的优点,但存在稳态误差,增大比例系数可提高系统的开环增益,减小系统的稳态误差,从而提高系统的控制精度,但这会降低系统的相对稳定性,甚至可能造成闭环系统的不稳定,因此,在系统校正和设计中,比例控制一般不单独使用。
说到可提高系统的开环增益,就要看下图,KKK就是开环增益,而kp⋅Kk_p \cdot Kkp​⋅K提高了原本的开环增益,使得分母增大,进而减小稳态误差。

那为什么kpk_pkp​过大会使系统产生较大的超调和振荡,导致系统的稳定性能变差呢?
我们先来看看它的根轨迹,如下图所示

从图中可以看出,系统的极点都在s平面的左半平面(特征根具有负实部),根据线性系统稳定的充分必要条件可知,系统是稳定的,也就是说最后响应曲线能稳定在某一个值上,但是如何到达稳定,就得具体分析。
我们可以看到系统传递函数只有比例作用时的传递函数Gk(s)=kp(3s+1)(2s+1),H(s)=1Gk(s)=\frac{k_p}{(3s+1)(2s+1)},H(s)=1Gk(s)=(3s+1)(2s+1)kp​​,H(s)=1
闭环传递函数Φ(s)=kp6s2+5s+kp+1\Phi(s)=\frac{k_p}{6s^2+5s+k_p+1}Φ(s)=6s2+5s+kp​+1kp​​
可以看出,因为不是标准的二阶系统,可以拆成比例环节乘以震荡环节,也就是把分子kpk_pkp​提出来,Φ(s)=kpkp+1⋅kp+16s2+5s6+kp+16\Phi(s)=\frac{k_p}{k_p+1}\cdot \frac{\frac{k_p+1}{6}}{s^2+{\frac{5s}{6}}+{\frac{k_p+1}{6}}}Φ(s)=kp​+1kp​​⋅s2+65s​+6kp​+1​6kp​+1​​
所以二阶系统的阻尼比ζ=5612kp+1\zeta={\frac{5\sqrt{6}}{12\sqrt{{k_p+1}}}}ζ=12kp​+1​56​​,ωn=kp+16\omega_n=\sqrt{\frac{k_p+1}{6}}ωn​=6kp​+1​​
很明显,将kpk_pkp​代入,我们可以得到阻尼比是小于1的,也就是欠阻尼。而欠阻尼系统的响应是有超调的,而且随着阻尼比越小,超调越大,上升时间越短。所以kpk_pkp​越大,阻尼比越小,所以不能一直提高kpk_pkp​的值。

我们也可以从上面那个根轨迹图来判断,首先,我们知道根轨迹是开环系统某一参数从零变到无穷时,闭环系统特征方程式的根在s平面上变化的轨迹

从图中看出,临界阻尼和过阻尼都是在实轴上,而欠阻尼却变成了共轭复根,根据根轨迹图,当kpk_pkp​(或开环增益)继续增大,那么根轨迹就会往共轭复根处跑,也就会成为欠阻尼了,而且越远离实轴,阻尼比也就越小,超调也会越大。

积分控制

从图中可以看出仅凭kpk_pkp​是不能将曲线调到预定位置,而是和期望值始终有一个稳定的偏差,所以我们需要加上积分系数kik_iki​,用来进行无差调节,如下图所示

从图中可以看出,随着kik_iki​增大,曲线响应速度加快,产生的超调增大。
加入积分控制后,消除了系统稳态误差,但随着Ti{T_i}Ti​值的增大,达到稳态的过渡时间也逐渐加长。

积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即使误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大,使稳态误差进一步减小,直到等于零,但会使系统稳定性降低,过渡时间也加长。

我们可以看到公式中的KpTi\frac{K_p}{T_i}Ti​Kp​​,积分作用的强弱,取决于积分时间常数 TiT_iTi​,TiT_iTi​越大积分作用越弱,反之则越强。又可以从图中看出,kpk_pkp​同样的情况下,由式子ki=KpTiki=\frac{K_p}{T_i}ki=Ti​Kp​​,kik_iki​越大,说明Ti{T_i}Ti​越小,积分作用越强,超调越大。所以增大积分时间Ti{T_i}Ti​有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长(ki=0.1k_i=0.1ki​=0.1)。图中的ki=1.2k_i=1.2ki​=1.2减少了积分时间,发生了超调,系统出现振荡而且静差消除时间变长。
(补充:单独用积分控制可以提高系统的型别,有利于系统稳态性能的提高,但积分控制使系统增加了一个位于原点的开环极点,使信号产生90°的相角滞后,减少了系统的相角裕度,于系统的稳定性不利。)

微分控制

在调节微分环节的时候,如下图

仿真图如下

微分环节的作用能反映偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。

可以从图中看出,随着kdk_dkd​增大,曲线调节时间变快,产生的超调减小。

微分环节有助于系统减小超调,克服振荡,减小调节时间,从而改善了系统的动态性能,但微分时间常数过大,会使系统出现不稳定。微分控制作用一个很大的缺陷是容易引入高频噪声,所以在干扰信号比较严重的流量控制系统中不宜引入微分控制作用,或者说使得系统的固有频率增大[9],固有频率增大会越接近高频噪声的频率,使得整个系统产生共振,而共振会导致机械系统损坏。

参考[3]@李崇的回答,从根轨迹的角度来说,D环节相当于引入了新的零点(kp+kd⋅s)Gk(s)(k_p+k_d \cdot s)Gk(s)(kp​+kd​⋅s)Gk(s),使得系统的极点向左半平面移动,使得稳定裕度更大。有些自身不稳定的系统,只靠PI是不能够变稳定的,需要新的零点把闭环特征根给吸引到左半平面来。
有一个系统开环传函Gk=1s2Gk=\frac{1}{s^2}Gk=s21​根轨迹的仿真图如下

可以看出根轨迹在虚轴上,可以知道拥有在虚轴上的特征根的闭环系统响应是等幅震荡的。而我们通常以开环增益kkk作为某一参数,也就是说无论开环增益kkk如何变化,根轨迹始终都在虚轴上,系统响应都是等幅震荡。
我们将零点加上去Gk(s)=s+1s2Gk(s)=\frac{s+1}{s^2}Gk(s)=s2s+1​根轨迹的仿真图如下

从图中可以看出,加入零点后,系统的特征根除了原点外全都往左半平面跑了,而且随着开环增益的增大,系统变得稳定,系统的特征根越远离虚轴。

我们知道伯德图是系统频率响应的一种图示方法,利用伯德图可以看出在不同频率下,系统增益的大小及相位,也可以看出增益大小及相位随频率变化的趋势,还可以对系统稳定性进行判断。Gk(s)=s+1Gk(s)={s+1}Gk(s)=s+1bode图仿真图如下

可以看出,随着频率增大,系统增益也随之增大,幅值变大,把小的尖刺给放大,这也就是微分会使高频噪声放大。参照[3],输入信号sin(10t)+0.01sin(100t)sin(10t)+0.01sin(100t)sin(10t)+0.01sin(100t)具体看图

算是低频的微分图

高频的微分图

两个函数叠加

从上图看出,随着频率增大,微分后出现尖刺。
可以来个更明显的

从图中就可以看出,当高频噪声的幅值提高十倍的时候,随着频率的增大,微分后出现尖刺更多也更密集。
如此看来,当系统中拥有高频噪声时,使用微分环节会造成系统响应含有更多的尖刺,而不是平滑的图像,造成系统震荡。

(补充:在PID控制中,加入微分项相当于加入了阻尼,这样可以使震荡快速衰减,变得稳定。)

PID控制


PID控制通过积分作用消除误差,而微分控制可缩小超调量、减少调节时间,是综合了PI控制和PD控制长处并去除其短处的控制。

位置式和增量式

数字 PID 控制算法因时间离散化不同,通常分为位置式 PID 控制算法和增量式 PID 控制算法,具体文章可参考[7]
有几点需要记住:
① 最大超调量是响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标;上升时间是指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标;静差是被控量的稳定值与给定值之差,一般用于衡量系统的准确性。
② 关于积分积累误差,可以想象成用高度1米水缸接水。比如期望是接满1米,水龙头开始放水,放到水缸80厘米,然后把水龙头关掉,水缸里的水高度和期望相差20厘米,即使没有了输入,误差也会保持不变,这就是积分作用,水缸本身就是个积分结构,能把水一直储存下来。而如果是直流电机,一旦没有了输入,那么误差就会变成期望减去零,因为它本身没有积分结构,这时就需要积分作用来在它误差为零时,保持它的转速稳定在期望值。更多详细可以参考文章[5][6]
③饱和是执行机构的一个特性,定义为:一开始因变量会随着自变量的增大而增大,而当自变量到达某个特定范围时,因变量将不再随着自变量的增大而有明显的改变,而是不断逼近或停止在某个最大值附近。我的理解是开门只能开180°,但是你非要开360°,那肯定是不行的,因为门已经被墙卡住了。但是因为有积分环节,它会一直累积误差,输出360°,但是门却被墙卡住了,转不到360°。然后你又想关门,这时系统会从360°开始减小角度,实际门却没有动,等到输出小于180°的时候门才会有动作,你会觉得这个反应不是很灵敏,这是因为有一段时间是等待系统从积分饱和出来,减到180°,门才会有动作。

参考文章
[1] 深入浅出PID控制算法
[2] PID
[3] PID 的微分环节主要作用是什么
[4] PID中Kp,Ki,Kd跟Kp,Ti,Ti之间的关系式
[5] pid控制器输出的量到底是什么
[6] 如何通俗地解释 PID 参数整定
[7] 位置式与增量式PID
[8] 积分饱和
[9]九、控制与pid
[10]关于固有频率及阻尼

自己对PID一些学习总结相关推荐

  1. PID的学习与理解(一)

    PID的学习与理解 前言 什么是PID? PID的公式与讲解. PID的伪代码操作 公式变换 如何调节PID呢? 总结 前言 最近在做SRT,方向是足式机器人,,例会上老师要求我们学习PID这一有趣的 ...

  2. LADRC的学习——PID的学习

    PID部分的学习 上文介绍了ADRC的理论,并试着按照自己的理解用Matab编程实现韩老师论文中的算法,但是对调节参数和一些地方还不太懂,因此我打算从头开始理解,从PID的好坏开始学习理解,看Kp,K ...

  3. 2021电赛F题智能送药小车方案分析(openMV数字识别,红线循迹,STM32HAL库freeRTOS,串级PID快速学习,小车自动返回)

    2021全国大学生电子设计竞赛F题智能送药小车 前提:本篇文章重在分享自己的心得与感悟,我们把最重要的部分,摄像头循迹,摄像头数字识别问题都解决了,有两种方案一种是openARTmini摄像头进行数字 ...

  4. 随想录(串级PID的学习)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] PID以及串级PID在实际生产中使用广泛,今天看了这篇文章,并结合过往经验做个笔记. 1.串级 ...

  5. PID控制算法学习笔记——算法入门

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.PID的工作原理 二.控制策略 1.比例控制 2.积分控制 3.微分控制 总结 参考文章 前言 PID,就是比例( ...

  6. PID控制算法学习与实现总结(二)位置式PID控制算法

    PID算法数字化 在上一节中讨论了连续PID控制的原理,但是计算机没有办法直接处理连续信号,只能根据采样时刻对连续信号进行采样,将采样之后的信号送给计算机处理. 按模拟PID控制算法,以一系列的采样时 ...

  7. PID控制学习代码(三)

    本篇博客主要介绍PID控制的C++语言实现. 位置型PID控制代码实现: #include<iostream> using namespace std; //PID各项参数的变量结构体st ...

  8. PID控制学习--原理(一)

    目录 一.PID控制原理与程序流程 1.过程控制 2.PID调节各个单元的作用 二.数字PID控制器 1.模拟PID控制规律的离散化 2.数字PID控制器的差分方程 3.常见的控制方式 4.PID算法 ...

  9. PID控制算法学习与Matlab仿真

    文章目录 起因 算法原理 算法解析 调参小技巧 Matlab仿真 起因 PID控制算法应该是包括工业机器人等各种行业和领域中非常常用的一种控制算法了.了解这个算法的起因是在稚晖君开发的自行车项目中见到 ...

最新文章

  1. 自定义对话框JDialog的使用实例
  2. html屏幕宽度一体式下拉菜单怎么做_针对白屏埋点,我是这样做的
  3. 如何降低数据中心宕机事件的影响
  4. php数组保存txt,php将数组存储为文本文件方法汇总,_PHP教程
  5. 笔记本vm系统的分辨率不好调整_关于超高分辨率小动物超声成像系统(3100LT)和多模式、超高分辨率小动物光声/超声成像系统(2100)测试费价格调整通知...
  6. oracle 11g release2版本jdbc,Oracle发布JDeveloper11gRelease2更新版
  7. 2017-2018-1 Java演绎法 第三周 作业
  8. 成功试验基于C#/.NET的Android开发
  9. 带研发团队后的日常思考1 初级管理者的困惑
  10. 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...
  11. ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
  12. python语言如何软件搬家_python写程序-就像搬家把物品分类放在箱子里
  13. Java基础学习总结(60)——Java常用的八种排序算法
  14. 无法在C语言软件里敲字,网页上不能输入文字怎么办
  15. FAQ宝典之Rancher Server
  16. mysql 按小时统计
  17. Ubuntu 安装Samba(Linux与Windows共享文件)
  18. java生产者消费者同步模式
  19. 华为认证hcia证书实力 华为认证hcia考试题库
  20. 斑马打印机链接数据库实现自动打印

热门文章

  1. C语言深度剖析笔记2
  2. 《网络安全应急响应技术实战指南》知识点总结(第10章 流量劫持网络安全应急响应)
  3. RSRP、RSSI、RSRQ、SINR简单的解释
  4. 教你如何有效防止DDos攻击?
  5. 每日工作记录——ERROR:Simulator:793 - Unable to elaborate instantiated module work
  6. 60种生活小窍门,分享
  7. 桂林电子科技大学计算机学院老师,李凤英_桂林电子科技大学研究生导师信息...
  8. 计算机冗余,惯性导航计算机系统冗余设计
  9. 鸿蒙系统分享,鸿蒙系统的启动流程学习分享
  10. 光敏电阻 的工作原理及应用