找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1428|回复: 5
打印 上一主题 下一主题
收起左侧

有什么PID算法的经典学习帖子吗?大佬们

[复制链接]
跳转到指定楼层
楼主
ID:750349 发表于 2020-5-21 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:420836 发表于 2020-5-22 08:13 | 只看该作者
在这个论坛上搜PID算法
回复

使用道具 举报

板凳
ID:155507 发表于 2020-5-22 08:40 | 只看该作者

PID算法电机控制 很详细深入的pdf电子书(共302页)  
http://www.51hei.com/bbs/dpj-90833-1.html

51单片机PID算法教程
http://www.51hei.com/bbs/dpj-97533-1.html
回复

使用道具 举报

地板
ID:155507 发表于 2020-5-22 09:11 | 只看该作者
以茶水桶放水为例,水桶下方有孔可供人接水用;水桶上方有水龙头,可以注水补充水。
你:控制水龙头的放水量,目标是将水桶里的水位保持在某一位置上。下方放水你控制不了。
于是你在水桶上画一条线A!A就是在控制的目标。
1、如果水太少了,你会将龙头开到最大。
2、如果水太多了,你会将龙头关闭。
3、如果水位接近A:
3.1、稍低一点:你会将水龙头再拧大一点点;
3.2、稍过一点:你会将水龙头再拧小一点;
3.3、刚好在A线:说明进水与出水一样,你会保持水龙不动;
这就是控制原理。如何用PID来做这件事呢?
PID的计算结果,就是你的手所拧的水龙开度。就叫它 U 吧。
当前的水位,就你眼睛看到的水位,就叫 B 吧。
你会时刻关注比较水位B,看它们差多少,当然就是:B-A。令Δ=B-A。
开度U有两个要点,其一是大小就是拧多少;其二是方向,就是拧紧还是拧松。
U的大小当然是根据Δ来定才合理,方向当然是反向才对。 所以:让U=-Kp*Δ,-Kp就是比例(对应PID中的P),相当于把误差放大后,再决定U的开度。
但是,这个算法有个缺点,就是当B接近目标A的时候。比如A=B了,这时Δ=0,U=-Kp*Δ=0,即水龙开度=0,关掉了。
你想啊,下面在放水,水位现在正好B=A,但水龙头一关,下一刻,水一定就少了,明显是不合理的。
只有K的控制系统叫比例控制系统,比例控制系统是有差控制系统,当系统A=B时控制就失灵了。它的最佳控制效果只能达到目标值的1/Kp,永远做不到A=B。

于是做了一个改进:
将每次水位差Δ,做一个积累,并将积累的值也用来控制水龙头,当然也是要反向的,于是:
U = -Kp*Δ -Ki*(Δ+Δ1+Δ2+Δ3+……Δn)这里Δ是本次差,Δ1是上次差,Δ2是上上次差,……,Δn是很久以前的差,Ki是将积累乘个比例。
这样做有个好处,就是当A=B是,U不是0,而是以前的差值积累Ki*(Δ+Δ1+Δ2+Δ3+……Δn),而且本次Δ=0,说明,本次计算结果与上次一样,就是说当A=B时水龙头保持当前开度不变。
这个Δ的积累就是PID中的I。PD(比例+积分)的控制系统是可以做到B=的,即控制到无差输出。

到此:说了PID中的PI,D又是什么呢?还要从U = -kΔ -(Δ+Δ1+Δ2+Δ3+……Δn)的缺点说起。就是达成控制目标的速度。
最佳最快的控制过程一定是:
1、开始水龙头开到最大。
2、当B=A是立即拧到某一个开度,这个开度能保证注水和放水速度一样。
不过,即使人来控制,第2、也做不到。
首先:注水和放水速度一样时的开度是多少?你不知道,要试。
其次:从开度最大,到正好,需要时间,不可能立即。也就是说要提前开始拧紧水龙头,当A=B时拧到正好的位置上。
其实最佳的控制不一定是PID,而是能做到第2、的方法。
但PID中的I,就是根据达成目标的变化趋势,将U作个调整,使达成目标的速度加快。
U = -kΔ -(Δ+Δ1+Δ2+Δ3+……Δn)- (Δ-Δ1)*Ki
这里:(Δ-Δ1)是本次变化量 - 上次变化量,这就相当于“加速度”是个变化均势,以变化量的变化趋势为基础*Ki,再修正U。
(Δ-Δ1)*Ki就是PID中的D,这个值可以这样理解,如果Δ越来越稳定时,修正量就越来越少。
什么是稳定呢,比如放水量与注水量始终不变,其差不变,就是稳定了,可以不补了。
I是最不易理解的,知道它可以提升控制速度也就可以了。

PID中的三个控制量,必须精细分配各个分量的大小。否则会控制失败。
例如:水位快到了,龙头开大了,过了!过了关小,关多了,水位又低了,低了又开大小,又过了,来回折腾,就是做不到A=B。

P大速度快,稳定性差,超调大(调过头了)。
I大速度快,稳定性差。
D大速度慢,稳定性好。
PID控制是一门不太好掌握技术。
回复

使用道具 举报

5#
ID:155507 发表于 2020-5-22 09:40 | 只看该作者
用小故事通俗类比PID算法,方便大家理解PID算法

