1. 前言
PID 即 Proportional(比例),Integral(积分),Differential(微分)的英文缩写。顾名思义,PID 控制算法是结合比例,积分和微分三种环节于一体的自动控制算法,它是连续系统中技术最为成熟,应用最为广泛的一种控制算法,该控制算法出现于 20 世纪 30 至 40 年代,适用于对被控对象模型了解不清楚的场合。实际运行的经验和理论的分析都表明,运用这种控制规律对许多工业过程进行控制时,都能得到比较满意的效果。PID 控制的实质就是根据输入信号的偏差值,按照比例,积分,微分的函数关系进行运算,运算结果用以控制输出。
通过这段话的介绍,对于还未学习过 PID 算法的人来说还是难以理解 PID 算法到底能够干什么?又能发挥什么样的控制效果?下面将引入一些例子来详细说明理解 PID 控制的作用以及控制效果,理解 PID 后我们再来详细的推导 PID 算法。
2. 开关量控制
2.1. 开关量简述
现在我们有一个任务需要控制一个加热器让一锅水的温度保持在 50
度。你应该会觉得简单,不就是当水温小于 50 度就开启加热器让它给水加热,水温大于 50 度就关闭加热器停止给水加热这不就行了。不错对于被控制量(这里被控制量是水温)没有太高精确度要求的情况下确实可以使用开启或关闭这样的开关量对被控制对象进行控制。
2.2. 开关量缺点
但如果控制对象是一辆汽车呢?同时希望汽车的车速保持在 50km/h 的时速,依旧可以使用开关量控制吗。对于这样的疑问我们可以设想一下,假如汽车的定速巡航电脑在某一时间测到车速是 45km/h
。由于低于 50km/h
的目标时速它立刻要求发动机加速,结果发动机收到了个 100% 全油门命令,嗡~~汽车急剧加速到 60km/h
。此时由于速度高于 50km/h
这时电脑又发出命令刹车!使用这样的控制方法得到的乘坐体验是极差的。让乘客使用这样的系统最终导致什么结果呢,结果当然是乘客很愤怒。
所以,在大多数场合中,用开关量来控制一个物理量,就显得过于简单了。因为单片机和传感器不是无限快的采集控制需要时间(当传感器察觉到温度升高其实实际温度已经远远高于目标温度了,当传感器察觉到温度降低其实实际温度已经远远低于目标温度了)所以存在感知滞后。而且被控制对象具有惯性。比如你将一个加热器拔掉,它的余热(即存在热惯性)依旧会使水温继续升高一段时间,所以大多时候是无法保持状态稳定的。
2.3. 连续控制
相比于开关量的不足,这时,就需要一种算法要求可以快速的将需要控制的物理量带到目标值附近,同时它可以预见这个量的变化趋势,它可以消除一些比如因为散热,阻力等因素造成的静态误差(比如加热速度等于降温速度,此时即使存在温度差,以不变的功率继续加热也无法升高温度了)。于是,当时的数学家们发明了这一历久不衰的算法这就是 PID 控制算法。
3. PID 控制
3.1. 控制原理
PID 参数也就是就是其名称,所以顾名思义 PID 算法拥有三个参数即 P(比例),I(积分),D(微分),在实际应用中一般在将这三个参数定义为 Kp(比例),Ki(积分),Kd(微分)。这三个参数对应不同的调节作用。注意:虽然 PID 有三个参数,但是允许我们只使用其中一个参数,或仅使用其中两个,也可以三个参数同时使用来构成控制系统。
3.1.1 Kp 比例调节
Kp 中 p 就是比例,即比例控制。控制作用最明显,原理也最简单。比如这里被控制量是水温,水温作为被控制量具备当前温度值,也有我们期望的目标温度值。
当前温度值和目标温度值两者差距不大时,就让加热器轻轻地加热。
要是因为某些原因,温度降低了很多,就让加热器稍稍用力加热。
要是当前温度比目标温度低得多,就让加热器开足功率加热,尽快让水温到达目标温度值附近。
这就是 P 的比例控制作用,跟开关量控制方法相比,显然更加优雅。P 越大,调节作用越激进,P 越小调节作用越保守。有了 P 环节控制不够,系统无法达到稳定,水温依旧在 50 度左右晃晃悠悠。
3.1.2 Kd 微分调节
Kd 中 d 就是微分,即微分控制。从前面说到仅使用比例控制系统无法达到稳定,温度依旧晃晃悠悠。这类似一个弹簧上挂载一个重物,当弹簧和重物处于平衡位置上时用力拉扯弹簧然后松手。此时它会震荡起来。因为阻力很小,它能够持续震荡较长的时间才会重新处于平衡位置。
但是如果将弹簧和重物浸没在水中,同样当弹簧和重物处于平衡位置上时用力拉扯弹簧然后松手。 在这种情况下,由于水的阻力弹簧和重物只需经过较短的时间即可重新回归平衡位置。
所以我们需要一个控制作用,让被控制的物理量的变化速度趋于 0,即类似上面说到的水对弹簧的阻尼的作用。因为,当越接近目标时,P 的控制作用就越小。越接近目标,P 的作用越温柔。但是存在很多内在的或者外部的因素,使控制量发生小范围的摆动。
所以 PID 中的 D 的作用就是让物理量的速度趋于 0,只要什么时候这个被控制量发生了抖动,D 就向相反的方向用力,尽力刹住这个变化(抖动)。D 越大,向相反方向刹车(阻尼)的力道就越强。
实际上有了比例和微分的控制作用整个系统就可以达到稳定了,既然如此为什么还需要积分控制呢,好的带着这个疑问继续讲解。
3.1.3 Ki 积分调节
Ki 中 i 就是积分,即积分控制。前面说道有了比例和微分的控制作用整个系统就可以达到稳定,那么现在将只使用了比例和微分控制的加热装置带到非常寒冷的地方用于烧水,需要将水烧到 50 度。好的现在开始,
在 P 比例控制的作用下,水温慢慢升高。直到水温升高到 45 度时发现了一个问题,水温无法升继续高,一直停留在 45 度,这是为什么?现在针对这个问题我们一起分析一下,结果如下。
因为水温已经到达 45度了所以 P 兄会这样想:我和目标已经很近了,只需轻轻加热即可。但是天气太冷,水散热的速度,和 P 控制的轻轻加热的速度相等了。此时 D 兄这样想:加热和散热相等,温度没有波动,我好像不需要调整。于是,水温永远地停留在 45 度,无法继续升高到 50 度。
根据常识,我们都知道,对于加热速度和散热速度相同(这就是稳态误差,稳态误差是系统从一个稳态过渡到新的稳态,或系统受扰动作用又重新平衡后,系统出现的偏差),但是为了继续升高温度那么应该进一步增加加热的功率(消除稳态误差)。但是这又会遇到一个问题,这个问题就是因该增加多大的功率好呢?
科学家早已想到这个问题,设置一个积分量。只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上。
这样一来,即使 45 度和 50 度相差不大,但是时间可是是会变化的随着时间的推移,只要还没达到目标温度,这个积分量就不断增加。这时控制系统就会慢慢意识到:还没达到目标温度,该加大功率啦。
到了目标温度后,假设温度没有波动,积分值就不会再变动(因为持续对 0 进行积分,结果依旧是 0)。这时,加热功率仍然等于散热功率,但是温度却是稳稳的处于 50 度。
I 值越大,积分时乘的系数就越大,积分效果越明显。所以 I 的作用就是,减小静态情况下的误差,让被控物理量尽可能接近我们设定目标值。I 在使用时需要注意一个问题:需要设定积分限制。因为刚刚开始加热时,当前温度必然和我们设定温度值相差较大,如果未设置积分限制将导致积分过大,最终系统难以控制。
3.2 PID 阶跃响应曲线
前面已经讲解了 PID 三种调节的工作方式和原理,现在来观察一下三种调节的调节响应效果。
4. 应用场景
通过上面的介绍可以知道类似于需要将某一个被控物理量保持稳定控制的场合比如维持平衡,稳定温度,稳定转速等,PID 都能发挥出其作用。典型的应用有火箭的姿态控制,舰艇火炮瞄准控制,汽车的定速巡航,发动机转速控制,自动驾驶车辆的转向,无人机的悬停控制,相机稳定器,相机云台,工业中的液位控制等等。
5. PID 公式推导
在此之前我们已经详细的分析了 PID 控制的原理,已经对 PID 控制理论有了一定的认识,所以下面我们来具体的分析 PID 数学表达式的推导与离散化。
5.1 控制系统定义
在控制系统中,控制偏差 e 指的是设定值 w 与实际输出值 y 进行比较的结果即
e = w − y e = w-y e=w−y
所谓 PID 调节器就是按照偏差 e 的比例(P),积分(I),微分(D)运算的线性组合构成控制量的一类调节器如下图所示。
前面说过在实际应用中,PID 调节器的结构可以根据被控制对象的特性和控制要求灵活地改变,取其中一部分环节构成控制规律,组成各种不同的控制器。例如比例(P)调节器,比例积分调节器(PI),或比例微分调节器(PD)。
5.2 各类调节器分析
5.2.1 比例调节器
比例调节器的控制规律为
u = K e + u 0 u=Ke+u_{0} u=Ke+u0
表达式中
K
K
K 为比例系数(即图中的 Kp),
u
0
u0
u0 是控制量的基准,也就是
e
=
0
e=0
e=0 时的控制作用(比如阀门的起始开度,基准电信号等等)。比例控制的优点一是简单(是最简单的调节器),而是快速,能够对偏差
e
e
e 作出即时的反应,偏差一旦产生,调节器就立即产生作用,使被控量朝着减小偏差的方向变化。
比例调节器的控制作用的大小取决于比例系数
K
K
K 。
K
K
K 越大,调节器的作用越强,这有利于减小系统的静差。对于具有自平衡性的控制对象,比例调节器是难以消除系统静差的。另外比例系数
K
K
K 也不是可以无限增大的。当
K
K
K 值过大时将使系统的动态性能变差,引起控制系统的震荡,严重时导致系统失控。
5.2.2 比例积分调节器
在比例调节器的基础上增加积分环节,就形成了比例积分调节器(PI)其控制规律为
u = K ( e + 1 T i ∫ 0 t e d t ) + u 0 u=K(e+\frac{1}{T_{i}}\int_0^t e dt)+u_{0} u=K(e+Ti1∫0tedt)+u0
表达式中
T
i
T_{i}
Ti 称为积分时间,下标
i
i
i 指的是积分的意思,PI 调节器中的积分环节对于偏差带有累积作用,只要偏差
e
e
e 不为零,他将通过累积作用影响控制量,减小偏差,直至偏差为零控制作用不再发生变化,系统才达到稳态。因此积分环节的加入有助于消除系统静差。
积分时间
T
i
T_{i}
Ti 越小,积分环节作用越强。积分时间
T
i
T_{i}
Ti 越大,积分环节作用越弱。这对减小系统的超调,提高系统的稳定性是有利的,但是消除系统静差的过程将变慢。
积分时间
T
i
T_{i}
Ti 的选取可以根据被控制对象的特性选取,对于管道压力,流量等滞后性不大的被控对象来说可以选取较小的积分时间
T
i
T_{i}
Ti,对于温度这类滞后性较强的对象来说可选区较大的
T
i
T_{i}
Ti 。
5.2.3 比例积分微分调节器
在比例积分调节器的基础上增加微分环节,就形成了比例积分微分调节器(PID)其控制规律为
u = K ( e + 1 T i ∫ 0 t e d t + T d d e d t ) + u 0 u=K(e+\frac{1}{T_{i}}\int_0^t e dt+T_{d}\frac{de}{dt})+u_{0} u=K(e+Ti1∫0tedt+Tddtde)+u0
表达式中 T d T_{d} Td 称为微分时间,下标 d d d 指的是微分的意思,加入的微分环节输出为
u = K ( 0 + 0 + T d d e d t ) + 0 u=K(0+0+T_{d}\frac{de}{dt})+0 u=K(0+0+Tddtde)+0
即 u d = K T d d e d t 即 u_{d}=KT_{d}\frac{de}{dt} 即ud=KTddtde
微分环节能对偏差的任何变化做出及时反应,产生控制作用,以调整系统的输出,阻止偏差的变化。偏差变化越快,微分环节输出
u
d
u_{d}
ud 越大,反馈校正量则越大。
微分作用有助于减小系统超调,克服系统震荡,使系统趋于稳定。微分环节加快了系统动作速度,减小调整时间,从而改善了系统动态性能。
6. PID 算法数字化
数字计算机控制系统在实质上属于一种采样控制系统,他只能根据采样时刻的偏差值来计算测量。所以我们需要对比例积分微分调节器的公式进行离散化处理,用数字式的差分方程代替连续系统的微分方程。
而这一典型就是现在广泛应用的数字示波器,对于数字示波器来说它无法直接量化模拟信号,那么如果需要量化正弦波这样的模拟信号,数字示波器是怎么做到的呢?数字示波器通过模数转换器(ADC)可以采集到某一时刻正弦波信号上的一个电压值,那么当在某一时刻以某一速率持续的采样就可以得到一系列的采样点,这些采样点也就是构成正弦波信号的一组电压值,将这些电压值转换成屏幕坐标,并将这些坐标使用线段连接起来即可获得一段接近正弦波信号的图像,所以只要采样速率越高(采样速率趋近无穷大),那么得到的图像就越接近于真实连续,这就是数学中极限的与微分的思想。
6.1 数字化
在控制系统中,设计算机每隔一段时间
Δ
t
Δt
Δt 对控制信号采集一次,并向被控制对象的执行机构发出一次控制信号,
Δ
t
Δt
Δt 我们一般使用
T
T
T 表示,称为采样周期。
设在采样时刻
t
=
i
⋅
Δ
t
=
i
⋅
T
(
i
为采样序号
,
i
=
0
,
1
,
2
,
3
,
.
.
.
,
n
)
t=i·Δt=i·T(i 为采样序号,i=0,1,2,3,...,n)
t=i⋅Δt=i⋅T(i为采样序号,i=0,1,2,3,...,n),这里采样序号
i
i
i 就是采样的次数,采样周期
T
T
T 就是每次采样持续(花费)的时间,所以
t
=
i
⋅
Δ
t
=
i
⋅
T
t=i·Δt=i·T
t=i⋅Δt=i⋅T 就是将每次采样的时间叠加起来得到从开始到现在总的持续时间,这就类似对时间进行积分。
偏差值为
e
(
i
T
)
e(iT)
e(iT),简记为
e
(
i
)
e(i)
e(i) 或
e
i
ei
ei,指的就是当前时间(采样序号x周期=当前时间)的偏差值。
控制量为
u
(
i
T
)
u(iT)
u(iT) 简记为
u
(
i
)
u(i)
u(i) 或
u
i
ui
ui,即得到如下
e i = e ( i ) = e ( i T ) , u i = u ( i ) = u ( i T ) e_{i} = e(i)=e(iT), u_{i} = u(i)=u(iT) ei=e(i)=e(iT),ui=u(i)=u(iT)
当采样周期 T T T 足够小时可以利用数值计算的方法对 PID 的积分项和微分项进行无限逼近,得到如下的近似
积分部分
∫ 0 t e d t ≈ ∑ j = 0 i e ( j ) ⋅ Δ t \int_0^t e dt \approx \sum_{j=0}^i e(j) · Δt ∫0tedt≈j=0∑ie(j)⋅Δt
即 ≈ ∑ j = 0 i e ( j ) ⋅ T 即 \approx \sum_{j=0}^i e(j) · T 即≈j=0∑ie(j)⋅T
即 ≈ T ⋅ ∑ j = 0 i e ( j ) 即 \approx T·\sum_{j=0}^i e(j) 即≈T⋅j=0∑ie(j)
即 ≈ T ⋅ ∑ j = 0 i e j 即 \approx T·\sum_{j=0}^i e_{j} 即≈T⋅j=0∑iej
微分部分
d e ( t ) d t ≈ Δ e Δ t \frac{de(t)}{dt} \approx \frac{Δe}{Δt} dtde(t)≈ΔtΔe
即 ≈ e ( i ) − e ( i − 1 ) Δ t 即 \approx \frac{e(i)-e(i-1)}{Δt} 即≈Δte(i)−e(i−1)
即 ≈ e ( i ) − e ( i − 1 ) T 即 \approx \frac{e(i)-e(i-1)}{T} 即≈Te(i)−e(i−1)
即 ≈ e i − e i − 1 T 即 \approx \frac{e_{i}-e_{i-1}}{T} 即≈Tei−ei−1
所以当采样周期 T T T 足够小时,被控过程和连续控制过程十分接近,这种情况被称为 准连续控制。
6.2 位置式 PID
现在我们将前面一点已经数字化的积分和微分部分的表达式代入下方的表达式中,替换下方表达式的积分微分部分
u = K ( e + 1 T i ∫ 0 t e d t + T d d e d t ) + u 0 u=K(e+\frac{1}{T_{i}}\int_0^t e dt+T_{d}\frac{de}{dt})+u_{0} u=K(e+Ti1∫0tedt+Tddtde)+u0
首先替换积分部分的表达式,如下
u i = K ( e i + 1 T i ⋅ T ⋅ ∑ j = 0 i e j + T d d e d t ) + u 0 u_{i}=K(e_{i}+\frac{1}{T_{i}}·T·\sum_{j=0}^i e_{j}+T_{d}\frac{de}{dt})+u_{0} ui=K(ei+Ti1⋅T⋅j=0∑iej+Tddtde)+u0
再替换微分部分的表达式,如下
u i = K ( e i + 1 T i ⋅ T ⋅ ∑ j = 0 i e j + T d ⋅ e i − e i − 1 T ) + u 0 u_{i}=K(e_{i}+\frac{1}{T_{i}}·T·\sum_{j=0}^i e_{j}+T_{d}·\frac{e_{i}-e_{i-1}}{T})+u_{0} ui=K(ei+Ti1⋅T⋅j=0∑iej+Td⋅Tei−ei−1)+u0
最后整理一下得到
u i = K [ e i + T T i ⋅ ∑ j = 0 i e j + T d T ⋅ ( e i − e i − 1 ) ] + u 0 u_{i}=K[e_{i}+\frac{T}{T_{i}}·\sum_{j=0}^i e_{j}+\frac{T_{d}}{T}·(e_{i}-e_{i-1})]+u_{0} ui=K[ei+TiT⋅j=0∑iej+TTd⋅(ei−ei−1)]+u0
由于表达式的输出值
u
i
u_{i}
ui 与执行机构的位置(例如阀门开度)一一对应,因此通常把该式称数字位置式 PID 控制算式。
在控制系统中,如果执行机构采用调节阀,则控制量对应于阀门开度,它表征了执行机构位置,这时控制器应该采用数字位置式 PID 控制算式。
6.3 增量式 PID
何为增量式 PID 呢?从前面的推导知道位置式 PID 控制器能够输出具体大小的控制量来控制阀门的开合角度,比如输出 30 度控制阀门开启 30 度,输出 0 度控制阀门关闭,这种控制量称为绝对控制量。与绝对控制量相对的概念是相对控制量,所谓相对控制量指的是 PID 输出的控制值是相对值,比如输出 30 度控制阀门开启 30 度,输出 -30 度控制阀门关闭,所以相对值是相对上一次值的改变量。基于相对值的思想,通过位置式 PID 即可推导出增量式 PID。
根据前面位置式 PID 推导,可知 u i u_{i} ui 为 (注意 T i T_{i} Ti 的下标 i i i 指的是积分的意思,而不是采样索引)
u i = K [ e i + T T i ⋅ ∑ j = 0 i e j + T d T ⋅ ( e i − e i − 1 ) ] + u 0 u_{i}=K[e_{i}+\frac{T}{T_{i}}·\sum_{j=0}^i e_{j}+\frac{T_{d}}{T}·(e_{i}-e_{i-1})]+u_{0} ui=K[ei+TiT⋅j=0∑iej+TTd⋅(ei−ei−1)]+u0
根据 u i u_{i} ui 可知 u i − 1 u_{i-1} ui−1 为(注意 T i T_{i} Ti 的下标 i i i 指的是积分的意思,而不是采样索引,不参与运算)
u i − 1 = K [ e i − 1 + T T i ⋅ ∑ j = 0 i − 1 e j + T d T ⋅ ( e i − 1 − e i − 2 ) ] + u 0 u_{i-1}=K[e_{i-1}+\frac{T}{T_{i}}·\sum_{j=0}^{i-1} e_{j}+\frac{T_{d}}{T}·(e_{i-1}-e_{i-2})]+u_{0} ui−1=K[ei−1+TiT⋅j=0∑i−1ej+TTd⋅(ei−1−ei−2)]+u0
将上式 u i u_{i} ui 和 u i − 1 u_{i-1} ui−1 代入下方表达式
Δ u i = u i − u i − 1 Δu_{i}=u_{i}-u_{i-1} Δui=ui−ui−1
可得
Δ u i = K [ e i + T T i ⋅ ∑ j = 0 i e j + T d T ⋅ ( e i − e i − 1 ) ] + u 0 − K [ e i − 1 + T T i ⋅ ∑ j = 0 i − 1 e j + T d T ⋅ ( e i − 1 − e i − 2 ) ] + u 0 Δu_{i}=K[e_{i}+\frac{T}{T_{i}}·\sum_{j=0}^i e_{j}+\frac{T_{d}}{T}·(e_{i}-e_{i-1})]+u_{0} - K[e_{i-1}+\frac{T}{T_{i}}·\sum_{j=0}^{i-1} e_{j}+\frac{T_{d}}{T}·(e_{i-1}-e_{i-2})]+u_{0} Δui=K[ei+TiT⋅j=0∑iej+TTd⋅(ei−ei−1)]+u0−K[ei−1+TiT⋅j=0∑i−1ej+TTd⋅(ei−1−ei−2)]+u0
求和部分相减剩余 T T i e i \frac{T}{T_{i}}e_{i} TiTei
Δ u i = K [ e i − e i − 1 + T T i e i + T d T ( e i − 2 e i − 1 + e i − 2 ) ] Δu_{i}=K[e_{i}-e_{i-1}+\frac{T}{T_{i}}e_{i}+\frac{T_{d}}{T}(e_{i}-2e_{i-1}+e_{i-2})] Δui=K[ei−ei−1+TiTei+TTd(ei−2ei−1+ei−2)]
将 K K K 展开到各项,得
Δ u i = K e i − K e i − 1 + K T T i e i + K T d T ( e i − 2 e i − 1 + e i − 2 ) Δu_{i}=Ke_{i}-Ke_{i-1}+K\frac{T}{T_{i}}e_{i}+K\frac{T_{d}}{T}(e_{i}-2e_{i-1}+e_{i-2}) Δui=Kei−Kei−1+KTiTei+KTTd(ei−2ei−1+ei−2)
再展开
Δ u i = K e i − K e i − 1 + K T T i e i + K T d T e i − 2 K T d T e i − 1 + K T d T e i − 2 Δu_{i}=Ke_{i}-Ke_{i-1}+K\frac{T}{T_{i}}e_{i}+K\frac{T_{d}}{T}e_{i}-2K\frac{T_{d}}{T}e_{i-1}+K\frac{T_{d}}{T}e_{i-2} Δui=Kei−Kei−1+KTiTei+KTTdei−2KTTdei−1+KTTdei−2
再合并同类项
Δ u i = ( K + K T T i + K T d T ) e i + ( − K − 2 K T d T ) e i − 1 + ( K T d T ) e i − 2 Δu_{i}=(K+K\frac{T}{T_{i}}+K\frac{T_{d}}{T})e_{i}+(-K-2K\frac{T_{d}}{T})e_{i-1}+(K\frac{T_{d}}{T})e_{i-2} Δui=(K+KTiT+KTTd)ei+(−K−2KTTd)ei−1+(KTTd)ei−2
将 K K K 提出到表达式外部,得
Δ u i = K ( 1 + T T i + T d T ) e i + K ( − 1 − 2 T d T ) e i − 1 + K ( T d T ) e i − 2 Δu_{i}=K(1+\frac{T}{T_{i}}+\frac{T_{d}}{T})e_{i}+K(-1-2\frac{T_{d}}{T})e_{i-1}+K(\frac{T_{d}}{T})e_{i-2} Δui=K(1+TiT+TTd)ei+K(−1−2TTd)ei−1+K(TTd)ei−2
再令
d 0 = K ( 1 + T T i + T d T ) , d 1 = − K ( 1 + 2 T d T ) , d 2 = K ( T d T ) d_{0}=K(1+\frac{T}{T_{i}}+\frac{T_{d}}{T}), d_{1}=-K(1+2\frac{T_{d}}{T}), d_{2}=K(\frac{T_{d}}{T}) d0=K(1+TiT+TTd),d1=−K(1+2TTd),d2=K(TTd)
所以使用 d 0 , d 1 , d 2 d_{0},d_{1},d_{2} d0,d1,d2 将 Δ u i Δu_{i} Δui 简化为
Δ u i = d 0 e i + d 1 e i − 1 + d 2 e i − 2 Δu_{i}=d_{0}e_{i}+d_{1}e_{i-1}+d_{2}e_{i-2} Δui=d0ei+d1ei−1+d2ei−2
增量式算法只需要保持当前时刻以前三个时刻的偏差值即可。增量式 PID 算法与位置式 PID 算法相比,有一定的优点,位置式算法每次输出的计算都要用到过去偏差的累加值
∑ j = 0 i e j \sum_{j=0}^i e_{j} j=0∑iej
容易产生较大的积累误差,而增量式算法只须计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小。
7. 总结
通过前面的推导过程我们已经对 PID 的推导以及离散化有了详细的认识,但是在这里我们还要思考两个问题。
问题 1:为什么 PID 算法公式中积分时间
T
i
T_{i}
Ti 和微分时间
T
d
T_{d}
Td 一个在分母上一个在分子上?
这主要存在一个量纲上的考虑。
积分部分是比例增益乘以误差,再乘以时间单位除以积分时间常数,所以把积分时间常数 T i T_{i} Ti 放在分母和积分需要乘以的时间单位作抵消,这样子积分的量纲还是比例增益乘以误差。(比如对速度 v v v 乘以时间 t t t 得到路程 s s s,此时的量纲由速度变成了路程,此时将积分时间 T i T_{i} Ti 放置到分母,最终将与时间 t t t 抵消,最终量纲还是速度。 )
微分部分也是同样道理,比例增益乘以误差,再乘以微分时间常数,除以时间单位,把微分时间 T 放在分子,和微分需要除以的时间单位抵消,微分的量纲还是比例增益除以误差。
至于比例增益 K p K_{p} Kp 的量纲,就由误差和输出之间的物理关系和数学模型决定。
问题 2:为什么在 PID 积分部分离散化的推导中,误差 e ( j ) e(j) e(j) 还需要乘以采样周期 Δ t Δt Δt 再进行累加?
这是因为积分的本质是计算面积,将一块不规则形状完整面积精细划分成若干个长度( y y y 轴的值)不同,宽度(采样时间 Δ t Δt Δt)相同的长方形,再将这些长方形面积进行累加最终得到不规则形状完整面积,比如对瞬时速度 v v v 对时间 t t t 进行积分,积分后得到路程 s s s ,积分后面积的大小对应的就是路程的远近,如下图表示。
所以为了使得误差
e
(
j
)
e(j)
e(j) 累加接近积分的效果就必须乘以
Δ
t
Δt
Δt。
问题 3:PID 离散化推导表达式中 T T T 和 T i T_{i} Ti, T d T_{d} Td 的区别?
随然都用于描述时间,但是它们之间是完全不同的, T T T 表示的是采样时间 Δ t Δt Δt,而 T i T_{i} Ti, T d T_{d} Td 则是一个待定常数,是用于调整系统的稳定性,让系统能够根据不同的应用场景进行调整。