找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3684

积分

0

好友

488

主题
发表于 2 小时前 | 查看: 4| 回复: 0

PID 算法是工业控制领域应用最广泛的算法之一,堪称经典中的经典。它不仅是很多控制系统的基石,同时也最能体现反馈控制的思想。在 云栈社区 的技术讨论中,PID 一直是嵌入式与自动化方向的高频话题。掌握其设计与实现,对于研发人员来说足以应对大多数常见的控制问题。

PID 算法的一般形式

PID 算法通过误差信号控制被控量,控制器本身是比例(P)、积分(I)、微分(D)三个环节的加和。在 t 时刻,我们规定:

  1. 输入量为:
    i(t) 数学表达式

  2. 输出量为:
    O(t) 数学表达式

  3. 偏差量为:
    err偏差量公式
    u(t) PID算法标准表达式

PID 算法的数字离散化

假设采样间隔为 T,则在第 K 个 T 时刻:

偏差表达式为:
err(k) 离散偏差公式

积分环节用加和的形式表示为:
积分环节求和形式

微分环节用斜率的形式表示为:
微分环节斜率形式

最终,PID 算法离散化后的式子为:
PID离散化完整公式

上式可进一步表示为经典的 PID 位置型公式:
PID位置型离散公式

在式中:

  • 比例参数 k_p:控制器的输出与输入偏差值成比例关系。一旦出现偏差,比例调节会立即产生作用以减少偏差。
    比例系数kp
    特点:过程简单快速、能够加快调节并减小误差;但会使系统稳定性下降,且容易产生余差。

  • 积分参数 k_i:主要用来消除静差(系统稳定后输出值与设定值间的差值)。它实际上是一个偏差累积的过程,通过累积误差来抵消系统固有的静差。
    积分系数ki

  • 微分参数 k_d:反应偏差信号的变化趋势,能够根据趋势进行超前调节,从而增加系统的快速性。
    微分系数kd

以上是位置型 PID 的离散形式。另一种常见的表述是增量式 PID。根据上文,我们可以轻松地推导出 u(k-1) 的表达式:
u(k-1)离散公式

那么,增量调节值 Δu(k) 即为:
Δu(k)增量式公式

这就是离散化 PID 的增量式表达。不难看出,增量式的结果仅与最近三次的偏差有关,这大大增强了系统的稳定性。需要注意的是,最终的输出量 u(k) 应该是 u(k-1) 加上增量调节值。
u(k)输出量

为什么需要 PID?

设想一个场景:我们希望将水温控制到 30℃。普通的“到位即停”策略,会由于加热惯性(余热)导致温度继续上冲,加上环境散热,系统难以稳定。

温度控制目标曲线

PID 控制的整体过程是:设定一个目标值,反馈系统传回实际输出值并计算误差,PID 控制器根据此误差实时调整输入量,最终使输出快速、平稳地维持在设定值。
PID控制系统框图

本质上,引入 PID 的原因在于,普通控制手段无法让输出既快速又稳定地达到并锁定在设定值。

控制器 P、I、D 项的选择

深入了解各种控制规律的适用场景,有助于我们更精准地进行 技术文档 中提及的参数整定查阅:

(1) 比例控制(P):能较快地克服扰动,动作快,但不能很好地稳定在理想值,有余差。适用于通道滞后小、负荷变化不大、且允许有余差的场合。

(2) 比例积分控制(PI):在比例的基础上消除余差。应用极为广泛,适用于通道滞后小、负荷变化不大,但不允许有余差的场合。

(3) 比例微分控制(PD):微分具有超前作用。对于容量滞后大的控制通道,引入微分能显著提高系统的动态性能。不适合纯滞后大、或测量信号有噪声的系统。

(4) 比例积分微分控制(PID):一种较为理想的控制规律,结合了三者的优点(消除余差、提高稳定性)。适用于通道滞后大、控制要求高的场合。

值得注意的是,时间滞后包含容量滞后(测量滞后与传送滞后)和纯滞后。控制规律的选用必须依照过程特性和工艺要求来定,而不是所有场合都盲目套用 PID。参数 KpTiTd 的设定是核心,调试阶段需要程序具备随时修改和记忆参数的能力。

数字 PID 控制器

模拟 PID 的离散化,其对应关系通常如下所示:
模拟与离散化形式对照表

进而在数字系统中,我们可以得到差分方程的形式,将其拆解为比例项、积分项和微分项:
数字PID差分方程及各项拆解

参数的自整定

在某些场景下,工作对象不确定,需要引入参数自整定的概念。本质是通过 N 次测量为新对象寻找一套合适的参数。

1. 临界比例度法(Ziegler-Nichols)

在纯比例作用下,逐渐增加增益直到产生等幅振荡。

  1. 将纯比例控制器接入系统(Ti = ∞,Td = 0)。
  2. 由小到大改变比例增益 K,直到闭环出现持续等幅振荡。
  3. 记录此时的临界增益 Ku 和临界周期 Tu
  4. 按下表得出 PID 控制器参数。

Ziegler-Nichols整定参数表

注意事项:试验时应使系统工作在线性区;对于无自平衡特性的对象,按表求得的参数可能使衰减率偏大;部分具有大时间常数的单容对象可能无法用此法整定。一般认为该法的适用范围最好满足:
KpKu约束条件

  • $K_pK_u > 20$ 时,应采用更复杂的控制算法。
  • $K_pK_u < 2$ 时,应使用能补偿传输迟延的控制策略。
  • $1.5 < K_pK_u < 2$ 且精度要求不高时,可修正使用 PID。
  • $K_pK_u < 1.5$ 时,微分作用已不大,使用 PI 控制器即可。

