PID 算法的数学模型
在工业控制中,PID 及其衍生算法是应用最广泛的一类算法,称得上“万能算法”。对研发人员来说,只要能把 PID 的设计与实现真正掌握,多数常规控制问题都能应对。而且 PID 还是最能体现反馈思想的控制算法:经典不一定复杂,很多时候它反而是最简单的。
PID 算法的一般形式
PID 算法通过误差信号控制被控量,控制器由比例、积分、微分三个环节叠加而成。设 t 时刻:
- 输入量为:

- 输出量为:

- 偏差量为:

PID 控制器的连续时间输出一般形式为:

PID 算法的数字离散化
假设采样间隔为 T,在第 k 个 T 时刻:



PID 离散化后可写成:

进一步整理为位置式 PID:

其中:
- 比例参数
Kp:控制器输出与输入偏差成比例。系统一旦出现偏差,比例调节立即作用,减少偏差。特点是响应快,但会降低系统稳定性,且有余差。

- 积分参数
Ki:用于消除静差,即系统稳定后输出与设定值的差值。积分环节本质上是偏差累积,把累计误差叠加到系统上以抵消静差。

- 微分参数
Kd:反映偏差信号的变化趋势,根据偏差变化趋势进行超前调节,提高系统快速性。

以上是位置型 PID 的离散形式。另一种常见表达是增量式 PID。由位置式可得上一时刻输出:

于是增量式 PID 为:

增量式的结果只与最近三次偏差有关,有利于提高系统稳定性。最终输出应等于:

再加上增量调节值。
本文要解决的问题
PID 的重要性不必多说。本文通过例子说明算法过程,并重点解释:
- 什么是 PID?为什么需要 PID?PID 能达到什么作用?
- 比例环节 P 的作用:基础比例调节,缺点是产生稳态误差;为什么会有稳态误差?
- 积分环节 I 的作用:消除稳态误差,缺点是增加超调;积分为什么能消除稳态误差?
- 微分环节 D 的作用:加快惯性响应、减弱超调趋势;为什么能减弱超调?
- 各比例系数的关系与调节方向。

何为 PID 以及为何需要 PID?
PID 控制的整体框图如下:设定一个输出目标,反馈系统传回输出值;如果与目标不一致,就存在误差,PID 根据误差调整输入,直到输出达到设定值。

为什么不能简单地“温度一到就停止”?比如目标温度 30℃,希望输出快速且没有抖动地到达 30℃。如果一到 30℃ 就停止加热,余温仍然会让温度继续升高;同时系统还会通过空气散热。因此普通开关式控制无法满足快速稳定的要求。

这正是需要 PID 的原因:普通控制手段难以让输出快速、稳定地达到设定值。
控制器的 P、I、D 项选择
常用的控制规律特点如下:
- 比例控制 P:能较快克服扰动,输出响应快,但不能很好稳定在理想值,有余差。适用于控制通道滞后较小、负荷变化不大、控制要求不高、允许一定余差的场合。
- 比例积分控制 PI:工程中应用最广。积分在比例基础上消除余差。适用于控制通道滞后较小、负荷变化不大、不允许有余差的场合。
- 比例微分控制 PD:微分具有超前作用,适合容量滞后的控制通道,能明显改善动态性能。纯滞后较大或测量信号有噪声或周期性振动的场合不宜采用微分。
- 比例积分微分控制 PID:在比例基础上引入积分消除余差,再加入微分提高稳定性,适用于时间常数或容量滞后较大、控制要求较高的场合,如温度控制、成分控制等。
关于时间滞后:包括容量滞后和纯滞后。容量滞后通常又分测量滞后和传送滞后。测量滞后来自热电偶、热电阻、压力传感器等检测元件建立平衡的过程;传送滞后来自传感器、变送器、执行机构等设备。纯滞后多由物料传输导致,例如大窑玻璃液位,从投料机动作到核子液位仪检测需要较长时间。
控制规律的选用必须根据过程特性和工艺要求确定,不能认为 PID 在任何情况下都是最优。若 PID 仍达不到要求,还需考虑串级控制、前馈控制、大滞后控制等方案。Kp、Ti、Td 三个参数的设定非常关键,可参考 演示PID三个参数的控制作用。编程时通常只能先设定大致数值,再在系统运行时反复调试,所以调试阶段必须能随时修改和记忆这三个参数。
数字 PID 控制器
模拟 PID 控制规律的离散化关系如下:

