前言

博主是工业互联网行码农一枚,尽管不是算法工程师和自动化方向的,但常常加入共事介绍控制算法原理的培训,缓缓的对小局部控制算法有肯定理解,其中应用频率最高的控制算法非PID莫属。很多同学在学习PID的时候,会被繁冗的数学公式吓倒,明天咱们就抛开数学公式,用逻辑和例子给大家讲明确“到底什么是PID”?

PID算法简介

PID是一种控制算法,是 Proportional(比例)、Integral(积分)、Differential(微分)的缩写。它是间断零碎中技术最为成熟、利用最为宽泛的一种控制算法。

PID控制器次要实用于基本上线性,且动静个性不随工夫变动的零碎。简略来说就是:相似于须要将某一个物理量“保持稳定”的场合,PID根本都能派上用场。

工业中PID典型的利用场景有:温度控制、流量管制、液位管制等。

生存中PID的利用也很常见:自来水的压力管制、空调的温度控制、均衡车的均衡管制、汽车的定速巡航管制、无人机的悬停管制、火箭飞机的姿势调整等。

理论运行教训和实践剖析都表明,使用PID控制算法对许多工业过程进行管制都能失去比较满意的成果。

PID的概念及公式

PID的基本思路是依据偏差量的大小,使用比例、积分、微分计算出一个管制量,将这个管制量输出被管制的零碎,零碎接管到该输入量后会输入一个相应的输出量,PID控制器再检测该输出量,并再计算偏差,而后再循环以上过程。

原始公式如下:
$u(t)=K_p \Bigg( e(t)+\frac{1}{T_i}\int^t_0e(t)dt+T_d\frac{de(t)}{dt}\Bigg)$

  • $K_p$ —— 控制器的比例系数;
  • $T_i$ —— 积分时间常数;
  • $T_d$ —— 微分时间常数;
  • $u(t)$ —— PID控制器的输入信号;
  • $e(t)$ —— 给定值$r(t)$与测量值之差。

公式可简化为:
$u(t)=K_p * e(t) + K_i * \sum_{n=0}^t e(t) + K_d * (e(t) - e(t-1))$

  • $K_p$ —— 控制器的比例系数;
  • $K_i$ —— 控制器的积分系数;
  • $K_d$ —— 控制器的微分系数;
  • $u(t)$ —— PID控制器的输入信号;
  • $e(t)$ —— 给定值$r(t)$与测量值之差。
  • $e(t-1)$ —— 上一次给定值$r(t)$与测量值之差。

很多同学可能会被下面数学公式整懵了,没关系,咱们先看完上面例子,再回头看来公式,置信你能对以上公式有新的意识。

在学习PID之前,咱们须要先理解什么是 开环管制闭环控制,这2个概念可能帮忙咱们更好的了解PID。

凋谢回路控制系统

开环管制(Open Loop Control System):不将管制的后果反馈回来影响以后管制的零碎。例如:

  • 开关——按下开关后的一瞬间,管制流动曾经完结,灯是否亮起已对按开关的这个流动没有影响;
  • 投篮——篮球出手后就无奈再持续对其管制,无论球进与否,球出手的一瞬间管制流动即完结。

闭环回路控制系统

闭环控制(Closed Loop Control System):须要将管制的后果反馈回来与心愿值比拟,并依据它们的误差调整管制作用的零碎。例如:

  • 调节水龙头——首先在头脑中对水流有一个冀望的流量,水龙头关上后由眼睛察看现有的流量大小与期望值进行比拟,并一直的用手进行调节造成一个反馈闭环控制;
  • 骑自行车——同理,须要一直的修改前进的方向与速度造成闭环控制。

闭环控制零碎通常会由以下6个环节组成。

咱们拿“维持水缸水位高度在1米”为例,来详解闭环控制中的每个环节:

  • 传感器:人工测量以后水位高度
  • 指标量:维持水缸水位高度在1米
  • 偏差量指标量 - 以后水位高度
  • 控制器:依据偏差量计算出执行量
  • 执行量:传给执行器的入参
  • 执行器:人工用水桶向水缸中加水

其中传感器指标量偏差量执行量执行器 这5个环节都比较简单,一眼就能看明确意思。最要害的环节控制器绝对简单一些,在控制器环节抉择不同的控制算法,依据偏差量计算出执行量也不同,明天咱们就具体看看PID的管制成果。

PID之比例P

后面有说到PID的基本思路是依据偏差量的大小,使用比例P积分I微分D计算出一个管制量。但PID的3个参数,并不是非要一起应用,能够单用比例P来管制,也能够两两联结用比例P+积分I比例P+微分D来管制。

