先来看一段描述:
PID控制器(Proportion Integration Differentiation)
俗称比例-积分-微分控制器,分别由比例单元(P)、积分单元(I)和微分单元(D)组成。一般来说,通过调整这三个单元的增益Kp,Ki和Kd来确定PID控制特性。其实PID控制器是一类控制器,而其实控制器有很多种,比如:P控制器,PI控制器,PD控制器等。
看完这段PID的描述,也许很多人就已经读不下去了,PID控制器到底和我们的现实生活有什么联系啊?怎么能让一个控制小白也很容易地理解这件事呢?
那么,让我们来举个通俗易懂的例子,帮助大家更加通俗易懂地理解PID到底是干什么的!
先讲个故事,古希腊哲学家芝诺曾提出过一条著名的悖论:阿喀琉斯是古希腊神话中十分善跑的英雄。在他和乌龟的赛跑竞赛中,他的速度为乌龟十倍,乌龟在前面100米跑,他在后面追,但他不可能追上乌龟。
为什么呢?因为在竞赛中,追者首先必须到达被追者的出发点,当阿喀琉斯追到100米时,乌龟已经又向前爬了10米,于是,一个新的起点产生了;阿喀琉斯必须继续追,而当他追到乌龟爬的这10米时,乌龟又已经向前爬了1米,阿喀琉斯只能再追向那个1米。
就这样,乌龟会制造出无穷个起点,它总能在起点与自己之间制造出一个距离,不管这个距离有多小,但只要乌龟不停地奋力向前爬,阿喀琉斯就永远也追不上乌龟。
看到这里大家是不是感觉到这似乎是一个死循环...
这就是鼎鼎有名的芝诺悖论!而该悖论的原理其实是一个时间问题,这里不是我们解释的重点。
▲芝诺悖论
那善跑将军阿喀琉斯就永远不会赢吗?借着这个故事,我们可以给阿喀琉斯设计一个PID控制系统,指导阿喀琉斯去追上乌龟,并且还可以一直跟随乌龟,跑过了还可以再跑回来,直到和乌龟保持同一个位置。
在这个过程中,我们相信可以凭借这个“假想”帮助大家很好地理解PID控制的原理及各参数的物理意义。
首先,还是要普及一下基础概念:
· PID控制器对反馈系统中的误差进行操作并执行以下操作
1. PID控制器计算一个与误差成比例的项- P项;
2. PID控制器计算一个与误差积分成比例的项——I项;
3. PID控制器计算一个与误差导数成比例的项——D项;
4. 这三项——P项、I项和D项——加在一起就产生了应用于被控制系统的控制信号。
▲PID控制示意图
具体的传递函数就是三项加起来:PID(s) = Kp + Ki/s+ sKd
比例项就是误差与比例参数的乘积,积分项就是过去一段时间内积累的误差和。微分项是未来一段时间误差的变化。
看到这里很多工友就已经脑袋晕了,别慌,继续看下去你就明白了。
PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。然而,PID控制器的厉害就在于它就是一个公式打天下,即只要用按公式计算,就能知道执行机构的具体动作,并且把受控系统控制在想要的位置。看到这里,大家应该产生了一个新疑问,那么控制里讲的受控系统和执行器是指什么呢?
受控系统就是我们要控制的对象,当左侧手按弹簧的时候,当手松开,弹簧还能维持到一个固定的高度不变,这个过程是自稳定过程(不带积分特性的过程对象),属于自稳定受控系统。
而右侧如果用手去按一个橡皮泥,把手松开,橡皮泥软在桌面上恢复不了原来的高度,这个过程是一个非自稳定过程(带积分特性的过程对象),属于非自稳定受控系统。
▲自稳定过程和非自稳定过程
下面再举个受控系统的一个简单示例,说明通过加热系统控制室温的过程,是个自稳定过程。传感器测量室温并将温度值传送给控制器。控制器将当前室温与设定值进行比较,并计算加热控制的输出值(调节变量)。
▲室温控制流程图
为什么室温控制是一个自稳定过程呢?当不进行加热或制冷操作的时候,室内温度和室外温度经过一定时间热交换后是基本不变,室温还会缓慢的稳定。是不是很像上图中的弹簧?
对比上面的模型之后,我们再将目光转回到阿喀琉斯和乌龟赛跑的问题上,用PID来解释一下,如下图:
▲赛跑问题PID控制流程图
▲比赛位置示意图
此时我们的PID控制器可以派上用场了!我们先来设定一场比赛,为了增加难度,将阿喀琉斯放置在一个1000米长的速度恒定的跑步机上,假设乌龟在平地上沿跑步机爬直线,并且在阿喀琉斯前面100米。
控制模型:阿喀琉斯以PID控制的方式用在跑步机上追赶乌龟;
设定值:乌龟的位置
实际值:阿喀琉斯的位置
输出值:阿喀琉斯的跑步速度
测量传感器:裁判的眼睛
执行对象:阿喀琉斯
正执行:向前跑
反执行:向后跑
首先要解决的问题是比赛范围,在这场比赛之前要限定一下坐标系和范围,要让乌龟和阿喀琉斯在一个特定范围里来比赛,跑道只有1000米。目前已知乌龟在阿喀琉斯起跑位置前的100米,那么这个时刻,用乌龟的位置减去阿喀琉斯的位置就是绝对偏差,即100米,PID系统会依据已知条件告诉我们什么呢?先只用比例调节P参数,我们随便给一个默认初始值,比例系数是预估的比如P=2.0(没有单位)。但是问题来了,这时候难道我们要告诉阿喀琉斯去跑100米*2.0=200米吗?
当然不是,PID在运行之前是要限制乌龟位置的,需要指定乌龟只能在0到1000米的范围内进行直线活动,那么乌龟在初始时刻的100米就可以归一化为10%了,这个时候PID控制器就可以知道告诉阿喀琉斯开始要用20%的速度去跑。
▲参数定义归一化
但是总不能让阿喀琉斯一直用20%的速度跑吧!如果几年之后再通知阿喀琉斯,即使只用20%的速度跑,阿喀琉斯可能已经绕地球一周回来了。虽然我们第一个问题做了限制,阿喀琉斯跑到终点就停了。所以,第二个要解决的问题是多长时间通知一次阿喀琉斯?
▲执行周期设定过大
在纯比例模型下P=2.0不考虑积分和微分。如果0.01毫秒通知一次阿喀琉斯,那会有两个问题:一则测量系统会很累,需要瞬间知道阿喀琉斯的精确位置,再需要知道乌龟的精确位置,姑且不说阿喀琉斯能不能在这么短的时间内的接收到命令,即便能接收到命令,在还没来得及执行的时候就收到第二条命令了。二则因为误差基本没消除,所以命令还是19.99999%的速度(解释一下这里,因为在0.01毫秒的时间后,阿喀琉斯和乌龟之间的距离,也就是误差缩小了,所以计算结果也会相应的有微小变化),然后下一个0.01毫秒收到19.99999%速度,即使发100次也许还是19.999,也许阿喀琉斯需要3秒(3秒:超级跑车百公里加速时间)才能加速到20%。所以通知的太频繁,超过了执行机构的执行能力,做的都是无用功。
▲执行周期设定过小
所以大家看出来了,要想完成好比赛,我们需要对阿喀琉斯的加速能力有很充分的了解。他虽是古希腊英雄,但一定不是神。这就和我们玩游戏需要看一下英雄的能力面板一样,而提升能力需要不同模式的打怪升级,每次升级之后,还需要再去Check下英雄的能力值是如何提升的。
我们用两张图表,来看一下,当对阿喀琉斯下达命令之后,他会有什么样的执行能力,下边两张图示中,第一张图表中的横轴代表时间,纵轴代表对阿喀琉斯的指令。第二张图表是同一个时间范围内,阿喀琉斯的实际动作情况。
▲执行机构能力考核
先看纵轴Y表示PID系统告诉阿喀琉斯用100%的速度去跑,X表示阿喀琉斯的实际跑步速度,看看阿喀琉斯到底能跑多快,Tu就是阿喀琉斯听到命令的起跑时间,Tg就代表阿喀琉斯从静止跑到最快的理论加速度时间,于是我们用这个比值大体评价一下阿喀琉斯到底是超能力的神还是一个普通英雄?
▲根据执行机构能力分类
如上表,根据Tu和Tg的比值,我们把受控系统分为I型,II型和III型。
假设测试的阿喀琉斯是属于I型的受控系统,可以很好的被控制,根据测试结果用比较合适的采样和执行周期,比如每5秒钟检测一次位置情况并分别用P模型PI模型和PID模型来说明一下具体追赶过程。
第一种模型:在P模型下,只有比例环节P=2,周期为2秒通知。第一个2秒阿喀琉斯跑了55米,乌龟爬了0.01米,误差还有4.5%,PID算法得出下面需要用9%的力量去跑,又过了2秒,阿喀琉斯还落后乌龟1米,那么阿喀琉斯需要用2%的速度向前跑,又过了2秒,阿喀琉斯还落后了乌龟1米,控制系统告知阿喀琉斯需要用2%的速度向前跑,结果1个小时过去了,阿喀琉斯始终在乌龟的后面1米的位置,2%的速度基本和跑步机向后的速度相当了,始终无法与乌龟位置一致。系统已经稳定了,还始终存在这样一个偏差,就是稳态误差,看来想要消除这个误差,我们需要用下一个模型-PI模型。
▲比例P模型参考图
第二种类型,在PI模型下,在加入了积分环节后,假设积分时间设为30秒,那么根据公式,要计算阿喀琉斯在过去的30秒总共累积了多少误差(即把每次的误差都累加起来)。如上文2秒钟一通知,30秒会通知15次,这15次测量的距离误差都加起来。,开始的时候距离比较远,积分项会给阿喀琉斯带来更快的速度指令,但由于是考虑了之前的误差正向的,所以即使刚刚跑过了,15次误差的和还是正向的,所以会一直指导阿喀琉斯向前冲到下图1的位置,这个时候过去的累积误差已经是负的了,才要求阿喀琉斯向后跑,整个向后的过程又重复之前的累积误差,直到冲到下图2的位置才向前,所以最后的效果就是1-2-3-4-5,阿喀琉斯慢慢的向乌龟靠近,随着时间的推移,误差越来越小,最后达到消除了稳态误差。
▲比例积分PI模型参考图
然而在上一个PI模型下,我们是否察觉阿喀琉斯来回跑的次数太多了?明明已经超过了乌龟很远了,还不回头(阿喀琉斯:PID控制器让我这么做的,你以为我不想回头吗!)。为了解决这个问题,需要引入微分分量,就是解决对未来趋势预测的问题,高等数学中讲到过微分就是求导,已知位置对时间的导数就是速度,速度对时间的导数就是加速度。用前一次误差减去当前次误差,如果有变化,因为测量的时间段相同,所以就意味着误差改变率发生了变化,就能预测未来下一次可能出现的误差会是什么样,就像我们知道了加速度的变化就可以推测速度的趋势是一个道理。按上面PI的算法,前一次误差假设是5%,当前误差是3%,因为是每两秒钟测量一次,所以计算的微分项是3%减去5%,再除以时间,得到-1%的的积分项,如果积分时间是30秒,代表这样的积分效果要持续30秒时间。这样当阿喀琉斯越靠近乌龟,减少效果越明显,当阿喀琉斯超过了乌龟的位置,比如超过了1%,那么微分项是-1%减去之前的3%,再除以采样时间2秒,得到-2%的减速项,这样的减速效果还要持续30秒的时间,可以看到增加了微分项能有效减少阿喀琉斯超出乌龟的位置,如下图13,只要找到合适的微分时间就能使阿喀琉斯提前减速,在刚刚超越乌龟的时候就往回返,快速稳定的和乌龟保持同一位置。
▲比例积分PID模型参考图
最后我们动态的显示下,追赶过程中各个参数的变化对追赶路径的影响,下图红线表示乌龟的位置,蓝色线表示阿喀琉斯的追赶位置。
▲比例积分PID模型参数变化效果模拟图
阿喀琉斯没有发生类似于龟兔赛跑的“悲剧”,善跑的称号得以保留。由此,在上面的例子里我们知道了PID的控制就是要对执行机构有非常细致的了解,并且找到与受控系统相匹配的参数。那么在实际生活中用到的各个系统,都非常复杂,如何找到合适的参数,达到预想的控制效果呢?下面就介绍一下典型的受控系统类型的经验参数选择和电脑自适应调参数的过程。
▲特定受控系统的一般参数
了解了各个物理量的性能特性,就像知晓了阿喀琉斯的跑步能力,再根据需要选择合适的控制器类型和参数。
下表概述了控制器结构与物理量的各种组合的适宜性。
▲特定物理量的控制器结构推荐
知道适用规则了,还有很多在实际项目中的参数设置的经验(Gain表示比例参数)
如果控制器具有PID结构,则积分作用时间的设置和微分作用时间的设置通常会相互结合。比率TI/TD介于4和5之间,这对于大多数受控系统都是最优的。
对于PI和PID控制器,如果大部分情况下选择的积分作用时间TI过短,则会发生控制振荡。如果积分作用时间过长,则会降低干扰的稳定速度。因此,不要希望进行第一次参数设置后,控制回路工作状态就能达到“最优”状态。经验表明,当系统处于Tu / Tg > 0.3 “难以控制”状态时,进行调整是很必要的。
那么除了经验参数,有没有办法让控制器自动寻找PID参数呢?当然也有,西门子S7-1200和S7-1500系列PLC都支持PID自调节功能。
只要连接好受控系统输出的执行机构,做好设定值和反馈值的连接,就可以开始做自动寻找参数的过程了。寻找参数可以分为预调节和精确调节。
预调节功能可确定对输出值跳变的过程响应,并搜索拐点。根据受控系统的最大上升速率与时间计算PID参数。可在执行预调节后再执行精确调节时获得最佳PID参数。
▲PID预调节的七个阶段图
▲PID预调节的具体过程图
▲PID精确调节的阶段图
▲PID预调节的具体过程图
如果很多情况下不能具备连接现场实际设备来做PID参数自整定,也可以用一个功能块通过PLC程序仿真一下执行机构,将仿真的执行机构执行的效果连同PID控制块进行离线的参数自整定,当然这样做出来的参数只是为了验证逻辑和学习控制器,到真实的项目应用还需要重新做自整定的。
具体仿真过程需借助西门子博图软件的“PID_Compact”块和“LSim”仿真库,图为 S7-1500 实现一个闭环控制系统。PC 站用于将控制回路可视化,PG 用于组态。
▲离线仿真PID过程对象模拟
▲离线仿真PID过程对象模拟
大家可能会好奇自控原理在生活里的应用是什么?水壶烧水自动断电,冰箱压缩机的启停等、马桶的自动冲水、变频空调,都源自自控原理最简单的PID控制,其实现实中,我们虽然都在使用反馈的思想,就比如人们常说的和面,怎么能知道面和水的比例是多少呢,就靠手来感觉,面多了加水,水多了加面。这种系统就是非自调节的受控系统,如果掌握不好度水会一直加下去。又不能把多加的水抽出来,所以只能下次积累点经验,这次的不调节范围放大,水多就水多点吧也不加面了。用结果指导下次的动作但很难找到完全的合适的受控系统。
PID原理是清楚了,至于什么情况用什么PID模型,还是查表,我们家用的水壶烧水控制的物理量是温度,看上面表格推荐PD是非常适用,为什么呢?因为目前咱们的温度检测点比较慢,水都已经到设定温度了,检测的温度还没到,或者水壶都已经断电了,温度还在上升,这都是滞后造成的。
总体说来,PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。但是,PID也不是全能的哦。很重要的一点是因为, PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统,但是对复杂非线性系统和复杂信号追踪,还是有局限性的。