数字 PID 控制器的差分方程为:

参数的自整定
在通用仪表等应用场合,工作对象不确定,无法为用户预设固定参数,因此需要参数自整定:通过多次测量为新工作对象寻找一套参数,并记忆下来。常用整定方法有临界比例度法、衰减曲线法和经验法。
1. 临界比例度法(Ziegler-Nichols)
步骤:
- 将纯比例控制器接入闭环系统,设置积分时间常数 Ti = ∞,微分时间常数 Td = 0。
- 将比例增益 K 设为最小,加入阶跃扰动,一般改变设定值,观察响应曲线。
- 由小到大增大比例增益 K,直到闭环系统出现振荡。
- 系统出现持续等幅振荡时,记录临界增益 Ku 和临界周期 Tu。
- 由表 1 确定 PID 参数。

采用临界比例度法时需要注意:
- 系统应工作在线性区,不要让控制阀出现开、关极端状态,否则可能得到“极限循环”,实际系统早已发散振荡。
- 不同对象特性下,按表求出的参数不一定都能得到满意结果,需要在线校正。
- 适用于临界振幅不大、振荡周期较长的过程;锅炉汽包水位等不允许稳定边界试验的系统不适用。
- 一般只适用于二阶以上高阶对象或一阶加纯滞后对象,否则纯比例控制下不会出现等幅振荡。
若被控对象的静态放大倍数为 Kp=Δy/Δu,增益乘积 KpKu 可视为系统的最大开环增益,通常认为 Ziegler-Nichols 闭环试验整定法的适用范围是:

- 当
KpKu > 20 时,应采用更复杂的控制算法。
- 当
KpKu < 2 时,应使用能补偿传输延迟的控制策略。
- 当
1.5 < KpKu < 2 时,控制精度要求不高的场合仍可使用 PID,但需修正表 1;建议采用 SMITH 预估控制和 IMC 控制策略。
- 当
KpKu < 1.5 时,控制精度要求不高的场合仍可用 PI 控制器,微分作用意义不大。
2. 衰减曲线法
衰减曲线法与临界比例度法不同,闭环设定值扰动试验采用衰减振荡,通常为 4:1 或 10:1。整定步骤:
- 纯比例控制器下,先将比例增益 K 设为较小值,系统投入运行。
- 系统稳定后做设定值阶跃扰动,观察响应;若衰减太快则减小 K,反之增大 K,直到出现 4:1 衰减振荡过程,记录此时的比例增益 Ks 和振荡周期 Ts。

- 利用 Ks 和 Ts,按下表经验公式计算 PID 参数整定值。

