PID控制算法介绍

1、 PID 算法介绍

  PID 是 Proportional(比例)、 Integral(积分)、 Differential(微分)的首字母缩写;是一种结合比例、积分和微分三种环节于一体的闭环控制算法,它是目前为止在连续控制系统中计数最为成熟的一种控制算法;在工业控制、机器人、无人机、机械臂和平衡车等领域有着极为重要的作用;该控制算法出现于 20 世纪 30 至 40 年代,至今为止经久不衰,适用于对被控对象模型了解不清楚的场合。实际运行的经验和理论的分析都表明,运用这种控制规律对许多工业过程进行控制时,都能得到比较满意的效果。 PID 控制的实质是对目标值和实际值误差进行比例、积分、微分运算后的结果用来作用在输出上。
  在工业过程中,连续控制系统的理想PID控制规律为:

  • Kp——比例增益, Kp 与比例度成倒数关系
  • Tt——积分时间常数
  • TD——微分时间常数
  • u(t)——PID 控制器的输出信号
  • e(t)——给定值 r(t)与测量值误差

  闭环控制是根据控制对象输出反馈来进行校正的控制方式,它是在测量出实际与计划发生偏差时,按定额或标准来进行纠正的。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。提到闭环控制算法,不得不提PID,它是闭环控制算法中最简单的一种。PID是比例 (Proportion) 积分 ,(Integral) 微分 ,(Differential coefficient) 的缩写,分别代表了三种控制算法。通过这三个算法的组合可有效地纠正被控制对象的偏差,从而使其达到一个稳定的状态。 

  比例(P)
  成比例地反映控制系统的偏差信号,偏差一旦产生,立即产生控制作用以减小偏差。比例控制器的输出u(t)与输入偏差e(t)成正比,能迅速反映偏差,从而减小偏差,但不能消除静差静差是指系统控制过程趋于稳定时,给定值与输出量的实测值之差。偏差存在,才能使控制器维持一定的控制量输出,因此比例控制器必然存在着静差。由偏差理论知,增大虽然可以减小偏差,但不能彻底消除偏差。比例控制作用的大小除与偏差e(t)有关之外,还取决于比例系数Kp的大小。比例系数Kp越小,控制作用越小,系统响应越慢;反之,比例系数Kp越大,控制作用也越强,则系统响应越快。但是,Kp过大会使系统产生较大的超调和振荡,导致系统的稳定性能变差。因此,不能将Kp选取过大,应根据被控对象的特性来折中选取Kp,使系统的静差控制在允许的范围内,同时又具有较快的响应速度。 单纯的比例控制存在不能消除的静态误差,这里就需要积分来控制。
  积分(I)
  在比例控制环节产生了静态误差,在积分环节中,主要用于就是消除静态误差提高系统的无差度。积分作用的强弱,取决于积分时间常数Ti,Ti越大积分作用越弱,反之则越强。积分控制作用的存在与偏差e(t)的存在时间有关,只要系统存在着偏差,积分环节就会不断起作用,对输入偏差进行积分,使控制器的输出及执行器的开度不断变化,产生控制作用以减小偏差。在积分时间足够的情况下,可以完全消除静差,这时积分控制作用将维持不变。Ti越小,积分速度越快,积分作用越强。积分作用太强会使系统超调加大,甚至使系统出现振荡。 
  微分(D)
  微分环节的作用能反映偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。积分控制作用的引入虽然可以消除静差,但是降低了系统的响应速度,特别是对于具有较大惯性的被控对象,用PI控制器很难得到很好的动态调节品质,系统会产生较大的超调和振荡,这时可以引入微分作用。在偏差刚出现或变化的瞬间,不仅根据偏差量作出及时反应(即比例控制作用),还可以根据偏差量的变化趋势(速度)提前给出较大的控制作用(即微分控制作用),将偏差消灭在萌芽状态,这样可以大大减小系统的动态偏差和调节时间,使系统的动态调节品质得以改善。微分环节有助于系统减小超调,克服振荡,加快系统的响应速度,减小调节时间,从而改善了系统的动态性能,但微分时间常数过大,会使系统出现不稳定。微分控制作用一个很大的缺陷是容易引入高频噪声,所以在干扰信号比较严重的流量控制系统中不宜引入微分控制作用。 
  微分控制作用的阶跃响应特性对于一个恒定的偏差量,不管其数值有多大,微分控制作用均为零。因此,微分作用不能消除静差,单独使用意义不大,一般需要与比例、积分控制作用配合使用,构成PD或PID控制。 
  对于PID控制,在控制偏差输入为阶跃信号时,立即产生比例和微分控制中作用。由于在偏差输入的瞬时,变化率非常大,微分控制作用很强,此后微分控制作用迅速衰减,但积分作用越来越大,直至最终消除静差。PID控制综合了比例、积分、微分3种作用,既能加快系统响应速度、减小振荡、克服超调,亦能有效消除静差,系统的静态和动态品质得到很大改善,因而PID控制器在工业控制中得到了最为广泛的应用。