关于pid的小故事方便大家理解pid算法

小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。

小明接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,确定每10分钟来检查一次。这个检查时间就称为采样周期

开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数

小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。漏斗的时间就称为积分时间

小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小明又为难了!于是他又开努脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间

看到几个问采样周期的帖子,临时想了这么个故事。微分的比喻一点牵强,不过能帮助理解就行了,呵呵,入门级的,如能帮助新手理解下PID,于愿足矣。故事中小明的试验是一步步独立做,但实际加水工具、漏斗口径、溢水孔的大小同时都会影响加水的速度,水位超调量的大小,做了后面的实验后,往往还要修改改前面实验的结果。

2、控制模型:人以PID控制的方式用水壶往水杯里倒印有刻度的半杯水后停下;
设定值:水杯的半杯刻度;
实际值:水杯的实际水量;
输出值:水壶的倒处数量和水杯舀出水量;
测量传感器:人的眼睛
执行对象:人
正执行:倒水
反执行:舀水
1、P 比例控制,就是人看到水杯里水量没有达到水杯的半杯刻度,就按照一定水量从水壶里王水杯里倒水或者水杯的水量多过刻度,就以一定水量从水杯里舀水出来,这个一个动作可能会造成不到半杯或者多了半杯就停下来。
说明:P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
2、PI 积分控制,就是按照一定水量往水杯里倒,如果发现杯里的水量没有刻度就一直倒,后来发现水量超过了半杯,就从杯里往外面舀水,然后反复不够就倒水,多了就舀水,直到水量达到刻度。
说明:在积分I控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
3、PID 微分控制,就是人的眼睛看着杯里水量和刻度的距离,当差距很大的时候,就用水壶大水量得倒水,当人看到水量快要接近刻度的时候,就减少水壶的得出水量,慢慢的逼近刻度,直到停留在杯中的刻度。如果最后能精确停在刻度的位置,就是无静差控制;如果停在刻度附近,就是有静差控制。
说明:在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例P+积分I+微分D(PID)控制器能改善系统在调节过程中的动态特性。


在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象﹐或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
比例(P)控制
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
积分(I)控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
微分(D)控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
在PID参数进行整定时如果能够有理论的方法确定PID参数当然是最理想的方法,但是在实际的应用中,更多的是通过凑试法来确定PID的参数。
增大比例系数P一般将加快系统的响应,在有静差的情况下有利于减小静差,但是过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。
增大积分时间I有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。
增大微分时间D有利于加快系统的响应速度,使系统超调量减小,稳定性增加,但系统对扰动的抑制能力减弱。
在凑试时,可参考以上参数对系统控制过程的影响趋势,对参数调整实行先比例、后积分,再微分的整定步骤。

PID控制原理:
1、比例(P)控制 :比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。
2、积分(I)控制 :在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
3、微分(D)控制 :在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
PID控制器参数整定的一般方法:
PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:
一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改;
二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。
现在一般采用的是临界比例法。利用该方法进行 PID控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作;(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;(3)在一定的控制度下通过公式计算得到PID控制器的参数。

PID参数的设定:是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P、I、D的大小。
书上的常用口诀:
参数整定找最佳,从小到大顺序查;
先是比例后积分,最后再把微分加;
曲线振荡很频繁,比例度盘要放大;
曲线漂浮绕大湾,比例度盘往小扳;
曲线偏离回复慢,积分时间往下降;
曲线波动周期长,积分时间再加长;
曲线振荡频率快,先把微分降下来;
动差大来波动慢。微分时间应加长;
理想曲线两个波,前高后低4比1;
一看二调多分析,调节质量不会低。
个人认为PID参数的设置的大小,一方面是要根据控制对象的具体情况而定;另一方面是经验。P是解决幅值震荡,P大了会出现幅值震荡的幅度大,但震荡频率小,系统达到稳定时间长;I是解决动作响应的速度快慢的,I大了响应速度慢,反之则快;D是消除静态误差的,一般D设置都比较小,而且对系统影响比较小。

PID参数怎样调整最佳
(1)整定比例控制
将比例控制作用由小变到大,观察各次响应,直至得到反应快、超调小的响应曲线。
(2)整定积分环节
若在比例控制下稳态误差不能满足要求,需加入积分控制。
先将步骤(1)中选择的比例系数减小为原来的50~80%,再将积分时间置一个较大值,观测响应曲线。然后减小积分时间,加大积分作用,并相应调整比例系数,反复试凑至得到较满意的响应,确定比例和积分的参数。
(3)整定微分环节
若经过步骤(2),PI控制只能消除稳态误差,而动态过程不能令人满意,则应加入微分控制,构成PID控制。先置微分时间TD=0,逐渐加大TD,同时相应地改变比例系数和积分时间,反复试凑至获得满意的控制效果和PID控制参数。

回复

使用道具 举报

6#
ID:396751 发表于 2020-5-23 11:57 | 只看该作者
这个或许有点价值

51黑论坛_对串级PID和单级PID的理解(基于匿名微型六轴) - 知识库 - 匿名科创 ANO TC -.pdf

831.8 KB, 下载次数: 11

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表