浅析PID
浅析PID
参考学习SUNPLUS 《PID 调节控制做电机速度控制》后总结,在线阅读链接如下:
PID 控制器是一种广泛应用于工业控制系统的控制器,它通过将偏差的比例(Proportion)、积分(Integral)和微分(Differential)三个部分进行线性组合,生成控制量,从而对被控对象进行控制。PID 控制器的核心思想是通过对系统偏差的实时调整,使系统的输出尽可能接近期望值。
1 模拟 PID 控制原理
模拟 PID 控制系统的原理框图
如图 1-2 所示,模拟 PID 控制系统由 PID 控制器和被控对象(如电机)组成。系统的输入是给定值 ($r(t)$),输出是实际输出值 ($y(t)$),偏差 ($e(t) = r(t) - y(t)$) 作为 PID 控制器的输入,控制器的输出 ($u(t)$) 作为被控对象的输入。
PID 控制器的控制规律可以用以下公式表示:
$$ u(t) = K_p \left[ e(t) + \frac{1}{T_i} \int_0^t e(\tau) d\tau + T_d \frac{de(t)}{dt} \right] $$
如何理解呢?
其中:
- $K_p$:比例系数,决定比例控制的强度。
- $T_i$:积分时间,决定积分控制的强度。
- $T_d$:微分时间,决定微分控制的强度。
PID 控制器的三个部分
比例部分(Proportion)
比例部分的数学表达式为:
$$ K_p \cdot e(t) $$
作用:比例控制的作用是对偏差瞬间作出反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化。
特点:
- 比例系数 ($K_p$) 越大,控制作用越强,系统的响应速度越快,静态偏差越小。
- 但 $K_p$ 过大会导致系统振荡,破坏系统的稳定性。
总结:比例控制能够快速响应偏差,但过大的比例系数会导致系统不稳定。
积分部分(Integral)
积分部分的数学表达式为:
$$ \frac{K_p}{T_i} \int_0^t e(\tau) d\tau $$
作用:积分控制的作用是消除系统的稳态误差。只要存在偏差,积分控制的作用就会不断增加,直到偏差为零。
特点:
- 积分时间 ($T_i$) 越大,积分作用越弱,系统的响应速度变慢,但可以减少超调量,提高系统的稳定性。
- 积分时间 ($T_i$) 越小,积分作用越强,系统的响应速度加快,但可能会引起系统振荡。
总结:积分控制能够消除系统的稳态误差,但会降低系统的响应速度,并可能引起超调。
微分部分(Differential)
微分部分的数学表达式为:
$$ K_p \cdot T_d \cdot \frac{de(t)}{dt} $$
作用:微分控制的作用是根据偏差的变化趋势进行控制。它能够在偏差变化的瞬间提前给出控制信号,抑制系统的超调和振荡。
特点:
- 微分时间 ($T_d$) 越大,微分作用越强,能够有效抑制系统的超调和振荡。
- 但微分控制对噪声敏感,噪声较大的系统中应谨慎使用微分控制。
总结:微分控制能够加快系统的响应速度,减少超调,但对噪声敏感。
PID 控制器的综合作用
PID 控制器通过比例、积分和微分三个部分的组合,能够实现对系统的快速、稳定和精确控制:
- 比例控制:快速响应偏差,减少静态误差。
- 积分控制:消除稳态误差,确保系统最终达到期望值。
- 微分控制:抑制系统的超调和振荡,提高系统的稳定性。
从模拟 PID 到数字 PID 随着计算机技术的发展,模拟 PID 控制逐渐被数字 PID 控制取代。数字 PID 控制通过将模拟 PID 控制规律进行离散化处理,能够在计算机中实现 PID 控制算法。数字 PID 控制具有以下优点:
- 灵活性:可以通过软件调整 PID 参数,适应不同的控制需求。
- 精度:数字控制能够实现高精度的控制。
- 抗干扰:数字控制对噪声和干扰的抑制能力更强。
总结
PID 控制器通过比例、积分和微分三个部分的组合,能够实现对系统的快速、稳定和精确控制。比例控制负责快速响应偏差,积分控制负责消除稳态误差,微分控制负责抑制系统的超调和振荡。通过合理调整 PID 参数,可以使系统达到最佳的控制效果。
2. 数字 PID 控制
数字 PID 控制是通过计算机实现的 PID 控制算法。与模拟 PID 控制不同,数字 PID 控制是基于离散时间采样的控制方式,因此需要对连续的 PID 控制规律进行离散化处理。数字 PID 控制算法主要分为两种:位置式 PID 和 增量式 PID。
位置式 (全量式)PID 算法
离散化处理
由于计算机控制是采样控制,系统只能在每个采样时刻根据当前的偏差计算控制量,而不能像模拟控制那样连续输出控制量。因此,模拟 PID 控制中的积分和微分项需要进行离散化处理。离散化处理的方法为:以T 作为采样周期, 作为采样序号,则离散采样时间对应着连续时间 ,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分,可作如下近似变换 $$ t \approx kT \qquad (k = 0, 1, 2, \ldots) $$
$$ \int_0^t e(t) , dt \approx T \sum_{j=0}^{k} e(jT) = T \sum_{j=0}^{k} e_j $$
$$ \frac{de(t)}{dt} \approx \frac{e(kT) - e[(k-1)T]}{T} = \frac{e_k - e_{k-1}}{T} $$
容易联想到,这里使用中矩形法和一阶向后差分代替微分,此处的后是后方的意思,对应的是计算方法中的向前差分,那么,是否可以用三点向前公式来提高微分部分或者用牛顿-科特斯等其他方法替代呢?事实上是可以的,大部分比赛使用均为普通PID,下限高上限低,这种方法上限理论上会高一些,但调参压力应该会大很多,有没有必要在比赛中运用,效果有待测试。
龙格-库塔法 vs 自适应积分法 vs 校正欧拉公式 vs 三点公式 vs 牛顿-科特斯公式
特性 | 三点公式(微分) | 牛顿-科特斯公式(积分) | 校正欧拉公式(积分) | 自适应积分法(积分) | 龙格-库塔法(积分) |
---|---|---|---|---|---|
精度 | 高(优于一阶差分) | 高(梯形法和辛普森法优于矩形法) | 较高(接近梯形法,优于矩形法) | 高(动态调整步长,精度最高) | 非常高(四阶龙格-库塔法误差为 $O(h4)$) |
噪声敏感性 | 较低(中心差分对噪声不敏感) | 较高(对噪声敏感,可能需要滤波) | 较高(对噪声敏感,可能需要滤波) | 较高(对噪声敏感,可能需要滤波) | 较高(对噪声敏感,可能需要滤波) |
计算复杂度 | 低(只需当前和前或后两个点的数据) | 较高(尤其是辛普森法) | 适中(比辛普森法低,比矩形法高) | 高(动态调整步长,计算量较大) | 高(每一步需计算多个中间值) |
实时性 | 受限(需要未来数据) | 较好(只需当前和过去数据) | 较好(只需当前和过去数据) | 较差(动态调整步长,计算量大) | 较差(计算量大,不适合实时系统) |
存储需求 | 低(只需存储少量数据) | 较高(尤其是辛普森法需要更多历史数据) | 适中(需要存储当前和过去数据) | 高(需要存储中间计算结果) | 高(需要存储中间计算结果) |
适用场景 | 动态变化较快的系统 | 误差变化较平滑的系统 | 实时性要求较高的系统 | 高精度要求的复杂系统 | 高精度要求的复杂系统 |
还是先回到最初的地方。
- 采样周期 $ T $:计算机每隔 $ T $ 时间采样一次系统的偏差。
- 采样序号 $ k $:表示第 $ k $ 次采样时刻,$ k = 0, 1, 2, \dots $。
- 离散时间 $ kT $:对应连续时间 $ t $。
通过离散化处理,积分和微分项可以近似表示为:
- 积分项:用矩形法数值积分近似代替连续积分。
- 微分项:用一阶后向差分近似代替连续微分。
离散化后的 PID 控制规律为:
$$ u_k = K_p \left[ e_k + \frac{T}{T_i} \sum_{j=0}^k e_j + T_d \frac{e_k - e_{k-1}}{T} \right] $$
其中:
- $ u_k $:第 $ k $ 次采样时刻的控制量。
- $ e_k $:第 $ k $ 次采样时刻的偏差。
- $ e_{k-1} $:第 $ k-1 $ 次采样时刻的偏差。
- $ K_p $:比例系数。
- $ T_i $:积分时间。
- $ T_d $:微分时间。
位置式 (全量式) PID 的数学表达式
位置式 PID 的数学表达式可以写成:
$$ u_k = K_p e_k + K_i \sum_{j=0}^k e_j + K_d (e_k - e_{k-1}) $$
其中:
- $ K_i = \frac{K_p T}{T_i} $:积分系数。
- $ K_d = \frac{K_p T_d}{T} $:微分系数。
位置式 PID 的特点
如果采样周期足够小,则前面两个公式的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。
- 全量输出:位置式 PID 直接输出控制量的绝对值,因此每次输出都与过去的状态有关。
- 计算量大:由于需要对偏差进行累加,计算量较大。
- 风险:如果计算机出现故障,控制量的突变会导致执行机构的剧烈变化,可能引发生产事故。增量式PID可以避免这种现象。
2.2 增量式 PID 算法
增量式 PID 的定义
增量式 PID 是指数字控制器的输出是控制量的增量 $ \Delta u_k $,而不是控制量的绝对值。增量式 PID 适用于执行机构需要增量控制的系统。
增量式 PID 的推导
增量式 PID 可以通过位置式 PID 推导出来。首先,写出第 $ k-1 $ 次采样时刻的控制量:
$$ u_{k-1} = K_p e_{k-1} + K_i \sum_{j=0}^{k-1} e_j + K_d (e_{k-1} - e_{k-2}) $$
然后将位置式 PID 的第 $ k $ 次控制量 $ u_k $ 与第 $ k-1 $ 次控制量 $ u_{k-1} $ 相减,得到增量式 PID 的表达式:
$$ \Delta u_k = u_k - u_{k-1} = K_p (e_k - e_{k-1}) + K_i e_k + K_d (e_k - 2e_{k-1} + e_{k-2}) $$
进一步整理后,增量式 PID 的公式为:
$$ \Delta u_k = A e_k + B e_{k-1} + C e_{k-2} $$
其中:
- $ A = K_p \left(1 + \frac{T}{T_i} + \frac{T_d}{T}\right) $
- $ B = -K_p \left(1 + \frac{2T_d}{T}\right) $
- $ C = K_p \frac{T_d}{T} $
增量式 PID 的特点
- 增量输出:增量式 PID 输出的是控制量的增量,而不是绝对值。
- 计算量小:只需要当前和前两次的偏差值和唯一确定的$A$$B$$C$,计算量较小。
- 安全性高:即使计算机出现故障,控制量的变化也不会太大,避免了执行机构的剧烈变化。
增量式 PID 的递推公式
增量式 PID 可以通过递推公式实现位置式 PID 的控制:
$$ u_k = u_{k-1} + \Delta u_k $$
这种递推公式在计算机控制中广泛应用。
总结
为什么增量式 PID 在计算机故障时更稳定?
(1)不依赖历史误差的累积
在位置式 PID 中,积分项是对历史误差的累积:
u(k)=Kpe(k)+Ki∑i=0ke(i)+Kd[e(k)−e(k−1)]u(k)=Kpe(k)+Kii=0∑k**e(i)+K**d[e(k)−e(k−1)]
如果计算机故障导致历史误差数据丢失,积分项会突然变化,导致控制量 u(k)u(k) 发生剧烈波动。
在增量式 PID 中,积分项只依赖于当前误差 e(k)e(k),而不需要累积历史误差:
Δu(k)=Kp[e(k)−e(k−1)]+Kie(k)+Kd[e(k)−2e(k−1)+e(k−2)]Δu(k)=K**p[e(k)−e(k−1)]+Kie(k)+K**d[e(k)−2e(k−1)+e(k−2)]
即使计算机故障导致部分数据丢失,增量式 PID 也只影响当前时刻的控制量增量 Δu(k)Δu(k),而不会导致控制量 u(k)u(k) 的剧烈变化。
(2)增量输出的平滑性
- 增量式 PID 的输出是控制量的增量 Δu(k)Δu(k),而不是绝对量 u(k)u(k)。即使 Δu(k)Δu(k) 发生突变,控制量的实际输出 u(k)u(k) 也只是在前一时刻的基础上增加或减少一个较小的量,因此不会出现大幅度变化。
(3)故障恢复能力强
- 如果计算机故障后恢复正常,增量式 PID 可以从当前状态继续运行,而不需要重新初始化积分项。这种特性使得增量式 PID 在故障恢复后能够快速回到正常工作状态。
增量式 PID 的其他优点
除了在计算机故障时的稳定性外,增量式 PID 还具有以下优点:
- 无积分饱和问题:
- 位置式 PID 的积分项可能会因为误差的长期累积而导致积分饱和,而增量式 PID 的积分项只依赖于当前误差,因此不会出现积分饱和问题。
- 易于实现手动/自动切换:
- 增量式 PID 的输出是控制量的增量,因此可以方便地实现手动控制和自动控制之间的切换。
- 适合执行器带积分特性的系统:
- 对于执行器本身具有积分特性(如步进电机)的系统,增量式 PID 更容易实现控制。
特性 | 位置式 PID | 增量式 PID |
---|---|---|
输出形式 | 控制量的绝对值 | 控制量的增量 |
计算量 | 大(需要累加所有偏差) | 小(只需当前和前两次偏差) |
安全性 | 低(故障时控制量突变) | 高(故障时控制量变化小) |
适用场景 | 需要精确控制位置的系统 | 需要增量控制的系统 |
2.3.1 凑试法
凑试法是一种通过逐步调整控制器参数(比例 $K_p$、积分 $T_i$、微分 $T_d$)来优化控制系统性能的方法。它的特点是按照“先比例(P)、再积分(I)、最后微分(D)”的顺序进行调节。下面我用通俗易懂的语言来解释这个过程:
什么是凑试法?
凑试法是通过手动调整控制器的参数,观察系统的响应曲线,逐步找到最佳参数组合的方法。它的核心思想是:
- 先调整比例作用 $K_p$,让系统快速响应。
- 然后加入积分作用 $T_i$,消除系统的稳态误差。
- 最后加入微分作用 $T_d$,抑制系统的超调和振荡。
凑试法的步骤:
第一步:整定比例系数 $K_p$(纯比例控制)
- 将控制器的积分时间 $T_i$ 设为无穷大($T_i = \infty$),相当于关闭积分作用。
- 将微分时间 $T_d$ 设为零($T_d = 0$),相当于关闭微分作用。
- 只保留比例作用 $K_p$,并按照经验设置一个初始值。
- 将系统投入运行,观察系统的响应曲线。
- 由小到大调整 $K_p$,直到系统的过渡过程曲线呈现出1/4衰减度(即每个波峰的幅度是前一个波峰的1/4)。此时的比例系数 $K_p$ 是一个比较合适的值。
第二步:引入积分作用 $T_i$(PI控制)
- 在第一步的基础上,将比例系数 $K_p$ 减小到原来的 5/6(即 $K_p = \frac{5}{6} K_p$)。
- 引入积分作用,将积分时间 $T_i$ 从大到小逐步调整。
- 观察系统的响应曲线,直到系统的稳态误差被消除,同时过渡过程曲线仍然保持较好的动态性能。
第三步:引入微分作用 $T_d$(PID控制)
- 如果需要进一步优化系统性能,可以引入微分作用。
- 微分时间 $T_d$ 可以按照经验值设置,或者根据积分时间 $T_i$ 计算,通常取 $T_d = \left( \frac{1}{3} \sim \frac{1}{4} \right) T_i$。
- 将 $T_d$ 由小到大逐步调整,观察系统的响应曲线,直到系统的超调和振荡被有效抑制。
通俗理解:
你可以把控制系统想象成开车:
- 比例作用 $K_p$:就像你控制方向盘的力度。如果力度太小,车子会偏离路线;如果力度太大,车子会来回摆动。凑试法就是找到一个合适的力度,让车子既不偏离路线,又不会过度摆动。
- 积分作用 $T_i$:就像你发现车子总是偏向一边,于是你慢慢调整方向盘,直到车子回到正轨。积分作用就是消除系统的“偏差”。
- 微分作用 $T_d$:就像你提前预判路况,轻轻调整方向盘,防止车子突然转向过度。微分作用就是抑制系统的“振荡”。
注意事项:
- 1/4衰减度:这是凑试法的目标,表示系统的响应曲线在每个周期内衰减到前一个周期的1/4。这种响应既快速又稳定,适合大多数工业控制系统。
- 参数调整顺序:一定要按照“先P、再I、最后D”的顺序调整,否则可能会导致系统不稳定。
- 经验值:在实际应用中,初始参数和调整范围可以基于经验或系统特性进行设置。
总结:
凑试法是一种简单实用的控制器参数整定方法,通过逐步调整 $K_p$、$T_i$、$T_d$,最终让系统的响应既快速又稳定。虽然需要一定的经验和耐心,但它的灵活性和直观性使其在工业控制中广泛应用。
临界比例法
1. 什么是临界比例法?
临界比例法是通过调整控制器的参数(比例系数 $K_p$、积分时间 $T_i$、微分时间 $T_d$),使系统产生等幅振荡,然后根据振荡的特性来计算出最佳的控制器参数。
2. 临界比例法的步骤:
第一步:设置初始参数
- 将控制器的积分时间 $T_i$ 调到最大(相当于关闭积分作用),微分时间 $T_d$ 设为零(关闭微分作用),只保留比例作用 $K_p$。
- 让系统在自动控制下运行一段时间,确保系统处于稳定状态。
第二步:增大比例系数 $K_p$,找到临界点
- 逐渐增大比例系数 $K_p$,直到系统开始出现等幅振荡(即系统的输出在某个值附近来回波动,且波动的幅度保持不变)。
- 记录下此时的临界比例系数 $K_u$ 和临界振荡周期 $T_u$(即两个波峰之间的时间间隔)。
第三步:计算控制器参数
- 根据 $K_u$ 和 $T_u$,使用经验公式计算出控制器的最佳参数 $K_p$、$T_i$ 和 $T_d$。
- 按照“先调 $K_p$,再调 $T_i$,最后调 $T_d$”的顺序,将控制器的参数设置到计算值上。
- 如果效果还不够理想,可以进一步微调。
3. 临界比例法的注意事项:
- 临界比例系数过大:有些系统的临界比例系数 $K_u$ 可能非常大,导致系统接近“开关控制”(即控制器输出要么最大,要么最小),这对工业生产不利,可能会造成设备频繁启停,影响生产。
- 无法产生等幅振荡:有些系统即使将比例系数 $K_p$ 调到最大,也无法产生等幅振荡。这时,可以将最大刻度值作为临界比例系数 $K_u$ 来进行参数整定。
4. 通俗理解:
你可以把控制系统想象成一个调节水流的阀门。比例系数 $K_p$ 就像是你调节阀门的力度:
- 如果力度太小,水流的变化会很慢,系统反应迟钝。
- 如果力度太大,水流会来回波动,系统不稳定。
- 临界比例法就是找到一个刚好让水流开始等幅波动的力度($K_u$),然后根据这个力度和波动的频率($T_u$),计算出最佳的调节力度($K_p$)、调节速度($T_i$)和调节的提前量($T_d$)。
通过这种方法,你可以让系统既快速响应,又不会过度波动,达到最佳的控制效果。
Ziegler-Nichols 法进行PID参数整定的基本原理
临界比例度法的步骤
临界比例度法通过调整比例增益 KpK**p,使系统产生等幅振荡(临界振荡),然后根据临界振荡的特性确定 PID 参数。
步骤 1:仅使用比例控制
- 按临界比例法得到临界比例系数 $K_u$ 和临界振荡周期 $T_u$(即两个波峰之间的时间间隔),
步骤 2:计算 PID 参数
根据 Z-N 法的推荐公式,计算 PID 控制器的参数:
控制器类型 | $ K_p $ | $ T_i $ | $ T_d $ |
---|---|---|---|
P | $ 0.5 \cdot K_u $ | - | - |
PI | $ 0.45 \cdot K_u $ | $ 0.85 \cdot T_u $ | - |
PID | $ 0.6 \cdot K_u $ | $ 0.5 \cdot T_u $ | $ 0.12 \cdot T_u $ |
Z-N 法与增量式 PID 的结合
增量式 PID 的控制量增量公式为:
$$ \Delta u(k) = K_p[e(k) - e(k-1)] + \frac{K_p}{T_i}e(k) + K_pT_d[e(k) - 2e(k-1) + e(k-2)] $$
其中:
- $ K_i = \frac{K_p}{T_i} $ 是积分系数。
- $ K_d = K_pT_d $ 是微分系数。
使用 Z-N 法整定参数后,可以将 $ K_p $、$ T_i $、$ T_d $ 代入增量式 PID 公式中,实现控制器的设计。
Z-N 法与增量式 PID 的结合示例
假设通过 Z-N 法得到以下参数:
- 临界比例增益 $ K_{cr} = 10 $
- 临界振荡周期 $ T_{cr} = 2 $ 秒
根据 Z-N 法的推荐公式,PID 参数为:
$$ K_p = 0.6K_{u} = 6, \ T_i = 0.5T_{u} = 1, \ T_d = 0.125T_{u} = 0.25 $$
因此,增量式 PID 的控制量增量公式为:
$$ \Delta u(k) = 6[e(k) - e(k-1)] + \frac{6}{1}e(k) + 6 \cdot 0.25 [e(k) - 2e(k-1) + e(k-2)] $$
简化后得到:
$$ \Delta u(k) = 6[e(k) - e(k-1)] + 6e(k) + 1.5[e(k) - 2e(k-1) + e(k-2)] $$
总结
- Z-N 法 是一种经典的 PID 参数整定方法,通过临界振荡实验确定 $ K_p $、$ T_i $、$ T_d $。
- Z-N 法假设系统是线性的,对于非线性系统可能不适用。
- 增量式 PID 通过计算控制量的增量来调整输出,具有较强的鲁棒性和抗积分饱和能力。
- 将 Z-N 法与增量式 PID 结合,可以快速整定控制器参数,并提高系统的稳定性和可靠性。
信号采样周期选择
- 香农采样定律:采样频率必须至少是信号最高频率的两倍,否则信号会失真。
- 采样周期的选择:
- 响应快的系统(如流量、压力)选择较短的采样周期。
- 响应慢的系统(如温度、成分)选择较长的采样周期。
- 采样周期应远小于干扰信号的周期。
- 执行器响应慢时,采样周期可以适当延长。
- 计算机性能允许时,采样周期越短,控制效果越好。
- 对于滞后大的系统,采样周期通常为滞后时间的1/4~1/8。