• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

简约而不简单的PID

PID是一个很经典的控制算法,工业控制普遍都是PID,为什么呢?我想可能是它比较简单也很成熟,而且稳定(越简单的东西越稳定)。

我第一次接触PID是做一个温度控制,这个项目用于大型农牧业,大概就是通过Zigbee组网和个种传感器采集温度,湿度,有害气体浓度(CO2,CH4等),还应用了GPS,RFID等,子节点采用MSP430+CC2530。当年的我只能看师兄在玩zigbee,RFID。本帖以温度控制为例讲述我所认知的PID,后面会讲讲串级PID如何控制电机。

计划内容如下:位置式PID,增量式PID,串级PID,自整定PID,模糊自适应PID...........PID全家桶(还有专家PID,BP神经网络PID,还有一些改进型的PID算法,我没怎么用过,也不太会

有很多地方我也忘得差不多了,也有没弄清楚的地方,给自己做一份笔记,长期缓慢更新!

全部回复(17)
正序查看
倒序查看
2018-11-13 13:26
加油,加油,坐等更新!
0
回复
2018-11-14 21:00
@电源网-璐璐
加油,加油,坐等更新![图片]
0
回复
2018-11-14 21:43

再说PID之前我的介绍个东西,那就是位式控制算法(有二位式和三位式)个人感觉采用二位式算法的人多一些,特别是对于当年的我,是小白中的小白菜得很,什么都用最简单的。

二位式算法只有两种状态非黑即白、非胖即瘦、非开即关、非0即1(说了一堆废话),由于只有开和关两种状态,所以要么全功率加热要么不加热。由这个特点使得温度值会在目标值上下波动不能稳定,如图1,而且还有一个值得注意的特点就是加热的速度(温升/斜率)基本一样。所以二位式控制算法的效果并不理想,但是在某些要求不高场合也能用。(本帖所有例子都是围绕温度控制,我感觉比较好理解)

 

1

如果是你手动调节温度达到目标温度你应该关注哪些信息才能使温度平稳在目标值附近呢?

如果是我我会这样操作:

1)尽快使温度达到目标值附近(偏低一点)。

2)稍微断开电源一小会大致判断一下温度的惯性。

3)间歇性接通电源保持温度继续逼近目标值。(这就是PWM了)

4)达到目标值后继续观察温度曲线若温度曲线斜率为0或者已经有下降趋势,这时,通过前面的经验判断所需接通时间,使温度在目标值附近小范围波动。

在以上操作过程中就包括了PID的基本思想(如果没看懂或有不恰当的地方欢迎指正交流)下面进入正题.

PID中P为比例系数,I积分系数,D微分系数。

PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPaPaPaPPPP先说比例控制算法

比例比例比例顾名思义是个比例.....哈哈.....

举个栗子:正比例函数y=kx的K即为比例系数(斜率),x的变化率相同时,k大的函数对应的y变化率大(我想我说明白了)。这个比例控制算法就是高配版的二位式算法,那么他高配在哪呢?我认为有两点,第一温度曲线斜率可变(表现出来的结果就是到达目标值的时间缩短了换句话说就是响应速度变快了),第二就是采用pwm控制,使得发出的功率被细分了。

现在呢我从开机就开始接收温度传感器返回的温度值(离散的点)。

设当前温度温度为X,则从开机到当前时间的温度序列为:

那么设目标值温度和当前温度的差值为温差为E,目标值为SV,有 

目标值—当前的温度值=当前时刻温差

当这个温差大于0时表示此时温度未达标

温差小鱼0时 已经超标

温差等于0时 正正好好

那么下面就用公式表示一下吧:(k表示当前时刻)

假设目标温度80℃,当前温度21℃,那么OUT=80-21=59℃,假设Kp=2 ,∴OUT=118   

然后转换成相应的占空比,比例算法就出来了,非常简单吧。

但是有个问题,不知各位发现没发现,当目标值=当前温度值时,会怎么样呢?

显然E=0,所以OUT=0,∴输出占空比一定为0,此时相当于没有控制信号输出,失控了。所以我们要加一个常数b使得有一个微弱信号输出(信号强度需要调试得出结果)公式如下

这时会有小伙伴说万一呢?这不又等于0了吗。欢迎大家讨论留言哈

重点在于你控制的对象,若没有惯性或者说很小则一定要+b,惯性很大的 不加常数b也无所谓。(如果没想明白等我叙述完积分I你一定明白)。到此比例控制算法基本写完了如果有错误或者不足或理解有偏差的地方请批评指正,一起交流进步。

提前放上张图以备不时之需

 

 

