PID控制算法介绍
1、自动控制系统
控制系统是指由控制主体、控制客体和控制媒体组成的具有自身目标和功能的管理系统。也可以理解为:为了使控制对象达到预期的稳定状态。例如一个水箱的温度控制,可以通过控制加热设备输出的功率进而来改变水温达到目标温度,这个水箱的温度控制可以称之为一个简单的控制系统。
1.1、自动控制系统的工作原理是什么?
原理:对生产中某些关键性参数进行自动控制,使它们在受到外界干扰 (扰动) 的影响而偏离正常状态时,能够被自动地调节而回到工艺所要求的数值范围内。自动控制系统分为开环和闭环,具体为:

(1)开环自动控制系统原理:
开环控制系统(òpen-loop control system) :指被控对象的输出(被控制量)对控制器(controller)的输出没有影响的控制系统。在开环控制系统中,系统输出只受输入的控制,控制精度和抑制干扰的特性都比较差。开环控制系统中,基于按时序进行逻辑控制的称为顺序控制系统;由顺序控制装置、检测元件、执行机构和被控工业对象所组成。
开环控制不能够检测误差,不能够校正误差,只能够按照事先确定好的程序和产生信号的条件,依次去控制对象并且无抑制的干扰能力。

开环控制系统框图
以生活中的电吹风为例,电吹风是一个常见开环控制系统,通过设置吹风机的档位可以改变风扇的转速和电热丝的温度,进而调节输出的温度和风速。电吹风的开环控制框图如下:

电吹风开环控制系统框图
上图中,电风扇风力控制系统就是一个开环控制的系统,我们设置好目标风力之后,控制电路就输出相应的电压(假设是电压控制),此时电机的扇叶转速就被控制在目标范围了。理想状态下,风扇的输出风力确实可以稳定在目标值附近,然而,在实际的使用中,电机会逐渐老化,扇叶上的灰尘也会让负载增大,此时我们所设定目标风力和实际风力可能就存在偏差了。
(2)闭环自动控制系统原理:
闭环控制系统(closed-loop control system):指系统被控对象的输出(被控制量)会反送回来影响控制器的输出,形成一个或多个闭环的控制系统。把控制系统输出量的一部分或全部,通过一定方法和装置反送回系统的输入端,然后将反馈信息与原输入信息进行比较,再将比较的结果施加于系统进行控制,避免系统偏离预定目标。闭环控制系统利用的是负反馈。
反馈又称回馈,是控制论的基本概念,指将系统的输出返回到输入端并以某种方式改变输入,进而影响系统功能的过程。反馈可分为负反馈和正反馈:
负反馈使输出起到与输入相反的作用,使系统输出与系统目标的误差减小,系统趋于稳定;
正反馈使输出起到与输入相似的作用,使系统偏差不断增大,使系统振荡,可以放大控制作用。正反馈主要用于信号产生电路。
对负反馈的研究是控制论的核心问题。
闭环控制也就是(负)反馈控制,原理与人和动物的目的性行为相似,系统组成包括传感器(相当于感官),控制装置(相当于脑和神经),执行机构(相当于手腿和肌肉)。传感器检测被控对象的状态信息(输出量),并将其转变成物理(电)信号传给控制装置。控制装置比较被控对象当前状态(输出量)对希望状态(给定量)的偏差,产生一个控制信号,通过执行机构驱动被控对象运动,使其运动状态接近希望状态。具体可见一下框图:

闭环控制系统框图
以热水器自动控温为例,首先我们将热水器设置一个温度,此时这个温度就是这个系统的给定值,也是控制系统想要达到的目标值;热水器的调节器为整个系统的控制器,调节器经过计算处理输出给执行机构,通过热水器的加热装置,进而控制水的温度,然后检测实际的温度,将温度反馈给控制系统,此时实际的温度和目标温度产生偏差,通过加热装置给水加热来达到理想的温度。闭环控制框图如下:

热水器闭环控制系统框图
1.2、控制系统与电机有什么关系?
在控制系统中有一个角色十分的重要,它根据控制装置的信号改变着被控对象的状态——执行器。执行器的种类多种多样,可以是改变温度的电热丝、改变转速的电机等等,只要是符合可以改变被控对象的状态都可以称之为执行器。就目前来说电机加上相应的传输结构占执行器的一大部分,所以说控制电机就变成了十分重要的内容。电机控制的好坏直接决定于被控对象状态改变的是否准确。电机的控制是对电机的启动、加速、运转、减速以及停止进行控制,通过对其控制达到快速启动、快速响应、高效率、高扭矩输出和高过载能力的目的。
2、 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控制器在工业控制中得到了最为广泛的应用。
3、 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 系数并不是通用的,这需要根据实际的情况去设置。
4、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 次的采样值有关,在速度闭环控制中有很好的实时性;手动/自动切换时冲击小,便于实现无扰动切换。
缺点:积分截断效应大,有稳态误差;溢出的影响大,有的被控对象用增量式则不太好;

浙公网安备 33010602011771号