PID控制算法详解

这篇具有很好参考价值的文章主要介绍了PID控制算法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 微分调节

pid通过x的误差量去控制y的变化,ARM嵌入式开发,单片机,嵌入式硬件,PID,PID控制算法,STM32
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 三种调节的工作方式和原理,现在来观察一下三种调节的调节响应效果。
pid通过x的误差量去控制y的变化,ARM嵌入式开发,单片机,嵌入式硬件,PID,PID控制算法,STM32

4. 应用场景

通过上面的介绍可以知道类似于需要将某一个被控物理量保持稳定控制的场合比如维持平衡,稳定温度,稳定转速等,PID 都能发挥出其作用。典型的应用有火箭的姿态控制,舰艇火炮瞄准控制,汽车的定速巡航,发动机转速控制,自动驾驶车辆的转向,无人机的悬停控制,相机稳定器,相机云台,工业中的液位控制等等。

5. PID 公式推导

在此之前我们已经详细的分析了 PID 控制的原理,已经对 PID 控制理论有了一定的认识,所以下面我们来具体的分析 PID 数学表达式的推导与离散化。

5.1 控制系统定义

在控制系统中,控制偏差 e 指的是设定值 w 与实际输出值 y 进行比较的结果即

e = w − y e = w-y e=wy

所谓 PID 调节器就是按照偏差 e 的比例(P),积分(I),微分(D)运算的线性组合构成控制量的一类调节器如下图所示。
pid通过x的误差量去控制y的变化,ARM嵌入式开发,单片机,嵌入式硬件,PID,PID控制算法,STM32
前面说过在实际应用中,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+Ti10tedt)+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+Ti10tedt+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)可以采集到某一时刻正弦波信号上的一个电压值,那么当在某一时刻以某一速率持续的采样就可以得到一系列的采样点,这些采样点也就是构成正弦波信号的一组电压值,将这些电压值转换成屏幕坐标,并将这些坐标使用线段连接起来即可获得一段接近正弦波信号的图像,所以只要采样速率越高(采样速率趋近无穷大),那么得到的图像就越接近于真实连续,这就是数学中极限的与微分的思想
pid通过x的误差量去控制y的变化,ARM嵌入式开发,单片机,嵌入式硬件,PID,PID控制算法,STM32

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=iT(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=iT 就是将每次采样的时间叠加起来得到从开始到现在总的持续时间,这就类似对时间进行积分。
偏差值为 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 0tedtj=0ie(j)Δt

即 ≈ ∑ j = 0 i e ( j ) ⋅ T 即 \approx \sum_{j=0}^i e(j) · T j=0ie(j)T

即 ≈ T ⋅ ∑ j = 0 i e ( j ) 即 \approx T·\sum_{j=0}^i e(j) Tj=0ie(j)

即 ≈ T ⋅ ∑ j = 0 i e j 即 \approx T·\sum_{j=0}^i e_{j} Tj=0iej

微分部分

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(i1)

即 ≈ e ( i ) − e ( i − 1 ) T 即 \approx \frac{e(i)-e(i-1)}{T} Te(i)e(i1)

即 ≈ e i − e i − 1 T 即 \approx \frac{e_{i}-e_{i-1}}{T} Teiei1

所以当采样周期 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+Ti10tedt+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+Ti1Tj=0iej+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+Ti1Tj=0iej+TdTeiei1)+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+TiTj=0iej+TTd(eiei1)]+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+TiTj=0iej+TTd(eiei1)]+u0

根据 u i u_{i} ui 可知 u i − 1 u_{i-1} ui1 为(注意 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} ui1=K[ei1+TiTj=0i1ej+TTd(ei1ei2)]+u0

将上式 u i u_{i} ui u i − 1 u_{i-1} ui1 代入下方表达式

Δ u i = u i − u i − 1 Δu_{i}=u_{i}-u_{i-1} Δui=uiui1

可得

Δ 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+TiTj=0iej+TTd(eiei1)]+u0K[ei1+TiTj=0i1ej+TTd(ei1ei2)]+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[eiei1+TiTei+TTd(ei2ei1+ei2)]

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=KeiKei1+KTiTei+KTTd(ei2ei1+ei2)

再展开

Δ 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=KeiKei1+KTiTei+KTTdei2KTTdei1+KTTdei2

再合并同类项

Δ 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+(K2KTTd)ei1+(KTTd)ei2

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(12TTd)ei1+K(TTd)ei2

再令

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+d1ei1+d2ei2

增量式算法只需要保持当前时刻以前三个时刻的偏差值即可。增量式 PID 算法与位置式 PID 算法相比,有一定的优点,位置式算法每次输出的计算都要用到过去偏差的累加值

∑ j = 0 i e j \sum_{j=0}^i e_{j} j=0iej

