自动控制系统
自动控制系统可分为开环控制系统和闭环控制系统。
1、开环控制系统
开环控制系统(open-loop control system)指被控对象的输出(被控制量)对控制器(controller)的输出没有影响。在这种控制系统中,不依赖将被控量反送回来以形成任何闭环回路。
2、闭环控制系统
闭环控制系统(closed-loop control system)的特点是系统被控对象的输出(被控制量)会反送回来影响控制器的输出,形成一个或多个闭环。闭环控制系统有正反馈和负反馈,若反馈信号与系统给定值信号相反,则称为负反馈( Negative Feedback),若极性相同,则称为正反馈,一般闭环控制系统均采用负反馈,又称负反馈控制系统。
什么是pid控制器
将偏差的比例(Proportion)、积分 (Integral) 和微分(Differential) 通过线性组合构成控制量用这一控制量对被控对象进行控制,这样的控制器称 PID 控制器。简单的说,根据给定值和实际输出值构成控制偏差,将偏差按比例、积分和微分通过线性组合构成控制量,对被控对象进行控制。常规PID控制器作为一种线性控制器,也就是一种闭环反馈控制器。
这么说把,pid就是一种根据反馈,也就是输出量,然后去调整输入量大小的一种控制器,像我们人的话,是有五感去充当反馈的,例如你想喝一杯温水,这时桌子上有一杯水,那你怎么去判断,这杯水是不是你想要的温度呢,最简单的就是用手去摸,是吧,然后当你感觉到了温度大小大概了,你再去说,如果是冰水就加热,如果是热水就放凉,如果是温水就喝了,这个过程就是反馈,可是机器是没有五感的,这就需要我们去赋予它了,也就是给与它反馈,让机器能根据反馈传来的数据,不断地去调整输入量。
控制原理
常规PID控制系统原理如图1所示,这是一个典型的单位负反馈控制系统。系统由PID控制器和被控对象组成:
计算公式
系统图像分析
在介绍pid算法之前要先介绍阶跃响应,阶跃响应是当输入信号,从零跳变为一之后,系统的输出曲线响应,如下图所示:
红线就是系统的输出响应,可以看到它经过一段时间的上升之后。逐渐稳定到1附近。
其实上图就是一个系统,有输入,有输出,那么我们如何根据这个图来判断我们设计的这个系统的性能好坏呢。
可以通过一些系统性能指标来评价系统阶响应的好坏:
一. 超调:overshoot
它是指响应超出稳态值的最大偏移量与稳态值之比
二. 上升时间:rise time
是指的响应曲线从10%上升到稳态值90%所需的时间,在上图中就是指rise time。
三. 稳定时间:seeting time
就是指响应曲线到达稳定值附近,比如正负-5%左右,并不在超过这一段误差范围之外的最小时间,也就是图中的setting time,到达setting time之后,就可以认为系统基本达到稳定状态了。
四. 稳态误差:steady-state error
它也叫静态误差或者静差,它是指的稳态值与设定值之间的误差。
如果我们要控制无人小车,要让它比小车准确的前进三米,那么它的稳态误差就是它实际行驶的距离与设定值三米之间的差距,上升时间就是指距离值的10%,也就是0.3米上升到2.7米的行驶时间,稳定时间就是指它稳定在三米附近的时间。 我们需要设计一个反馈控制器,目的是使原本性能参数不太好的性能曲线变成理想状态的性能曲线,也就是说它的上升时间和稳定时间都要尽可能小,并且要消除他的稳态值与它的设定值之间的误差。
pid也叫比例积分微分控制器,比例(Proportion)、积分 (Integral) 、微分(Differential),简称就是pid了嘛,回到上面那个图,我们也可以看到,一个常规的pid控制器由三个控制器组成,p控制器是最基础,在其基础上可以加上i控制器或者d控制器来形成pi或者pd控制器,也可以三种控制器同时使用,也就是最后的pid控制器,下面分别对这三种控制器进行详细介绍。
P、I、D控制器介绍
P控制器介绍
P(比例)控制器是最简单的控制器,P英文全称Proportion(比例),也就是比例的意思,比例控制器的基本思想就是对系统的误差(也就是反馈得到的值和我们期望的值的差)呈上一个比例因子kp,从而得到它的控制量输出o,也就是利用误差的正负和大小作出成比例的反应, 比例因子kp,可以得到相应o值的正负和大小,输出量的大小与输入误差信号的大小成比例关系的一种控制。 公式是:O=Kp*e 。
假设让无人小车前进3m,p控制器输出pwm波的占空比Duty_p,Duty_p =Kp*error,就是Duty_p等于误差乘以kp(比例因子)。加上p控制器之后,系统响应曲线就可以变成下图所示的蓝色曲线。
可以看到p控制器减少了上升时间和稳态误差,但是系统也有本身没有任何超调变成了有一定的超调量,也就是说p控制器增加了系统的超调量。
上图显示的是p控制器中不同的比例因子Kp,kp所对应的三条响应曲线,其中蓝色是p=5的情况,红色是p=10的情况,橙色是p=20的情况,可以看出kp值越大上升时间也就越快,稳态误差越小,但是它的超调量也会随之增大。 通过简单的改变比例系数kp是不能消除系统震荡效果,并且kp值越大,系统震荡的幅度也在增大。也就是通过p控制器对误差所产生的修正会使系统在接近理想状态时产生一个超越稳态值的冲量并产生震荡。
D控制器介绍
要解决震荡,就需要对系统接近理想状态时的动量进行修正。(动量=质量 x 速度) ,也就需要对速度进行修正,使系统在接近理想状态时,为了让他更容易稳定下来,我们要将速度值尽量减小,这就需要用到误差的导数,因为速度的本质就是位移的导数,而这里的误差就是位移值之差,所以速度也可以认为是误差的导数(O=Kd* de/dt),我们需要用它来对输出控制量进行进一步的修正,也就是引入了微分控制。
它可以利用误差的导数,也就是误差的变化率来修正pwm波的占空比,所以现在duty_pd等于误差乘以比例因子kp再加上误差减去上一次误差的变化量乘以一个微分系数kd(Dudy_pd=Kp*error+Kd*(error-last_error))。它们的响应曲线如下图所示:
蓝线是之前加入p控制器的响应曲线,红线是在pd控制下的响应曲线,可以看出Pd控制器的使用使得超调量相对之前减少了很多,而且稳定时间也有所减少。
其实比例控制器是一种事后调节,它是在发生了误差之后再进行调节,微分控制器是事前进行调节,就是超前预测控制,它在误差有减小趋势的时候,就是这次误差小于上一次误差时,加入d控制器会使得它的输出变小,从而避免过度控制所产生的超调,当误差有增大的趋势时,也就是说这一次的误差大于上次的误差,d控制器会使得输出更大一些,从而抑制误差的增长趋势,加快系统的运动速度使得调节时间减小。
同时也可以发现,此时其实系统还存在稳态误差,你会发现我们怎么去调我们得到的反馈值和我们的期望值始终存在一定的误差、为了消除这一点我们需要引入另外一种控制器,也就是积分控制器来改善控制系统,它可以记录自己前面一些时刻的误差,尤其有重复性的,并且值比较固定的误差,特别是稳态误差,它可以将这些误差累加起来,当达到一定阈值,也就是说足够大的时候,系统就会做出一些补偿或者修正。 所以此时Pi控制器的输出也就是pwm波的占空比,(Dudy_pi=Kp*error+Ki*∑error)Dudy_pi等于误差乘以比例因子kp再加上前一段时间的误差之和乘以积分因子Ki,下图曲线是三种不同控制器下的响应曲线:
绿线和蓝线分别是之前的pd和p控制器所对应的响应曲线,红线是pid控制器所对应的响应曲线,加入了积分控制器之后,系统没有了稳态误差,但是也增加了一定超调量。 所以i积分控制器的主要作用是消除静态误差,使系统最后的稳态值和设定的值之间没有任何误差,同时积分作用的强弱也取决于积分时间常数,如果积分时间常数越大,积分项也会越慢,控制调节效率也就越弱。 综合考虑的所有因素,考虑到误差的变化率以及消除误差的因素,我们可以将这三种控制器全部都用上,也就是同时对误差进行比例积分和微分运算,它的系统响应如下图所示:
总结
三个基本参数 Kp,Ki,Kd.在实际控制中的作用:
比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差.积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数 Ti,Ti 越小,积分作用就越强。反之 Ti 大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成 PI 调节器或PID 调节器。
微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD 或PID 控制器。
典型的两种pid控制算法
PID控制公式
其中:
u(t)为控制器输出的控制量;(输出)
e(t)为偏差信号,它等于给定量与输出量之差;(输入)
KP 为比例系数;(对应参数 P)
TI 为积分时间常数;(对应参数I)
TD 为微分时间常数。(对应参数 D)
数字 PID 控制算法通常分为位置式 PID 控制算法和增量式 PID 控制算法。
位置式 PID 算法
e(k): 用户设定的值(目标值) - 控制对象的当前的状态值
比例P : e(k)
积分I : ∑e(i) 误差的累加
微分D : e(k) - e(k-1) 这次误差-上次误差
也就是位置式PID是当前系统的实际位置,与你想要达到的预期位置的偏差,进行PID控制
因为有误差积分 ∑e(i) 一直累加,也就是当前的输出u(k)与过去的所有状态都有关系,用到了误差的累加值;(误差e会有误差累加),输出的u(k)对应的是执行机构的实际位置,一旦控制输出出错(控制对象的当前的状态值出现问题 ),u(k)的大幅变化会引起系统的大幅变化
并且位置式PID在积分项达到饱和时,误差仍然会在积分作用下继续累积,一旦误差开始反向变化,系统需要一定时间从饱和区退出,所以在u(k)达到最大和最小时,要停止积分作用,并且要有积分限幅和输出限幅
所以在使用位置式PID时,一般我们直接使用PD控制,而位置式 PID 适用于执行机构不带积分部件的对象,如舵机和平衡小车的直立和温控系统的控制。
增量式PID
比例P : e(k)-e(k-1) 这次误差-上次误差
积分I : e(i) 误差
微分D : e(k) - 2e(k-1)+e(k-2) 这次误差-2*上次误差+上上次误差
增量式PID根据公式可以很好地看出,一旦确定了 KP、TI 、TD,只要使用前后三次测量值的偏差, 即可由公式求出控制增量。
而得出的控制量▲u(k)对应的是近几次位置误差的增量,而不是对应与实际位置的偏差,没有误差累加。也就是说,增量式PID中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作
总结:
增量型 PID,是对位置型 PID 取增量,这时控制器输出的是相邻两次采样时刻所计算的位置值之差,得到的结果是增量,即在上一次的控制量的基础上需要增加(负值意味减少)控制量。
增量式与位置式区别
1、增量式算法不需要做累加,控制量增量的确定仅与最近几次偏差采样值有关,计算误差对控制 量计算的影响较小。而位置式算法要用到过去偏差的累加值,容易产生较大的累加误差。
2、增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作 影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作。而位置式的输出直接对应对象的输出,因此对系统影响较大。
3、增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。
4、在进行PID控制时,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅
位置式PID优缺点:
优点:
①位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一一对应的,因此在执行机构不带积分部件的对象中可以很好应用
缺点:
①每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大。
增量式PID优缺点:
优点:
①误动作时影响小,必要时可用逻辑判断的方法去掉出错数据。
②手动/自动切换时冲击小,便于实现无扰动切换。当计算机故障时,仍能保持原值。
③算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关。
缺点:
①积分截断效应大,有稳态误差;
②溢出的影响大。有的被控对象用增量式则不太好;