10:1 衰减曲线法类似,只是用 Tr 代入计算。
注意:给定干扰不能太大,一般在 5% 左右;必须在工艺参数稳定时才能加干扰;反应快的系统难以得到严格 4:1 衰减曲线,一般以被调参数来回波动两次达到稳定来近似。投运时先将 K 放在较小数值,把 Ti 减小到整定值,再将 Td 逐步放大到整定值,最后把 K 拉到整定值,避免输出剧烈变化。
3. 经验整定法
3.1 方法一 A
- 确定比例增益:使 PID 为纯比例调节,输入设定为系统允许最大值的 60%~70%;由 0 逐渐加大比例增益到系统振荡,再反过来减小到振荡消失,记录此时增益;设定 P 为当前值的 60%~70%。
- 确定积分时间常数 Ti:P 确定后,设定较大的 Ti 初值,逐渐减小到系统振荡,再加大到振荡消失;设定 Ti 为当前值的 150%~180%。
- 确定微分时间常数 Td:一般可设为 0。如需设定,方法与 P、Ti 类似,取不振荡时的 30%。
- 系统带载联调,再对 PID 参数微调。
3.2 方法一 B
- PI 调节:
- 纯比例作用下将比例度由大变小,直到产生周期振荡,再逐渐加宽比例度至系统充分稳定。
- 然后逐渐缩短积分时间直到产生振荡,再稍加长积分时间直到振荡停止。
- PID 调节:
- 纯比例作用下寻找起振点。
- 加大微分时间使振荡停止,随后把比例度调小使振荡再产生,再加微分时间,如此反复,直到加大微分时间也不能停止振荡;取此前的微分时间最佳值,并把比例度调大一些直到振荡停止。
- 将积分时间调成与微分时间相同,若又产生振荡,则加大积分时间直到停止。
3.3 方法二
可以先从经验范围内选取 Ti,如需微分则取 Td=(1/3~1/4)Ti,再对比例度 δ 进行试凑。δ 减小可以用增加 Ti 来补偿,基本不影响调节质量。因此先确定 Ti、Td,再确定 δ 也可行,甚至可能更快。
3.4 方法三
实际调试中可以先设定经验值,再根据调节效果修改:
- 流量系统:P(%) 40~100,I(分) 0.1~1
- 压力系统:P(%) 30~70,I(分) 0.4~3
- 液位系统:P(%) 20~80,I(分) 1~5
- 温度系统:P(%) 20~60,I(分) 3~10,D(分) 0.5~3
整定口诀:
阶跃扰动投闭环,参数整定看曲线;先投比例后积分,最后再把微分加;
理想曲线两个波,振幅衰减 4 比 1;比例太强要振荡,积分太强过程长;
动差太大加微分,频率太快微分降;偏离定值回复慢,积分作用再加强。
4. 复杂调节系统的参数整定
以串级调节系统为例,主、副回路相互影响。若主要保证主参数调节质量,整定较容易;若主、副参数都要求高,则较复杂。常用“先副后主”两步法:
- 主回路闭合,主控制器比例度 100%、积分时间最大、微分时间零;用 4:1 衰减曲线整定副回路,得到副回路比例增益 K2s 和振荡周期 T2s。
- 将副回路视为主回路的一个环节,用 4:1 衰减曲线法整定主回路,得到主控制器 K1s 和 T1s。
- 再按经验公式算出主、副回路参数,先放副回路参数,再放主回路参数;不理想则适当调整。
若主、副对象时间常数相差不大,按 4:1 衰减曲线法整定可能出现“共振”。此时可适当减小副回路比例度或积分时间,同时加大主回路比例度或积分时间,错开主、副回路的振荡周期,避免共振。若主、副对象特性太接近,则应考虑方案本身是否合适。
实际应用体会
一是用数字 PID 控制算法调节直流电机速度。利用光电开关获取电机转动脉冲,单片机 MSP430G2553 通过 1s 定时测量脉冲个数来计算转速,测量误差约 0.5 转。将测得转速与给定转速比较得到误差,再通过 PWM 调整占空比,等效调整输出电压。实验系统只能在 30 转/秒到 150 转/秒之间控制:给定值高于 150 时,实际速度只能保持 150 转/秒;给定值低于 30 转/秒时,直流电机转轴实际不转,但误差过大导致转速快速升高,随后又停止,循环往复,无法达到控制效果。实测转速稳态精度约 ±3 转,控制时间约 4~5 秒。
二是用数字 PID 控制算法调节直流减速电机位置。用与电机同轴转动的精密电位器测量转动角度,与给定位置比较产生误差,再按一定关系转换成 PWM 信号控制电机。由于输出量是位置信号,理想情况下应先对直流减速电机建模分析,近似得到系统传递函数,再整定 PID 参数。当时的实验更多依赖想象和现象拟定控制关系,缺少清晰理论指导,实验深度不够。
怎样形象理解 PID 算法?
小明要维护一个持续漏水且漏水速度不固定的水缸,目标是把水面维持在设定位置。
- 他刚开始一直守在缸边,后来每 30 分钟才检查一次,结果水快漏完;改成每 3 分钟一次,又白跑。最后选定每 10 分钟检查一次,这个检查时间就是采样周期。
- 开始时用瓢加水,后来改用桶,几次把水加溢出;最后用盆,刚好合适。加水工具的大小就是比例系数。
- 为了不溢出,他给水缸装了一个漏斗,让水慢慢加入;但速度又变慢了。他通过更换不同口径的漏斗控制加水速度,漏斗的时间就是积分时间。
- 任务要求更及时时,他常备一盆水,一发现水位低就直接倒进去,及时性提高但会超调。后来在水位上方凿孔并接管道流回备用桶,流出的快慢就是微分时间。
比例控制是最简单的控制方式,输出与输入误差成比例。根据设备不同,温度控制的比例带一般为 2%~10%。
不过仅用 P 控制会产生稳态误差 offset,所以通常加入积分控制 I 来消除稳态误差。比例带与 P 控制输出的关系如下:

比例控制中,经过一定时间后误差稳定在一定值时,这个误差就叫稳态误差 off set。仅用比例控制时,负载特性和控制特性曲线的交点和设定值不一致,是产生稳态误差的原因。比例带小时稳态误差会小。为消除稳态误差,可以设置手动复位值 MR。

手动复位公式:

把 MR 设为可变,就可以整定调节器输出。只要手动操作输出相当于 off set 的量,就能与目标值一致。不过实际自动控制中,每次出现 off set 都手工 reset 不现实,后面讲的积分控制会自动消除稳态误差。

积分控制 I 的作用,就是在出现稳态误差时自动改变输出量,使其与手动复位动作的输出量等效,从而消除稳态误差。只要误差存在,积分控制就会根据积分时间持续改变输出,直到误差消除。
积分时间的定义:当积分项和比例项对控制器输出的贡献相同时,即积分作用重复了一次比例作用时所花费的时间,就是积分时间。

微分控制 D 通过误差变化率预报误差信号的未来变化趋势,提供超前控制作用,使被控过程趋于稳定,因此常用来抵消积分控制带来的不稳定趋势。

微分时间的定义:当输入量持续以一定速率变化时,微分项和比例项对控制器输出的贡献相同,即微分作用重复了一次比例作用时所花费的时间,就是微分时间。


实际中如何使用 PID?
冬天洗热水澡要先把管道里的冷水放掉,等水温接近目标后,再一点点调节水龙头冷热比例和出水量;洗浴中感到温度不合适,再微调。这个过程本身就是 PID:水温变化速度与调节速度不匹配,存在滞后效应,所以每次只调一点,等一等再感知。滞后效应是引入 PID 的原因。
负反馈系统普遍存在滞后效应。运放、线性电源等很少提 PID,是因为其滞后延时极短,即便引入负反馈和延时,也很难在芯片有效带宽内形成振荡;而且电源输出通常接大电容,频响接近直流,也不容易振荡。工业控制中的温度等对象滞后严重,往往达到 ms 甚至 10ms 级,直接用负反馈会导致激励与反馈不同步,引起强烈振荡,因此必须引入 PID。
以高频感应加热设备将工件从 25℃ 加热到 700℃ 为例:
- 25~600℃:100% 全功率加热。由于温差太大,前期全功率快速接近目标。600℃ 是经验值,考虑滞后效应不能等到 700℃ 再停,否则会冲过头。
- 600℃ 以上:开启 P 控制。P 根据测量值与目标值的误差决定反馈大小:
反馈 = P × (当前温度 - 目标温度)。但 P 以误差存在为前提,因此永远到不了目标值。假设稳态只能到 650℃,即使有滞后也不会超过 700℃ 太多。
- 640℃ 左右:开启 I 控制。P 的稳态极限造成误差,I 通过累加误差获得一个对应 700℃ 的驱动值,并逐步取代 P,逼近目标。为了不积累过大,I 不宜过早介入;可设置误差门限,把大误差按比例缩小处理。
- 接近目标温度后:开启 D 控制。D 本质上是抑制剧烈变化,适合在目标值附近做最后微调。
总结
PID 并不复杂,但不少人因为不了解三者使用条件,从加热一开始就把 P、I、D 全部投入,结果自然不好。通常 P 适合温度接近目标值时使用;I 在 P 达到稳态极限时投入;D 在目标值附近使用。实际项目中 D 不一定用。
如果硬要找实物类比:开关电源中,TL431 基准/比较器可视为 P,输出滤波电容 C 是 I,输出滤波电感是 D,二者作用完全等价。假设目标温度 700℃,参考工作点可粗略看作:600~800℃ 用 P,640~760℃ 用 I,690~710℃ 用 D,具体必须以实验为准。
最后给一个通俗解释:设计一个东西时,先打样,样和想要的接近但细节不到位,这是 P;样有差异需要修改拟合逼近,这是 I;到定稿后就不允许随意修改,即使修改也有限制,这是 D。