2、 PID 算法的应用

  PID 算法是控制领域非常常见的算法,小到控制温度,大到控制飞机的飞行姿态和速度等等,都会涉及到 PID 控制,在控制领域可以算是万能的算法。
  以小车速度为例,你一定会发现这样一个问题,当你刚把充满的 12V 电池装在小车上时,然后在程序上给了一个固定 50% 的占空比,此时小车跑的很快动力很足,但是跑着跑着就慢了下来,因为电池电压的影响小车速度变慢了,在刚充满的时候 12V 电池 50% 的占空比相当于直接作用在电机两端的电压是 12V x 50% = 6V , 当使用一段时间后电池的电压变为 9V,虽然程序占空比没有变,但是由于电池电压降低了,所以作用在电机两端的电压也就变了,所以小车变慢了。那么怎么才能够使小车按照恒定速度行驶呢?其思想就是当小车速度慢了,就增加占空比。那么速度慢多少开始增加占空比呢?怎么增加?增加多少呢?
  此时, PID 算法就是一个非常好的选择,对于增加多少的问题,一定要通过 PID 算法,因为速度和占空比到底是个什么关系,谁也不知道。但是此时使用 PID 算法,通过编码器的速度反馈,可以实时的知道小车的速度是否慢了,然后利用目标速度与实际速度的误差带入算法,即可获得当前占空比,达到控制速度的效果。

  PID 算法是闭环控制系统中常用的算法, PID 分别是 Proportion(比例)、 Integral(积分)、Differential(微分)的首字母缩写。它是一种结合比例、积分和微分三个环节于一体的闭环控制算法,具体的控制流程如下图所示:

  上图中,我们将输入目标值和实际输出值进行偏差的计算,然后把计算结果输入到 PID控制算法中,经过比例、积分和微分三个环节的运算,运算后的输出作用于执行器,从而让系统的实际值逐渐靠近目标值。
  接下来我们以大棚温控系统为例,来理解 PID 算法中三个环节的作用。
  (1)比例环节( Proportion)
  比例环节可以成比例地反应控制系统的偏差信号,即输出与输入偏差成正比,可以用来减小系统的偏差。 此环节的公式如下:

u ----- 输出
Kp ----- 比例系数
e ----- 偏差

  我们接下来以大棚温控实例来理解这个公式。假设我们现在需要调节棚内温度为 30℃,而实际温度为 10℃,此时的偏差 e=20,由比例环节的公式可知,当 e 确定时, Kp 越大则输出u 越大,也就是温控系统的调节力度越大,这样就可以更快地达到目标温度;而当 Kp 确定时,偏差 e 越大则输出 u 越大。由此可见,在比例环节中,比例系数 Kp 和偏差 e 越大则系统消除偏差的时间越短,具体的曲线表现如下图所示:

                   比例环节曲线图

  仅有比列作用时会有以下几个问题:

  问题1:上图中,当 Kp 的值越大时,其对应的橙色曲线达到目标值的时间就越短,与此同时可以发现,橙色曲线出现了一定幅度的超调和振荡,这会使得系统的稳定性下降,因此, 我们在设置比例系数的时候,并不是越大越好,而是要兼顾消除偏差的时间以及整个系统的稳定性

  问题2:如果仅有比例环节的控制,可能会给系统带来一个问题: 静态误差(稳态误差)。静态误差是指系统控制过程趋于稳定时,目标值与实测值之间的偏差。我们以大棚温控实例来理解什么是静态误差:假设我们现在需要调节棚内温度为 30℃,而实际温度为 25℃,此时偏差 e=5, Kp 为固定值,如果此时的输出可以让大棚在半个小时之内升温 5℃,而外部的温差可以让大棚在半个小时之内降温 5℃,即降温速度和升温速度相等了,也就是说,输出 u 的作用刚好被外部影响抵消了,这就使得偏差会一直存在,此时的曲线如下图所示:

                 存在静态误差

  问题3:当比较接近目标时,P的控制作用就比较小了,因为越接近目标误差就越小,P的作用越温柔,有很多内在的或者外部的因素,使控制量发生小范围的摆动。

  大家可能会想到,我们可以通过增大 Kp 来增大输出,以此消除偏差。在实际应用中,此方法的局限性很大,因为我们不能确定偏差的大小,它是在实时变化的,如果我们把 Kp 设置得太大,就会引入超调和振荡,让整个系统的稳定性变差。因此,为了消除静态误差,我们引入了积分环节。
  (2)积分环节(Integral)
  积分环节可以对偏差 e 进行积分,只要存在偏差,积分环节就会不断起作用,主要用于消除静态误差,提高系统的无差度。 引入积分环节后,比例+积分环节的公式如下:

u ----- 输出
e ----- 偏差
∑ e ----- 累计偏差
Kp ----- 比例系数
Ki ----- 积分系数

  我们依旧以大棚温控实例来理解积分环节的作用。假设现在温控系统的比例环节作用被抵消, 存在静态误差 5℃,此时偏差存在,P兄会想我和目标已经很近了,只需要轻轻加热就可以了,D兄会想加热和散热相等,温度没有波动(误差值没有变化),我好像不用调整什么,此时积分就发挥作用了,因为积分环节会一直累计偏差,以此增大输出,从而消除静态误差。这样一来,即使5℃差值不是太大,但是随着时间的推移,只要没达到目标温度,这个积分量就不断增加,系统就会慢慢意识到:还没有到达目标温度,该增加功率啦!到了目标温度后,假设温度没有波动,积分值就不会再变动,这时,加热功率仍然等于散热功率,但是,温度是稳稳的50℃。

  Ki的值越大,积分时乘的系数就越大,积分效果越明显,所以,I的作用就是,减小静态情况下的误差,让受控物理量尽可能接近目标值。

  I在使用时还有个问题:需要设定积分限制,防止在刚开始加热时,就把积分量积得太大,难以控制。

  而从上述公式中可以得知,当积分系数 Ki 或者累计偏差越大时,输出就越大,系统消除静态误差的时间就越短,具体的曲线表现如下图所示:

  上图中,当 Ki 的值越大时,其对应的橙色曲线达到目标值的时间就越短,与此同时,橙色曲线出现了一定幅度的超调和振荡,这会使得系统的稳定性下降,因此, 我们在设置积分系数的时候,并不是越大越好,而是要兼顾消除静态误差的时间以及整个系统的稳定性。
  我们前面有说过,只要系统还存在偏差,积分环节就会不断地累计偏差。当系统偏差为 0的时候,说明已经达到目标值,此时的累计偏差不再变化,但是积分环节依旧在发挥作用(此时往往作用最大),这就很容易产生超调的现象了。因此,我们需要引入微分环节,提前减弱输出,抑制超调的发生。
  (3)微分环节(Differential)
  微分环节可以反应偏差量的变化趋势,根据偏差的变化量提前作出相应控制,减小超调,克服振荡。 引入微分环节后,比例+积分+微分环节的公式如下:

𝑢𝑘 ---------- 第 k 次输出
Kp ---------- 比例系数
Ki ---------- 积分系数
Kd ---------- 微分系数
𝑒𝑘 ---------- 第 k 次偏差
𝑒𝑘−1 ---------- 第 k-1 次偏差
∑𝑘 𝑗=0 𝑒𝑗 ---------- 累计 k 次偏差

  我们依旧以大棚温控实例来理解微分环节的作用。假设温控系统目标温度为 30℃, 在上午八点的时候存在偏差15℃,经过一段时间的调节,到了上午九点,此时偏差已经缩小到5℃,偏差的变化量= 九点的偏差(第 k 次) -八点的偏差(第 k-1 次) = -10,结合上述公式可知,此时微分环节会削弱比例和积分环节的作用,减小输出以抑制超调。

  至此, PID 算法三个环节的作用已经介绍完,我们最终得到了 PID 算法的一个公式:

  该公式是 PID 离散公式之一,除了离散公式之外, PID 还有连续的公式,但是因为连续的公式不利于机器计算,我们这里不做介绍。大家需要注意,在实际的应用中,并不是每一个系统都需要 PID 的三个环节参与控制的,有的系统只需要比例环节或积分环节就可以控制得很好,除此之外,每一个系统的 PID 系数并不是通用的,这需要根据实际的情况去设置。

3、PID 算法离散公式
  (1)位置式 PID 公式(全量式 PID )

  该公式的计算需要全部控制量参与,它的每一次输出都和过去的状态有关。
  (2)增量式 PID 公式
  通过位置式的 PID 公式,我们只需两步即可推导出增量式 PID 公式:
  第一步,将 k = k-1 代入位置式 PID 公式, 得:

  第二步,由𝑢𝑘 -𝑢𝑘−1 得:

  至此,增量式 PID 方式就推导完了。 从公式中可以看出, 增量式 PID 的计算并不需要一直累计偏差,它的输出与近三次的偏差有很大关系。
  注意: 增量式 PID 公式输出的只是控制量的增量。我们以一个实例来理解这句话:假设电机实际转速为 50RPM,现在我们要让它加速到 60RPM,如果采用的是位置式 PID,系统将直接输出 60RPM 对应的控制量(占空比);如果采用的是增量式 PID,系统将输出提速 10RPM对应的控制量(占空比),此时我们还需要加上上次(50RPM)的输出。
  介绍完 PID 的两个离散化公式,接下来我们比较一下这两个 PID 公式的不同点,具体如下表所示:

  (3)两种 PID 公式的优缺点

  对比区别
    • 增量式算法不需要对积分项累加,控制量增量只与近几次的误差有关,计算误差对控制量计算的影响较小。而 位置式算法要对近几次的偏差的进行积分累加,容易产生较大的累加误差;
    • 增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作;而位置式的输出直接对应对象的输出,因此对系统影响较大;
    • 增量式算法控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而 位置式算法适用于执行机构不带积分部件的对象,如电液伺服阀;
    • 在进行 PID 控制时, 位置式 PID 需要有积分限幅和输出限幅,而 增量式 PID 只需输出限幅。
  ① 位置式:
    优点:位置式 PID 是一种非递推式算法,可直接控制执行机构(如平衡小车), u(k) 的值和执行机构的实际位置(如小车当前角度)是一一对应的,带有积分作用,适用于不带积分部件的对象。
    缺点:全量计算,计算错误影响很大; 每次输出均与过去的状态有关,需要对偏差进行累加,运算工作量大。
  ② 增量式:
    优点:只输出增量,计算错误影响小,必要时可用逻辑判断的方法去掉出错数据;不需要累计偏差,运算量少,控制增量 Δu(k) 的确定仅与最近 3 次的采样值有关,在速度闭环控制中有很好的实时性;手动/自动切换时冲击小,便于实现无扰动切换。
    缺点:积分截断效应大,有稳态误差;溢出的影响大,有的被控对象用增量式则不太好;

4、总结

  P用来减小误差,I用来消除静态误差,D用来抑制超调。

  

 

posted @ 2025-04-21 13:43  孤情剑客  阅读(813)  评论(0)    收藏  举报