乐趣区

关于工业互联网:深入浅出PID算法

前言

博主是工业互联网行码农一枚,尽管不是算法工程师和自动化方向的,但常常加入共事介绍控制算法原理的培训,缓缓的对小局部控制算法有肯定理解,其中应用频率最高的控制算法非 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

如有任何问题或倡议,欢送返回公众号【劼哥舍】留言~

退出移动版