2
回复
2018-11-15 12:52
@喔喔呜呜
再说PID之前我的介绍个东西,那就是位式控制算法(有二位式和三位式)个人感觉采用二位式算法的人多一些,特别是对于当年的我,是小白中的小白菜得很,什么都用最简单的。二位式算法只有两种状态非黑即白、非胖即瘦、非开即关、非0即1(说了一堆废话),由于只有开和关两种状态,所以要么全功率加热要么不加热。由这个特点使得温度值会在目标值上下波动不能稳定,如图1,而且还有一个值得注意的特点就是加热的速度(温升/斜率)基本一样。所以二位式控制算法的效果并不理想,但是在某些要求不高场合也能用。(本帖所有例子都是围绕温度控制,我感觉比较好理解)[图片][图片] 图1如果是你手动调节温度达到目标温度你应该关注哪些信息才能使温度平稳在目标值附近呢?如果是我我会这样操作:1)尽快使温度达到目标值附近(偏低一点)。2)稍微断开电源一小会大致判断一下温度的惯性。3)间歇性接通电源保持温度继续逼近目标值。(这就是PWM了)4)达到目标值后继续观察温度曲线若温度曲线斜率为0或者已经有下降趋势,这时,通过前面的经验判断所需接通时间,使温度在目标值附近小范围波动。在以上操作过程中就包括了PID的基本思想(如果没看懂或有不恰当的地方欢迎指正交流)下面进入正题.PID中P为比例系数,I积分系数,D微分系数。PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPaPaPaPPPP先说比例控制算法比例比例比例顾名思义是个比例.....哈哈.....[图片]举个栗子:正比例函数y=kx的K即为比例系数(斜率),x的变化率相同时,k大的函数对应的y变化率大(我想我说明白了)。这个比例控制算法就是高配版的二位式算法,那么他高配在哪呢?我认为有两点,第一温度曲线斜率可变(表现出来的结果就是到达目标值的时间缩短了换句话说就是响应速度变快了),第二就是采用pwm控制,使得发出的功率被细分了。现在呢我从开机就开始接收温度传感器返回的温度值(离散的点)。设当前温度温度为X,则从开机到当前时间的温度序列为:[图片]那么设目标值温度和当前温度的差值为温差为E,目标值为SV,有 [图片]目标值—当前的温度值=当前时刻温差当这个温差大于0时表示此时温度未达标温差小鱼0时已经超标温差等于0时正正好好那么下面就用公式表示一下吧:[图片](k表示当前时刻)假设目标温度80℃,当前温度21℃,那么OUT=80-21=59℃,假设Kp=2,∴OUT=118   然后转换成相应的占空比,比例算法就出来了,非常简单吧。但是有个问题,不知各位发现没发现,当目标值=当前温度值时,会怎么样呢?显然E=0,所以OUT=0,∴输出占空比一定为0,此时相当于没有控制信号输出,失控了。所以我们要加一个常数b使得有一个微弱信号输出(信号强度需要调试得出结果)公式如下[图片]这时会有小伙伴说万一[图片]呢?这不又等于0了吗。欢迎大家讨论留言哈[图片]。重点在于你控制的对象,若没有惯性或者说很小则一定要+b,惯性很大的不加常数b也无所谓。(如果没想明白等我叙述完积分I你一定明白)。到此比例控制算法基本写完了如果有错误或者不足或理解有偏差的地方请批评指正,一起交流进步。提前放上张图以备不时之需[图片][图片]  
希望能讲解一下参数整定的过程,之前看了好多原理,结果真的要调的时候还是感觉无从下手
0
回复
2018-11-15 22:43
@gongyuan073
希望能讲解一下参数整定的过程,之前看了好多原理,结果真的要调的时候还是感觉无从下手
具体在程序中怎么控制啊
0
回复
2018-11-16 11:54
@gongyuan073
希望能讲解一下参数整定的过程,之前看了好多原理,结果真的要调的时候还是感觉无从下手
会继续更新的,现在有点忙,还有一个月就考试了。写完增量式PID就说整定。我感觉理解每个参数的意义对整定很重要。
0
回复
2018-11-16 12:13
@喔喔呜呜
会继续更新的,现在有点忙,还有一个月就考试了。写完增量式PID就说整定。我感觉理解每个参数的意义对整定很重要。[图片]
我对PID整定的工程经验并不多只做过一些小系统的,我会把我的想法说出来和大家一起交流。我也会讲述一下整定值是如何算出来的,前提的有一个差不多的模型(局限性很大)。
0
回复
2018-11-17 00:04

从Word复制会出一些问题所以我直接粘图片了

