一、重温一下系统结构
以炉温控制系统为例,仔细观察一下其原理图及框图。思考一下:哪些环节可以随时更改或者说容易调整?
应该容易理解:对于一个已经搭建成型的系统,其中某些模块或者环节基本上就难以再修改了,除非重建。例如上面这个炉温控制系统,其中的燃油炉、混合器、已铺设好的各个管路、阀门及驱动阀门的电机等,更换或者重建的成本是比较高的。
再换一个角度,对于一个控制工程师,不可能所有东西都是自己设计制作的,例如上面炉温控制系统中,传感器、电机、阀门、管道、混合器、燃油炉等基本都是在市场上选购的。这些模块的特性是相对固定的,较难改动。
但是放大器电路(可能包含软、硬件)是控制工程师设计的,那么是可以根据系统整体性能要求去调整改变的。我们一般把方便调节且能够由此控制系统性能的部分称为系统的控制器。
系统校正(即调整系统性能)如果需要增加装置,一般是在控制器里实现的。
一般增加的校正装置或环节,主要通过串联或者反馈的方式接入系统。还有前馈或复合等方式。
二、系统校正方法简介
串联“滞后、超前”校正装置来改善系统性能
利用校正装置改变原系统频率特性曲线的形状,使其具有合适的低中高频特性,从而获得满意的稳态和暂态响应特性。
一般是根据性能指标要求,有针对性的选择“滞后”、“超前”或“滞后——超前”装置,再通过分析和计算求出校正装置的参数。最后验算或验证设计结果,如不能满足全部性能指标要求,需重新调整参数甚至结构,直至全部满足。
该方法校正装置结构简单,容易实现。 如果希望校正后系统的穿越频率明显高于原系统的穿越频率,一般采用“超前”校正,在新的穿越频率处提供一定的相角超前量;如果希望校正后系统的穿越频率明显低于原系统的穿越频率,一般采用“滞后”校正;如果希望校正后系统的穿越频率与原系统接近,则采用“滞后——超前”,主要提供合适的相角超前量。 本方法需要充分了解原系统的频率特性,对于大型或者复杂的系统,这是一件比较困难的事情。
PID串联校正
PID控制理念最早提出是在1932年,出生于瑞典后移民美国的物理学家哈利奈奎斯特(H Nyquist),在他的一篇论文当中提出了采用图形的方法来判断系统的稳定性。在他的基础上,荷兰裔科学家亨伯德(H W Bode)(“伯德图/波特图”创始人)等人建立了一整套在频域范围设计反馈放大器的方法,后被用于自动控制系统的分析和设计,这也是PID算法最早从书面走向实践。与此同时,反馈控制原理开始应用于工业过程中。1936年英国的考伦德(A Callender)和斯蒂文森(A Stevenson)等人给出了 PID控制器的方法,自此PID算法正式形成了,并且后来在自动控制技术中占有非常重要的地位。
PID校正装置是用比例(Proportional)、积分(Integral)和微分(Derivative)控制规律组成的串联校正装置,使用方便,适应性强,易于工程实现。而且根据需要,可以变形为P、PI或PID等类型调节器。目前在理论上已经证明,对于过程控制的典型对象——“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。
在时域内,PID连续公式如下:
离散公式如下:
采用PID调节器,往往并不需要知道于控制对象的精确数学模型,这是它的优点,但也正因如此,其参数通常也都是根据经验在线整定,以便得到满意的控制效果 。随着计算机技术的发展,PID控制算法已能用电脑或者嵌入式设备简单实现,由于软件系统的灵活性,PID算法可得到修正而更加完善。比如平衡小车,倒立摆,四轴飞行器,温度调节都用到了PID,可以说一切控制系统都可以应用PID。
反馈校正
有时由于系统本身的特性,在局部反馈支路中添加校正装置可能更有效,特别是针对有重大妨碍作用的某些环节。采用反馈控制,不仅能得到与串联校正相同的效果,还能起到改善系统整体控制性能的特殊效果。
采用反馈校正后,系统对其所包围的原系统各环节的特性参数变化不敏感,因此对这部分元件的要求可以降低,但对反馈环节中的元件要求较高。
三、如何理解P、I、D
首先理解控制——需要将某一个物理量“保持稳定”的场合,比如维持平衡、稳定温度、转速等,那么就需要控制这个物理量。
开关式控制
例一 :控制一个“热得快”,让一锅水的温度保持在50℃。控制策略——小于50度就打开加热,大于50度就断电。这就是开关式控制,方法很简单,在要求不高的情况下,确实可以这么干。
例二 :如果控制对象是一辆汽车,希望车速保持在50km/h不动。如果还是采用开关式控制策略,假如汽车的定速巡航电脑在某一时间测到车速是45km/h。它立刻命令发动机:加速!然后发动机那边就100%全油门,嗡的一下,汽车急加速到了60km/h。这时电脑又发出命令:踩死刹车!很容易想象到,这样的策略是肯定不行的。
如果考虑到实际器件均存在一定的延迟或惯性,那简单粗暴的开关式控制甚至可能都不能让系统稳定下来。
PID控制
PID调节器各增益参数增加对系统时域指标的影响如下:
但是表中的关系并非绝对的,只是表示一定范围内的相对关系,而且各参数之间还会相互影响,因此本表仅供定性辅助分析。下面对各参数的实际物理意义做一些探讨。
①比例系数KP
P就是比例的意思。它的作用最明显,原理也最简单。当实际值比较接近目标时,P的控制作用就比较小。越接近目标,P的作用越温柔。
例一 :控制水温,将它现在的『当前温度值』与我们期望的『目标温度值』比较。当两者差距不大时,就让加热器“轻轻地”加热一下;要是因为某些原因,温度降低了很多,就让加热器“稍稍用力”加热一下;要是当前温度比目标温度低得多,就让加热器“开足马力”加热,尽快让水温到达目标附近,这便是P的作用。
也就是让调节装置的“调节力度”与偏差(目标值减去当前值)成比例关系,就可以实现最基本的“比例”控制了——KP越大,调节作用越激进,KP调小会让调节作用更保守。
例二 :对于一个平衡车,仅有P的作用,你会发现,平衡车在平衡角度附近可能会出现来回“狂抖”的现象,比较难稳住。
例三: 控制目的是要保证某个水缸里的水位永远的维持在1米的高度。假设初始时刻,水缸里的水位是0.2米,那么当前时刻的水位和目标水位之间是存在一个偏差error,且error为0.8。此时,假设旁边站着一个人,通过人工往缸里加水的方式来控制水位。如果单纯用比例控制算法,就是指加入的水量u和偏差error是成正比的,即u=KP*error。
假设KP取0.5,那么t=1时(表示第1次加水,也就是第一次对系统施加控制),那么u=0.5*0.8=0.4,所以这一次加入的水量会使水位在0.2的基础上上升0.4,达到0.6。接着,t=2时刻(第2次施加控制),当前水位是0.6,所以error是0.4。u=0.5*0.4=0.2,会使水位再次上升0.2,达到0.8......如此这么循环下去,就是比例控制算法的运行方法。可以想到,最终水位会达到我们需要的1米。
但是,单单比例控制存在着一些不足,其中一点就是可能存在稳态误差!
像上述水缸水位控制,根据KP取值不同,系统最后都会达到1米,只不过KP大了到达的快,KP小了到达的慢一些,看起来不会有稳态误差。
但是,考虑另外一种情况,假设这个水缸在加水的过程中,存在漏水的情况!例如每次加水的过程,都会漏掉0.1米高度的水。仍设KP取0.5,那么会存在着某种情况,假设经过几次加水,水缸中的水位到0.8时,水位将不会再变换!!!因为,水位为0.8,则误差error=0.2. 所以每次往水缸中加水的量为u=0.5*0.2=0.1,同时,每次加水,缸里又会流出去0.1米的水!!!加入的水和漏水相抵消,水位将不再变化!!
也就是说,我的目标是1米,但是最后系统达到0.8米的水位就不再变化了,且系统已经达到稳定。由此产生的误差就是稳态误差了。
在实际情况中,这种类似水缸漏水的情况往往更加常见,比如控制汽车运动,摩擦阻力就相当于是“漏水”,控制机械臂、无人机的飞行,各类阻力和消耗都可以理解为本例中的“漏水”。
所以,单独的比例控制,在很多时候并不能满足要求。
改变比例作用的效果
②微分系数KD
微分D的作用更好理解一些,所以先说D,最后再说I。
不难发现,仅有P的作用,水温控制得上上下下,而平衡车甚至都不能稳定站起来,整个系统不是特别稳定,总是在“抖动”。
例一: 我们思考一个弹簧:在平衡位置上拉它一下,然后松手,这时它会震荡起来。如果阻力很小,它可能会震荡很长时间,才会重新停在平衡位置。但如果把弹簧系统浸没在水里,同样拉它一下,此时,重新停在平衡位置的时间就短得多。因此我们需要一个控制作用——类似于“阻尼”的作用,让被控制的物理量的“变化速度”尽快趋于0。
而D的作用就是让物理量的速度趋于0,无论什么时候,只要这个量具有了速度,D就向相反的方向作用,刹住这个变化。微分系数KD越大,向速度相反方向刹车的力道就越强。
例二: 考虑刹车情况。平稳的驾驶车辆,当发现前面有红灯时,为了使得行车平稳,基本上提前几十米就放松油门并踩刹车了。当车辆离停车线非常近的时候,则使劲踩刹车,使车辆停下来。整个过程可以看做一个加入微分的控制策略。
微分,在离散情况下,就是error的差值,也就是t时刻和t-1时刻error的差,即u=KD*(error(t)-error(t-1)),其中的KD是一个系数项。
可以看到,在刹车过程中,因为error是越来越小的,所以这个微分控制项一定是负数,在控制中加入一个负数项,他存在的作用就是为了防止汽车由于刹车不及时而闯过了线。从常识上可以理解,越是靠近停车线,越是应该注意踩刹车,不能让车过线,所以这个微分项的作用,就可以理解为刹车,当车离停车线很近并且车速还很快时,这个微分项的绝对值(实际上是一个负数)就会很大,从而表示应该用力踩刹车才能让车停下来。
**例三:**对于水缸加水的例子,就是当发现水缸里的水快要接近1的时候,加入微分项,可以防止给水缸里的水加到超过1米的高度,说白了就是减少控制过程中的震荡。
改变微分作用的效果
③积分系数KI
看起来P、D就可以让物理量保持稳定,那为什么还要I呢?
因为我们忽视了一种重要的情况!
例一: 还是以热水为例,假如有个人把加热装置带到了一个非常冷的地方,水需要烧到50℃。
在P的作用下,水温慢慢升高。直到升高到45℃时,他发现了一个不好的事情:天气太冷,导致此时出现了,水散热的速度和P控制的加热速度相等了。
这可怎么办?
P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。
于是,水温永远地停留在45℃,永远到不了50℃。
根据常识我们知道,应该进一步增加加热的功率。可是增加多少该如何计算呢?
这时候就可以设置一个积分量,只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上。
如此一来,即使45℃和50℃相差不太大,但是随着时间的推移,只要没达到目标温度,这个积分量就不断增加。系统就会慢慢意识到:还没有到达目标温度,该增加功率啦!
到了目标温度后,假设温度没有波动,积分值就不会再变动。这时,加热功率仍然等于散热功率。但是,温度是稳稳的50℃。
例二: 控制水缸水位,如果仅仅用比例,可以发现存在稳态误差,最后的水位就卡在0.8了。于是,在控制中,我们再引入一个分量,该分量和误差的积分是正比关系。所以,比例+积分控制算法为:u=KP*error+ KI∗∫ error 。
还是假设第一次的误差error是0.8,第二次的误差是0.4,至此,误差的积分(离散情况下积分就是累加),∫error=0.8+0.4=1.2, 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数 KI乘以这个积分项。由于这个积分项会将前面若干次的误差进行累计,所以可以很好的消除稳态误差(假设在仅有比例项的情况下,系统卡在稳态误差了,即上例中的0.8,由于加入了积分项的存在,会让输入增大,从而使得水缸的水位可以大于0.8,渐渐到达目标的1.0)这就是积分项的作用。
积分系数KI的值越大,即积分时的乘数就越大,则积分效果越明显。
所以I的作用就是,减小稳态情况下的误差,让受控物理量尽可能接近目标值。
I在使用时还有个问题:如果在刚开始加热时,积分量就积得太大,则难以控制系统稳定。因此需要设定积分限制,防止系统不稳。
改变积分作用的效果
后记:也有网友这么理解PID——p是控制现在,i是纠正曾经,d是管控未来!
也有网友认为, P对应“快”,对误差进行预判、做出快速反应 ;I对应“准”,消除稳态误差; D对应“稳”,即稳定性,抑制快速变化 。
可以发现不同物理系统,三个参数的物理意义有相同之处,也有所不同。尤其是位置式PID控制和增量式PID控制算法对应的物理意义有较大区别。