PID控制算法详解

news2024/9/22 23:17:18

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=wy

所谓 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+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)可以采集到某一时刻正弦波信号上的一个电压值,那么当在某一时刻以某一速率持续的采样就可以得到一系列的采样点,这些采样点也就是构成正弦波信号的一组电压值,将这些电压值转换成屏幕坐标,并将这些坐标使用线段连接起来即可获得一段接近正弦波信号的图像,所以只要采样速率越高(采样速率趋近无穷大),那么得到的图像就越接近于真实连续,这就是数学中极限的与微分的思想
请添加图片描述

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 一个在分母上一个在分子上?
请添加图片描述
这主要存在一个量纲上的考虑。

积分部分是比例增益乘以误差,再乘以时间单位除以积分时间常数,所以把积分时间常数 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 则是一个待定常数,是用于调整系统的稳定性,让系统能够根据不同的应用场景进行调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cs231n计算机视觉课程-(数据驱动方法)

姿态、环境、遮挡这些问题算法都因该是robust 课程中提到具体写一个识别猫咪的算法是不稳定的,容易出错的。 所以提出了Data-Driven Approach的方法 一个是训练函数, 这函数接受图片和标签,然后输出标签 另一个则是预测函数,输…

团队管理的七个要点

要掌握团队管理的要点和做好团队管理工作,不是一件容易的事,但也远非想象中那么难。首先,我个人比较推荐所有团队管理者都能阅读下《经理人参阅:团队管理》(注意该书仅可其官网获得)这本佳作。相信会为你带…

vue ssr的hydration问题

我的网站百家饭OpenAPI平台是vuepress写的,前段时间我还写了个专栏讲了vuepress2.0教学。 最开始我们的网站是类似公司网站的情况,以介绍为主,后来又加了一个openapi编辑器,编辑器主要在一个页面里面,vuepress还勉强可…

【Springboot系列】Springboot接管所有Controller,magic-api源码阅读

系列文章地址:Spring Boot学习大纲,可以留言自己想了解的技术点 最近在项目中使用了一个第三方的包 magic-api,节省了很多的时间,整体来说就是只用写sql就好了,不用写service,controller那些,全…

Flink从入门到精通系列(二)

3、Flink 部署 Flink 是一个非常灵活的处理框架,它支持多种不同的部署场景,还可以和不同的资源管 理平台方便地集成。 3.1、快速启动一个 Flink 集群 3.1.1、环境配置 Flink 是一个分布式的流处理框架,所以实际应用一般都需要搭建集群环境…

IO与NIO区别

一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 二、NIO和IO的主要区别 下表总结了Java I…

GM8773C 是一款 1:2 DSI 桥接芯片,可实现 4 路进 8 路出转换器功能、视频分离器功能。

GM8773C 是一款 1:2 DSI 桥接芯片,可实现 4 路进 8 路出转换器功能、视频分离器功能。芯片内集成了一个 4 路单一链路的 MIPI DSI 接收器和 8 路双链路 MIPI DSI 发送器。 接 收 器 每 路 可 以 支 持 到 2.0Gbps/lane , 可 以 最 高 支 持 到…

平面设计软件Corel CDR2023又开始放大招啦,CorelDRAW Graphics Suite 2023有哪些新增功能?

CorelDRAW 2023中文版即将于2023年3月14日,在苏州举行线上直播的2023新品发布会,本次发布会主题为“设计新生力,矢量新未来”。 发布会邀请思杰马克丁公司领导、Corel 中国区总经理分享思杰与 Corel 的合作模式及在 CorelDRAW 产品上推动历程…

JavaEE简单示例——Bean管理

简单介绍: 在这一章节我们会比较详细的介绍我们在之前的测试类中以及Bean管理XML配置文件中所使用到的类和方法,以及XML中配置的属性所代表的详细含义。以及之前我们反复提到但是一直没有详细的讲解的一个东西:容器。我们可以大致的有一个概…

react+antdpro+ts实现企业级项目四:注册页面实现及useEmotionCss的介绍

创建文件路径并注册register路由 在pages/User下创建Register文件夹并创建index.tsx文件 然后在config/routes创建register注册路由。注册完后,当在登陆页面点击注册按钮时就可以跳转到此注册页面而不会报404了。 export default [{path: /user,layout: false,rou…

PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总

1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception 1.1.问题描述 在执行训练任务的时候报错 单卡训练 python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml错误信息如下: T…

初识C++需要了解的一些东西(1)

目录🥇命名空间🏅存在原因🏵命名空间定义🎧命名空间的3种使用方式🏆C输入和输出🌝缺省参数🌜缺省参数概念⭐️缺省参数分类☀️函数重载🔥引用🌚引用概念🌓引…

LeetCode 热题 C++ 581. 最短无序连续子数组 617. 合并二叉树

581. 最短无序连续子数组 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入&am…

记录--Vue自定义指令实现加载中效果v-load(不使用Vue.extend)

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 网站效果演示:ashuai.work:8888/#/myLoad GitHub仓库地址代码:github.com/shuirongshu… 加载中思路分析 实现加载中效果,一般有两种方式: 第一种是:搞一…

双馈风力发电机-900V直流混合储能并网系统MATLAB仿真

MATLAB2016b主体模型:双馈感应风机模块、采用真实风速数据。混合储能模块、逆变器模块、转子过电流保护模块、整流器控制模块、逆变器控制模块。直流母线电压:有功、无功输出(此处忘记乘负一信号输出),所以是负的。蓄电…

鉴源论坛 · 观模丨模型检查综述

作者 | 李建文 华东师范大学软件工程学院博导 版块 | 鉴源论坛 观模 01 模型检查的历史 模型检查是一种起源于20世纪70年代末的形式化验证技术。该技术最初由Edmund M. Clarke、E. Allen Emerson和Joseph Sifakis提出,他们因在模型检查领域的贡献而获得了2007年的…

无监督循环一致生成式对抗网络:PAN-Sharpening

Unsupervised Cycle-Consistent Generative Adversarial Networks for Pan Sharpening (基于无监督循环一致生成式对抗网络的全色锐化) 基于深度学习的全色锐化近年来受到了广泛的关注。现有方法大多属于监督学习框架,即对多光谱&#xff0…

【Java闭关修炼】SpringBoot项目-贪吃蛇对战小游戏-配置git环境和项目创建

【Java闭关修炼】SpringBoot项目-贪吃蛇对战小游戏-配置git环境和项目创建项目的逐步细分配置git环境创建项目后端前后端不分离写法-url访问路径解析资源安装vuevue文件后端解析数据发送到前端页面解析出来项目的逐步细分 匹配界面:需要用微服务实况直播&#xff1…

Lesson 9.1 集成学习的三大关键领域、Bagging 方法的基本思想和 RandomForestRegressor 的实现

文章目录一、 集成学习的三大关键领域二、Bagging 方法的基本思想三、RandomForestRegressor 的实现在开始学习之前,先导入我们需要的库,并查看库的版本。 import numpy as np import pandas as pd import sklearn import matplotlib as mlp import sea…

Flink学习-单词统计WordCount

WordCount(流处理)通过socket数据源,去请求一个socket服务(9999),得到数据流然后统计数据流中出现的单词及其个数1.创建一个编程入口,生成环境StreamExecutionEnvironment streamEnv StreamExecutionEnvir…