容易产生较大的积累误差,而增量式算法只须计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小。

7. 总结

通过前面的推导过程我们已经对 PID 的推导以及离散化有了详细的认识,但是在这里我们还要思考两个问题。

问题 1:为什么 PID 算法公式中积分时间 T i T_{i} Ti 和微分时间 T d T_{d} Td 一个在分母上一个在分子上?
pid通过x的误差量去控制y的变化,ARM嵌入式开发,单片机,嵌入式硬件,PID,PID控制算法,STM32
这主要存在一个量纲上的考虑。

积分部分是比例增益乘以误差,再乘以时间单位除以积分时间常数,所以把积分时间常数 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 ,积分后面积的大小对应的就是路程的远近,如下图表示。

pid通过x的误差量去控制y的变化,ARM嵌入式开发,单片机,嵌入式硬件,PID,PID控制算法,STM32
所以为了使得误差 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 则是一个待定常数,是用于调整系统的稳定性,让系统能够根据不同的应用场景进行调整。文章来源地址https://www.toymoban.com/news/detail-783724.html

到了这里,关于PID控制算法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [控制原理基础]浅谈PID算法

    一、PID使用背景 当今的自动控制技术都是基于反馈的概念。即一个In Loop闭环的理论,反馈理论的要素包括三个部分:测量、比较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。 PID(Proportion Intergration Differentiation)算法是比例微分积分控制的

    2024年02月10日
    浏览(37)
  • 电赛控制类PID算法实现

    一、什么是PID 学过自动控制原理的对PID并不陌生,PID控制是对偏差信号e(t)进行比例、积分和微分运算变换后形成的一种控制规律。PID 算法的一般形式: PID控制系统原理框图 二、PID离散化 对PID连续系统离散化,从而方便在处理器上实现,PID 离散表示形式: 离散化后最终得

    2024年02月06日
    浏览(30)
  • PID控制算法代码,供大家参考

    分享一个C语言PID控制器代码: 【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~~

    2024年02月16日
    浏览(41)
  • FPGA实现PID控制算法(含仿真)

    相信大家对于PID控制算法,都不感到陌生了,平衡车就是靠它平衡起来的,还有飞控的平衡算法也是它,以及FOC中的闭环控制中也是用的它,它不仅简单,而且易于理解。那么本篇文章将简要介绍一下算法的原理,然后带大家使用FPGA来实现(C语言实现过程特别简单)。 PID取自

    2024年02月15日
    浏览(32)
  • 智能算法实现PID智能车控制系统

    PID控制是自动控制领域中产生最早,应用最广的一种控制方法。本文以论述PID参数先进整定方法开始,介绍了近几年得到的最新研究成果。接下来,从PID控制的结构形式实际控制工程需求和实现条件分析了PD控制的独特优点和理论依据。在众多的PID调整方法中,本文选择了内

    2024年02月08日
    浏览(43)
  • PID控制算法,带C语言源码实现

    PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。PID控制算法是结合比例、积分和微分三种环节于一体的控制算法。PID算法是连续系统中技术最为成熟、应用最为广泛的一种控制算法。 PID控制算法出现于20世纪30至40年代,适用于对被控对象模型了解不清

    2024年04月29日
    浏览(32)
  • PID相关参数讲解:1、比例系数Kp与静态误差

    来研究静态误差的同学,应该是对PID的原理有一定理解了,简单的概念也不用过多重复。 比例控制时PID控制中最简单的一个,很多能用代码编写PID代码的同学,也不一定理解这个比例系数Kp的意义,以及比例控制的原理。 假设有这么一个水缸。 你要让那个水缸的水位维持在

    2024年02月11日
    浏览(26)
  • 毕业设计-基于 PID 控制算法仿真算法研究- Matlab

    目录 前言 课题背景和意义 实现技术思路 一、 基本原理  二、无超调 PID 控制器的设计 三、无超调 PID 设计的验证 代码 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。

    2024年02月06日
    浏览(51)
  • 【智能车】模糊PID控制原理详解与代码实现

    本文主要由三部分构成:模糊PID控制器的原理,模糊PID控制器C++的实现与测试。 模糊PID控制流程如下图所示,把目标值 Xtarget 与输出值 Xout 的误差 e 与 e 的变化率 de/dt 作为模糊控制器的输入,模糊控制器先对输入进行模糊化处理,接着进行模糊推理,最后把模糊推理的结果

    2024年02月02日
    浏览(36)
  • STM32写的PID算法温度控制程序示例

    使用STM32写的PID算法温度控制程序示例,该程序通过读取温度传感器的数据,并采用PID控制算法,输出PWM信号来控制加热器的工作,以实现温度的稳定控制。  以上代码基于STM32F10x的单片机实现,使用了定时器来输出PWM信号,以控制加热器的加热功率。同时,该程序还实现了

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包