2. 衰减曲线法

闭环扰动试验采用衰减振荡(如 4:1 或 10:1)。

  1. 置纯比例作用,系统稳定后做设定值阶跃扰动。
  2. 寻找出现 4:1 衰减振荡的过程(如下图 a),记录此时的比例增益 Ks 和振荡周期 Ts
    衰减曲线法波形对比
  3. 利用 KsTs 按下表计算出控制器整定参数。
    衰减曲线法参数整定表

注意:给定的干扰不能太大(约 5%);对于反应快的系统(如流量),很难得到严格的 4:1 曲线,一般来回波动两次达稳定即可。

3. 经验整定法

  • 常用经验值:流量系统 P 40~100,I 0.1~1 min;压力系统 P 30~70,I 0.4~3 min;液位系统 P 20~80,I 1~5 min;温度系统 P 20~60,I 3~10 min,D 0.5~3 min。
  • 整定口诀:阶跃扰动投闭环,参数整定看曲线;先投比例后积分,最后再把微分加;理想曲线两个波,振幅衰减4比1;比例太强要振荡,积分太强过程长;动差太大加微分,频率太快微分降;偏离定值回复慢,积分作用再加强。

4. 复杂调节系统的参数整定

以串级系统为例,常采用“先副后主”的两步整定法。先将主回路的比例度放 100%,积分最大,微分为零,按 4:1 衰减法整定副回路;随后把副回路视为主回路的一个环节,同样用 4:1 衰减法整定主回路,最后按经验公式计算主、副回路参数。需留意,如果主、副对象时间常数相近,调整不当可能会引发“共振”。

PID 核心概念的形象理解

我们可以通过一个“漏水的水缸”来类比:

  • 采样周期:小明每隔一段时间检查一次水位。检查间隔太长,水漏光;太短,无用功。这个“检查时间”就是采样周期。
  • 比例系数:小明用盆、桶或瓢加水。工具的大小决定了加水的剧烈程度,这就是比例系数。
  • 积分时间:为了避免一次性加水溢出,小明在水缸上放一个漏斗,让水慢慢流进。漏斗口径的大小控制了流速,这对应了积分时间。
  • 微分时间:为了应对突发要求,小明在水面上方凿了个孔,多余的水会通过管子漏走。这个漏出的快慢就是微分时间。

比例带、稳态误差与手动复位

比例控制(P) 的输出与误差成比例关系。下图清晰地展示了比例带(PB)与操作输出(MVp)之间的关系:
比例带与输出关系图

纯粹的比例控制往往会产生稳态误差(Off set)。从响应曲线可见,比例带大或小时,测量值 PV 都会与设定值 SV 存在固定的偏差。
比例控制稳态误差示意图

为了消除这个稳态误差,我们可以设定一个手动复位值(Manual Reset,MR)。公式表现为:
含手动复位值的输出公式

通过调整 MR,可以将负荷线与控制特性线交点位移,从而让系统输出尽量逼近目标值。
手动复位调整响应图

然而,每次都手动复位并不实用。于是,积分控制(I) 应运而生——它能自动改变输出量,起到与手动复位等价的效果。从下图可以看到,在不同积分时间下,I 控制输出叠加 P 控制输出后,能使合成控制量持续增强以消除误差。
积分时间与PI输出关系图

微分控制(D) 则是通过误差的变化率来预测未来的趋势,以此提供超前控制,使被控过程趋于稳定。从波形对比中可以看出,微分时间越长,合成的 P+D 控制作用就越强。
微分时间与PD输出关系图

设定值改变时的控制效果

不同的 P、I、D 参数组合,会带来截然不同的控制效果。理想的效果是快速响应且无过大超调,而过强或过弱的参数则会导致超调过大或稳定过慢。
设定值改变时的各种控制效果对比

我们还可以根据测量值的变动波形,按照如下象限图来定性调整 PID 参数。
根据测量值波动调整PID参数的四象限图

实际应用体会与总结

在实际项目中,PID 算法的运用需要灵活的阶段性策略。

以直流电机控制为例,利用 PID 算法调节转速时,通常是通过光电开关测速、单片机计算偏差并输出 PWM 来调节电压。这类系统往往受限于电机的物理特性。

而以高频感应加热从 25℃ 加热到 700℃ 为例,我们可以这样操作:

  1. 全力加热阶段(如 25~600℃):温差巨大,采用 100% 全功率输出。
  2. P 算法阶段(如 600℃ 以上):根据当前温度与目标的误差进行反馈,进一步逼近目标(如达到 650℃)。
  3. I 算法阶段(如 640~760℃):在 P 的稳态极限附近介入,通过累积误差寻找能维持 700℃ 的驱动值,从根本上消除 P 算法产生的净差。
  4. D 算法阶段(如 690~710℃):接近目标时进行微动,抑制剧烈变化,维稳。

很多人刚一上手就把 P、I、D 三个环节都加上,结果反而控制不好。本质上,P 是“打个差不多的大样”,I 是“来回修改拟合至逼近理想”,D 则是“定稿后不允许大改,只做有限微调”。




上一篇:代币狂热消退:AI 巨额投入反噬,企业开始反思投资回报率
下一篇:设计师如何用设计思维和创新方法,打破产品同质化困局?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-5-31 23:25 , Processed in 0.769812 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表