咱们先看看仅用比例P能带来什么样的管制成果?持续下面的“水缸”例子:

  • 传感器:人工测量水缸初始水位高度是0.2米
  • 指标量:维持水缸水位高度在1米
  • 偏差量:1米 - 0.2米 = 0.8米
  • 控制器:应用PID算法的比例控制,依据偏差量计算出执行量
  • 执行量:传给执行器的入参
  • 执行器:人工用水桶向水缸中加水

通常状况偏差量执行量之间的单位不同,在以后例子里偏差量的单位是水缸,而执行量的单位是水桶,他们的容积不一样,所以咱们须要一个系数,来放大或者放大两者的关系。具体公式可形象为:

执行量 = 比例P = 偏差量 * 比例P系数

这个时候,假如水缸旁边站着一个人,用水桶往水缸里加水来管制水位的高度。如果单纯的用比例控制算法,假如比例P系数是0.5(相当于两桶水的容量等于一缸水的容量),咱们开始模仿加水试验:

如上图后果所示,人工用水桶向水缸中加水8次,就能把水缸水位加到1米高度。把以后水位转换成曲线,大略成果如下。

上述例子比较简单,单靠比例P就能实现工作,但现实情况往往只有比例P是不够的,咱们再来看一个更简单的状况,假如比例P系数依然是0.5,但在每次加水的距离,水缸都会漏掉0.1米高度的水。咱们再从头模仿加水试验,看看具体后果会怎么?

如上图后果所示,当水位达到0.8之后,水位就不会持续减少了。因为,当水位等于0.8时,偏差量是0.2,每次往水缸中加水的量为执行量= 比例P= 0.2 * 0.5 = 0.1,而每次加水的距离,水缸都会漏掉0.1米高度的水,所以退出的水和流出的水相对消。

尽管,此时控制系统已达稳固状态,但理论值指标量之间的会存在一个稳固差值,这个差值叫稳态误差稳态误差十分常见,比方:管制空调温度会因为空气温差而降温、管制无人机固定高度会受重力影响往下掉、管制汽车定速巡航会有空气阻力和摩擦力的影响而加速,这些场景都会产生稳态误差

单单只用比例P管制闭环回路,是无奈防止稳态误差问题的,因为比例P系数无奈依据工夫或次数累加,当存在外界烦扰因素时,比例P系数无奈动静调整大小,那么稳态误差就会始终存在。

如果咱们引入工夫的维度,就能取得2个神器 增幅器-积分I抑制器-微分D,他们别离解决比例P过小和过大的状况,比例P过小的话由增幅器-积分I 补充即可解决稳态误差问题,比例P过大由抑制器-微分D消减来避免适度震荡。

PID之积分I(增幅器)

咱们先来看看增幅器积分I,它也能够了解为累加教训,当比例P过小,能够由积分I补充,它的原理是利用过来的工夫一直累加。具体公式可形象为:

比例P = 偏差量 * 比例P系数
积分I = 上一次积分I + 偏差量 * 积分I系数
执行量 = 比例P + 积分I

设想一下,如果用只比例P管制存在稳态误差,阐明比例P过小,这时积分I就会一直累加到一个很大的值,来补充比例P,从而影响执行量

如果最终管制成果在指标量左近抖动,咱们就能失去一个正负交替的偏差量,会在指标左近一直产生正负数累加到积分I积分I就会一直趋近于零,最终使管制成果趋于稳定。

咱们持续用下面“水缸加水”的例子,假如指标量是1,每次漏水0.1,比例P系数为0.5,积分I系数为0.2,咱们再从头模仿加水试验,具体数值如下。

把以后水位转换成曲线,大略成果如下。

上一轮试验只用比例P管制存在稳态误差。本轮试验退出了积分I之后就有了累加成果,在未达到管制成果之前积分I会继续累加,在达到指标量之后积分I因为惯性会持续适量管制 ,同时偏差量会由正转负再转正,积分I也会由正转负再转正,最终积分I会继续对消掉每次漏水0.1,管制成果趋于稳定 。

增幅器有他的危险性,如果零碎出现意外或谬误,增幅器可能会被累加到无限大,导致系统不可用,所以增幅器须要有肯定的限度。

  • 1、限度幅度,在任意时刻都给积分I设定最大值和最小值。
  • 2、不运行时清零,当零碎判断没有运行时,被动将积分I清零。

PID之微分D(抑制器)

我持续再看看抑制器微分D,它也能够了解为预测将来,用以后的偏差量上一次偏差量,失去的后果就可能是下一次偏差量,用下一次偏差量提前参加到计算中,就能够避免执行量过大,产生超出指标量的问题。具体公式可形象为:

比例P = 偏差量 * 比例P系数
积分I = 上一次积分I + 偏差量 * 积分I系数
微分D = (偏差量 - 上一次偏差量) * 微分D系数
执行量 = 比例P + 积分I + 微分D

换个“汽车刹车”的例子,安稳驾驶的车辆,当发现后面有红灯时,为了使得行车安稳,基本上提前几十米就松油门踩刹车。当车辆离停车线十分近的时候,则使劲踩刹车使车辆停下来,整个过程能够看做一个退出微分D的控制策略。

能够看到,在刹车过程中,因为偏差量是越来越小的,所以 微分D= (偏差量-上一次偏差量)*微分D系数肯定是正数,在管制中退出一个正数项,他存在的作用就是为了避免汽车因为刹车不及时而闯过停车线。

从常识上了解,越凑近停车线,就越应该踩深刹车,不能让车过线,所以这个 微分D的作用,能够了解为刹车。当车离停车线很近,并且车速还很快时,这个 微分D的绝对值(实际上是一个正数)就会很大,示意应该鼎力踩刹车尽快让车停下来。

再回到下面“水缸加水”的例子,当发现水缸里的水快要靠近指标量时,退出 微分D能够缩小适量加水的幅度,说白了就是缩小管制过程中的震荡。假如指标量是1,每次漏水0.1,比例P系数为0.5,积分I系数为0.2,微分D系数为0.2,咱们再从头模仿加水试验,具体数值如下。

上一轮试验应用比例P积分I联结管制,最高水位达到1.3,超过指标量之后,水位最低回落至0.83。本轮试验退出了抑制器微分D之后,最高水位仅达到1.23,超过指标量之后,水位最低回落至0.88,相比上一轮试验,本轮震荡幅度显著减小,这就是微分D的抑制作用。

分享一个动图,很好的展现了比例P积分I微分D的管制成果,其中红色虚线是指标量,曲线是用以后值的变化趋势。联合这个动图,大家再回忆一下“水缸加水”的例子,管制成果是不是很类似呀~

PID原理总结

咱们用了“水缸加水”的例子,具体解释了PID的比例P积分I微分D三个参数的管制原理,置信小伙伴们曾经明确什么是PID了。大家再回过头看这个公式,是不是也感觉挺亲切的。
$u(t)=K_p * e(t) + K_i * \sum_{n=0}^t e(t) + K_d * (e(t) - e(t-1))$

  • $K_p$ —— 控制器的比例系数;
  • $K_i$ —— 控制器的积分系数;
  • $K_d$ —— 控制器的微分系数;
  • $u(t)$ —— PID控制器的输入信号;
  • $e(t)$ —— 给定值$r(t)$与测量值之差(偏差量);
  • $e(t-1)$ —— 上一次给定值$r(t)$与测量值之差。

最初再总结一下:

  • 比例P积分I微分D都跟偏差量无关
  • 比例P取决于以后的偏差量
  • 积分I累计过来所有偏差量之和
  • 微分D预测下一时刻偏差量

所以,常常有人说比例P是当初,积分I是过来,微分D是将来,是不是有一种哲学的感觉,哈哈~

PID调参口诀

最初分享个PID调参口诀,写得挺好还挺押韵的~

参数整定找最佳,从小到大程序查;
先是比例后积分,最初再把微分加;
曲线振荡很频繁,比例度盘要放大;
曲线沉没绕大湾,比例度盘往小扳;
曲线偏离回复慢,积分工夫往降落;
曲线稳定周期长,积分工夫再加长;
曲线振荡频率快,先把微分降下来;
动差大来稳定慢。微分工夫应加长;
现实曲线两个波,前高后低4比1;
一看二调多剖析,调节品质不会低;
若要反馈增快,增大P减小I;
若要反馈减慢,减小P增大I;
如果比例太大,会引起零碎振荡;
如果积分太大,会引起零碎机灵。

参考援用

  • 百度百科-PID算法
  • 百度百科-开环管制
  • PID管制入门原理:https://zhuanlan.zhihu.com/p/197927959
  • PID控制算法原理:https://zhuanlan.zhihu.com/p/39573490
  • PID管制原理及管制框图阐明:https://www.dgzj.com/zidonghua/96044.html
  • PID参数调整,集体教训:https://blog.csdn.net/weixin_44407238/article/details/119255699
  • 学会PID-基于板球均衡零碎:https://www.bilibili.com/video/BV1xL4y147ea
如有任何问题或倡议,欢送返回公众号【劼哥舍】留言~