0
回复
2018-11-19 23:39
@喔喔呜呜
从Word复制会出一些问题所以我直接粘图片了[图片][图片][图片][图片]

0
回复
2018-11-20 09:38
@喔喔呜呜
[图片][图片][图片][图片]
加油,期待下次更新
0
回复
wsyy1998
LV.4
12
2018-11-25 18:08
@喔喔呜呜
[图片][图片][图片][图片]
期待下次更新
0
回复
szjlcpcb
LV.3
13
2018-12-15 11:06
@wsyy1998
期待下次更新
顶一下!
0
回复
2019-01-26 10:31
@喔喔呜呜
[图片][图片][图片][图片]

PID整定

  比例(P)控制  比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。

积分(I)控制

  在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。

微分(D)控制

  在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会   出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。


PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行PID控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作﹔(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期﹔(3)在一定的控制度下通过公式计算得到PID控制器的参数。

PID参数的设定:是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P\I\D的大小。( 有些东西表述不清楚只能靠自己理解)

 

  PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:

  温度T: P=20~60%,T=180~600s,D=3-180s

  压力P: P=30~70%,T=24~180s,

  液位L: P=20~80%,T=60~300s,

  流量L: P=40~100%,T=6~60s。

书上的常用口诀:

  参数整定找最佳,从小到大顺序查

  先是比例后积分,最后再把微分加

  曲线振荡很频繁,比例度盘要放大

  曲线漂浮绕大湾,比例度盘往小扳

  曲线偏离回复慢,积分时间往下降

  曲线波动周期长,积分时间再加长

  曲线振荡频率快,先把微分降下来

  动差大来波动慢。微分时间应加长

  理想曲线两个波,前高后低4比1

  一看二调多分析,调节质量不会低

2、 整定方法

        经验法是简单调节系统应用最广泛的整定方法,是一种试凑法。它通过参数预先设置和反复试凑来实现。参数的预置值要根据对象的特性和仪表的量程决定。仪表量程大的PID参数要适当加强作用。四类被调参数的一般范围如下:

这里介绍一种经验法。这种方法实质上是一种试凑法,它是在生产实践中总结出来的行之有效的方法,并在现场中得到了广泛的应用。

    这种方法的基本程序是先根据运行经验,确定一组调节器参数,并将系统投入闭环运行,然后人为地加入阶跃扰动(如改变调节器的给定值),观察被调量或调节器输出的阶跃响应曲线。若认为控制质量不满意,则根据各整定参数对控制过程的影响改变调节器参数。这样反复试验,直到满意为止。

经验法简单可靠,但需要有一定现场运行经验,整定时易带有主观片面性。当采用PID调节器时,有多个整定参数,反复试凑的次数增多,不易得到最佳整定参数。

下面以PID调节器为例,具体说明经验法的整定步骤:

    让调节器参数积分系数S0=0,实际微分系数k=0,控制系统投入闭环运行,由小到大改变比例系数S1,让扰动信号作阶跃变化,观察控制过程,直到获得满意的控制过程为止。

    取比例系数S1为当前的值乘以0.83,由小到大增加积分系数S0,同样让扰动信号作阶跃变化,直至求得满意的控制过程。

    积分系数S0保持不变,改变比例系数S1,观察控制过程有无改善,如有改善则继续调整,直到满意为止。否则,将原比例系数S1增大一些,再调整积分系数S0,力求改善控制过程。如此反复试凑,直到找到满意的比例系数S1和积分系数S0为止。

    引入适当的实际微分系数k和实际微分时间TD,此时可适当增大比例系数S1和积分系数S0。和前述步骤相同,微分时间的整定也需反复调整,直到控制过程满意为止。

    注意:仿真系统所采用的PID调节器与传统的工业 PID调节器有所不同,各个参数之间相互隔离,互不影响,因而用其观察调节规律十分方便。

    PID参数是根据控制对象的惯量来确定的。大惯量如:大烘房的温度控制,一般P可在10以上,I=3-10,D=1左右。小惯量如:一个小电机带

    一水泵进行压力闭环控制,一般只用PI控制。P=1-10,I=0.1-1,D=0,这些要在现场调试时进行修正的。

以上资料还有我传上来的资料都是我看过借鉴过的 有些资料不知道原作者是谁,但也非常感谢这些人。

/upload/community/2019/01/26/1548469399-71715.pdf

PID整定   PID子函数  Matlab PID温度控制

0
回复
ruohan
LV.9
15
2019-01-29 08:06
@喔喔呜呜
PID整定  比例(P)控制 比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-stateerror)。积分(I)控制  在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(SystemwithSteady-stateError)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。微分(D)控制  在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会   出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行PID控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作﹔(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期﹔(3)在一定的控制度下通过公式计算得到PID控制器的参数。PID参数的设定:是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P\I\D的大小。(有些东西表述不清楚只能靠自己理解)   PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:  温度T:P=20~60%,T=180~600s,D=3-180s  压力P:P=30~70%,T=24~180s,  液位L:P=20~80%,T=60~300s,  流量L:P=40~100%,T=6~60s。书上的常用口诀:  参数整定找最佳,从小到大顺序查  先是比例后积分,最后再把微分加  曲线振荡很频繁,比例度盘要放大  曲线漂浮绕大湾,比例度盘往小扳  曲线偏离回复慢,积分时间往下降  曲线波动周期长,积分时间再加长  曲线振荡频率快,先把微分降下来  动差大来波动慢。微分时间应加长  理想曲线两个波,前高后低4比1  一看二调多分析,调节质量不会低2、 整定方法        经验法是简单调节系统应用最广泛的整定方法,是一种试凑法。它通过参数预先设置和反复试凑来实现。参数的预置值要根据对象的特性和仪表的量程决定。仪表量程大的PID参数要适当加强作用。四类被调参数的一般范围如下:[图片]这里介绍一种经验法。这种方法实质上是一种试凑法,它是在生产实践中总结出来的行之有效的方法,并在现场中得到了广泛的应用。    这种方法的基本程序是先根据运行经验,确定一组调节器参数,并将系统投入闭环运行,然后人为地加入阶跃扰动(如改变调节器的给定值),观察被调量或调节器输出的阶跃响应曲线。若认为控制质量不满意,则根据各整定参数对控制过程的影响改变调节器参数。这样反复试验,直到满意为止。经验法简单可靠,但需要有一定现场运行经验,整定时易带有主观片面性。当采用PID调节器时,有多个整定参数,反复试凑的次数增多,不易得到最佳整定参数。下面以PID调节器为例,具体说明经验法的整定步骤:    让调节器参数积分系数S0=0,实际微分系数k=0,控制系统投入闭环运行,由小到大改变比例系数S1,让扰动信号作阶跃变化,观察控制过程,直到获得满意的控制过程为止。    取比例系数S1为当前的值乘以0.83,由小到大增加积分系数S0,同样让扰动信号作阶跃变化,直至求得满意的控制过程。   积分系数S0保持不变,改变比例系数S1,观察控制过程有无改善,如有改善则继续调整,直到满意为止。否则,将原比例系数S1增大一些,再调整积分系数S0,力求改善控制过程。如此反复试凑,直到找到满意的比例系数S1和积分系数S0为止。    引入适当的实际微分系数k和实际微分时间TD,此时可适当增大比例系数S1和积分系数S0。和前述步骤相同,微分时间的整定也需反复调整,直到控制过程满意为止。    注意:仿真系统所采用的PID调节器与传统的工业PID调节器有所不同,各个参数之间相互隔离,互不影响,因而用其观察调节规律十分方便。    PID参数是根据控制对象的惯量来确定的。大惯量如:大烘房的温度控制,一般P可在10以上,I=3-10,D=1左右。小惯量如:一个小电机带    一水泵进行压力闭环控制,一般只用PI控制。P=1-10,I=0.1-1,D=0,这些要在现场调试时进行修正的。以上资料还有我传上来的资料都是我看过借鉴过的有些资料不知道原作者是谁,但也非常感谢这些人。/upload/community/2019/01/26/1548469399-71715.pdfPID整定  PID子函数 MatlabPID温度控制
继续分享啊,
0
回复
刘奇1234
LV.2
16
2019-02-02 09:25
期待下一个帖子
0
回复
刘奇1234
LV.2
17
2019-02-02 09:38
比例:倍数,上升的斜率 积分:倾向于系统从过去到现在与理想情况下是否有误差 微分:偏差的变化率,倾向于使图像变平稳。看我总结的对不对……
0
回复
2019-02-08 20:26
@刘奇1234
比例:倍数,上升的斜率积分:倾向于系统从过去到现在与理想情况下是否有误差微分:偏差的变化率,倾向于使图像变平稳。看我总结的对不对……

比例环节:主要是反应控制系统的偏差信号,如果产生偏差,控制器立即作用而且偏差越大,作用效果越强。

积分环节:主要是消除系统静差,提高系统无差精度,积分时间常数越大积分作用越弱。

微分环节:主要是反应偏差信号变化趋势从而加速系统动作缩短调节时间。

0
回复