PID控制器三种形式详解:标准型、串联型与并联型对比与应用

📅 2026/8/1 4:43:23
PID控制器三种形式详解:标准型、串联型与并联型对比与应用
1. 项目概述PID控制器的三种面孔在工业自动化、机器人控制乃至我们日常用的恒温热水壶里PID控制器都扮演着“大脑”的角色。它的任务很简单让一个物理量比如温度、速度、位置稳定地达到我们设定的目标值。但就是这个看似简单的任务背后却有着不同的实现“哲学”。今天我们不谈复杂的数学推导就从工程实践的角度掰开揉碎了讲讲最常见的三种PID形式标准型有时也叫理想型或串联型、串联型和并联型。很多刚接触PID的朋友看到资料里不同的传递函数和框图就头大其实它们的核心思想一脉相承只是“包装”和参数意义不同。理解这三者的区别与联系是进行控制器设计、参数整定乃至代码实现的基石。无论你是正在调试一台3D打印机的加热头还是在为无人机设计飞控算法这篇文章都能帮你理清思路知道在什么情况下该用哪种“面孔”的PID。2. 核心原理与结构形式拆解PID控制器的本质是对系统误差设定值与实际值之差进行三种运算的加权组合比例P、积分I、微分D。比例项决定了对当前误差的反应力度积分项用于消除稳态误差微分项则预测误差的变化趋势提供阻尼。所有形式的PID都包含这三项差异在于它们是如何组合在一起的。2.1 标准型PIDIdeal/Parallel PID这是教科书和大多数理论讲解中最常见的形式也被直接称为并联型PID注意这里存在命名混淆我们后面会澄清。它的输出计算公式非常直观[ u(t) K_p e(t) K_i \int_0^t e(\tau) d\tau K_d \frac{de(t)}{dt} ]或者在离散化的代码中你常会看到这样的位置式算法核心error setpoint - measurement; integral error * dt; derivative (error - prev_error) / dt; output Kp * error Ki * integral Kd * derivative; prev_error error;它的核心特点在于三个增益参数 (K_p, K_i, K_d) 是相互独立的。你在调节时改变 (K_p) 只会影响比例作用的强弱不会直接影响积分或微分环节。这种形式结构清晰物理意义明确是很多理论分析和现代控制器设计的起点。注意正因为其三个环节在输出端是并行相加的所以在不少工程领域和文献中它就被直接称为“并联型PID”。这导致了“并联型”这个术语有时指代的就是这种标准形式与我们后面要讲的另一种“并联型”容易混淆。阅读资料时务必根据上下文判断其具体结构。2.2 串联型PIDSeries PID串联型PID有时也被称为“经典PID”结构在早期的模拟控制器硬件中非常普遍。它的得名源于其传递函数可以看作是三个环节的串联[ G_c(s) K_p (1 \frac{1}{T_i s}) (1 T_d s) ]将其乘开你会得到[ G_c(s) K_p (1 \frac{1}{T_i s} T_d s \frac{T_d}{T_i}) ]注意这里多出了一项 (\frac{T_d}{T_i})这是一个常数项。在实际的模拟电路实现或某些数字算法中这项常常被忽略或单独处理因此常见的实用串联型PID传递函数为[ G_c(s) K_p (1 \frac{1}{T_i s})(1 T_d s) ]它与标准型的核心区别在于参数耦合。在串联型中你调节的通常是比例增益 (K_p)、积分时间 (T_i) 和微分时间 (T_d)。微分环节的作用受到积分时间 (T_i) 的影响尽管在简化模型中不明显更重要的是它的比例增益 (K_p同时作用于全部三个环节。这意味着当你调整 \(K_p时系统的比例、积分、微分作用会同时被放大或缩小。为什么会有这种结构这主要是历史原因。在模拟电路时代用一个放大器实现比例在前面串联一个积分电路再串联一个微分电路是物理上非常自然的实现方式电路设计相对简单。今天虽然数字控制已成主流但很多继承了模拟控制器传统的系统如某些品牌的工业PLC、过程控制器其内部算法模型仍然是串联型的。当你使用这些设备的“PID”功能块时你填入的参数往往是 (K_p, T_i, T_d)。2.3 并联型PIDParallel PID - 另一种定义这里就出现了术语的“重灾区”。如前所述标准型因其结构常被称为并联型。但在另一些语境下特别是与串联型明确对比时“并联型PID”特指下面这种形式[ G_c(s) K_p \frac{K_i}{s} K_d s ]看它的传递函数和标准型完全一样是的从数学形式上看这种定义的“并联型”就是标准型。那么区别在哪里区别在于对比的对象和强调的侧重点。当与“串联型”对比时“并联型”强调其三个环节P、I、D的传递函数是独立并联后再求和即 (K_p), (\frac{K_i}{s}), (K_d s) 这三个并行通路。此时“并联型”等同于“标准型”。当单独讨论“标准型”时可能不再强调“并联”这个词。因此关键在于理解标准型/并联型的参数是独立的 (K_p, K_i, K_d)而串联型的参数是耦合的 (K_p, T_i, T_d)其中 (K_i K_p / T_i), (K_d K_p * T_d)。为了绝对清晰我们用一个对比表格来总结特性标准型PID (常称并联型)串联型PID传递函数(K_p \frac{K_i}{s} K_d s)(K_p(1 \frac{1}{T_i s})(1 T_d s))核心参数比例增益 (K_p)积分增益 (K_i)微分增益 (K_d)比例增益 (K_p)积分时间 (T_i)微分时间 (T_d)参数关系三者完全独立(K_i K_p / T_i) (K_d K_p \times T_d)调节影响调(K_p)只影响比例作用调(K_p)同时影响P、I、D的强度主要应用场景现代数字控制、理论分析、大部分单片机、嵌入式算法传统过程控制、继承模拟设计的PLC、工业控制器物理意义增益直接对应输出分量大小时间常数对应响应速度更贴近过程控制习惯3. 参数转换与等效关系既然数学上可以描述同一个控制器那么标准型和串联型的参数之间必然存在等效转换关系。这是沟通两种“语言”的关键。从串联型传递函数忽略常数项出发 [ G_{series}(s) K_p (1 \frac{1}{T_i s})(1 T_d s) K_p (1 \frac{1}{T_i s} T_d s \frac{T_d}{T_i}) ] 通常忽略最后的常数项 (\frac{T_d}{T_i})得到 [ G_{series}(s) \approx K_p \frac{K_p}{T_i} \cdot \frac{1}{s} K_p T_d \cdot s ]将其与标准型传递函数对比 [ G_{parallel}(s) K_p \frac{K_i}{s} K_d \cdot s ]即可得到参数等效转换公式从串联型参数 ((K_p, T_i, T_d)) 转换为标准型参数 ((K_p, K_i, K_d)) [ K_p K_p, \quad K_i \frac{K_p}{T_i}, \quad K_d K_p \times T_d ]从标准型参数 ((K_p, K_i, K_d)) 转换为串联型参数 ((K_p, T_i, T_d)) [ K_p K_p, \quad T_i \frac{K_p}{K_i}, \quad T_d \frac{K_d}{K_p} ]实操心得这个转换非常重要。例如当你从一本讲过程控制、使用(T_i, T_d)的教材中学习了一套参数整定方法如齐格勒-尼科尔斯法得到了一组(K_p, T_i, T_d)。如果你想在你用C语言编写、采用标准型算法的STM32控制器上使用这组参数就必须先用上述公式转换为(K_p, K_i, K_d)否则系统响应会完全不对。反之亦然。4. 不同结构形式的工程应用与选型理解了原理和区别我们来看看在真实项目中如何选择。4.1 何时选择标准型并联型标准型因其参数独立、概念清晰是数字控制领域的绝对主流。几乎所有需要你自己编写控制代码的场景都首选标准型。嵌入式系统与单片机在STM32、Arduino、ESP32等平台上实现PID控制无论是控制电机转速、平衡车角度还是无人机姿态你代码里的Kp, Ki, Kd就是标准型参数。离散化实现简单直观。模拟仿真与算法研究在MATLAB/Simulink、Python中进行控制系统仿真或先进PID变种算法如抗积分饱和、微分先行研究时标准型是基础的构建模块。现代运动控制器许多伺服驱动器、步进电机驱动器的内部PID环虽然厂家提供的调试软件可能用条形图或百分比表示但其底层模型通常是标准型。它的优势在于解耦清晰调参时思维负担小。增大(K_i)就是加强积分作用对消除静差效果立竿见影不会意外改变系统刚度主要由(K_p)决定。易于实现变体很容易修改为增量式PID、微分先行PID等。与现代控制理论衔接好状态空间法、最优控制等设计方法得到的控制器常以标准型或类似形式呈现。4.2 何时会遇到串联型串联型主要活跃在特定的工业自动化领域尤其是连续过程控制。传统分布式控制系统DCS和可编程逻辑控制器PLC例如西门子S7-300/400、S7-1500中的PID功能块如PID_Compact罗克韦尔ABPLC的PID指令它们参数表里通常就是Gain (Kp)、Integral Time (Ti)、Derivative Time (Td)。这就是串联型。智能仪表许多独立的温度控制器、压力控制器、流量控制器其菜单里的参数也是P、I、D时间或倒数。过程工业遗产化工、冶金、电力等行业有大量沿用多年的控制回路和整定经验这些经验公式如Cohen-Coon法基于串联型模型推导。在这些行业工作必须熟悉串联型参数。选择或面对串联型时需要注意参数耦合这是最大的坑。如果你在这样一个控制器上把Gain (Kp)从1.0调到2.0意味着整个控制器的“音量”翻倍了包括积分和微分作用。这可能让你在调参时感到困惑觉得系统行为难以预测。整定经验可移植行业内的老师傅说“这个流量回路积分时间放到50秒”这个“50秒”是基于串联型概念的。你不能直接套用到标准型的(K_i)上。关注时间常数(T_i)和(T_d 的单位是时间秒、分钟直观表示了积分和微分作用的“速度”或“提前量”对于慢过程如温度控制来说这种表示有时比增益更直观。5. 从理论到代码实现要点与避坑指南理论说得再透最后都要落到代码或配置上。这里分享一些关键的实现经验和常见陷阱。5.1 离散化数字世界的必修课控制器在连续时间域用传递函数描述但在单片机或PLC中运行必须在离散时间域实现。核心是数值积分和微分。积分项的离散化常用累加矩形法。integral error * dt; // dt为采样周期这里有个巨坑dt必须是实际的采样周期时间。如果你的PID计算函数被不规则地调用或者采样周期dt在变化你必须准确测量并传入这个值否则积分作用会失真。更好的做法是使用定时器中断来确保固定频率的采样与计算。微分项的离散化常用后向差分。derivative (error - prev_error) / dt;微分项对噪声极度敏感测量信号中的微小毛刺会被dt放大导致输出剧烈抖动。因此在实际系统中纯微分项几乎从不直接使用。5.2 微分项的实战处理滤波与微分先行为了解决微分项噪声问题有两大实用技巧微分环节加低通滤波这不是标准的“理想微分”而是“实际微分”。其传递函数为 ( \frac{K_d s}{T_f s 1} )其中 (T_f) 是滤波时间常数。在数字实现中可以转化为一阶低通滤波。// 近似计算alpha dt / (Tf dt) filtered_derivative alpha * ((error - prev_error) / dt) (1 - alpha) * filtered_derivative; output Kp*error Ki*integral Kd*filtered_derivative;这能有效平滑微分信号是工程上的标配。微分先行Derivative on Measurement更优秀的策略。不对误差微分而是对测量值微分。// 标准型对误差微分derivative (error - prev_error) / dt; // 微分先行对测量值微分derivative (measurement - prev_measurement) / dt; derivative -(measurement - prev_measurement) / dt; // 注意负号 prev_measurement measurement;为什么这样做设定值setpoint的突变会导致误差突变进而产生一个巨大的微分冲击“微分冲击”。微分先行只对平缓变化的测量值微分完全避免了设定值突变带来的冲击同时仍能对扰动做出快速反应。在绝大多数场合都推荐使用微分先行。5.3 积分饱和与抗饱和处理当系统输出长时间被限幅例如加热器已满功率100%运行但温度还远未达到目标积分项会不断累积“wind up”变成一个非常大的值。当温度终于接近目标值时误差变号但巨大的积分值需要很长时间才能“卸掉”导致系统严重超调甚至振荡。抗积分饱和是工业PID的必备功能。常见方法积分分离当误差过大时暂时关闭积分项。积分限幅给积分项integral设置一个合理的上下限。Clamping方法在计算输出后如果输出饱和且误差与输出饱和方向一致即积分还在往错误方向累加则停止积分。output Kp*error Ki*integral Kd*derivative; if (output output_max) { output output_max; if (error 0) { // 输出正向饱和且误差为正积分应停止累加 // 实际上在下次积分前不累加即可。这里是一种逻辑判断。 } } // 类似处理负向饱和...5.4 采样周期选择采样周期dt是数字PID的灵魂参数但它常常被忽视。经验法则采样频率应为系统闭环带宽的10~30倍。对于响应慢的系统如温度控制带宽可能低于0.1Hz采样周期选1-5秒都行。对于电机速度控制带宽可能10-100Hz采样周期可能需要1-10毫秒。太慢的坏处会丢失信息导致控制性能下降甚至不稳定。太快的坏处对计算资源要求高在噪声明显的系统中过快的采样会让相邻采样点间的差值用于微分几乎全是噪声恶化控制效果。有时故意降低采样频率反而能起到低通滤波的效果让控制更平稳。6. 调参实战从手动摸索到系统方法调参是PID应用的终极挑战。这里提供一个可操作的流程和思路。6.1 调参前的准备工作确定控制目标是要求快速无超调还是允许少量超调但必须快速稳定抑或是要求对扰动抑制能力强目标不同参数取向不同。确保系统安全将输出限幅设置在一个绝对安全的范围。初始参数务必保守小(K_p)大(T_i)(K_d0)。关闭D和I先从纯比例P控制开始。这是理解被控对象动态特性的第一步。6.2 手动调参步骤标准型参数为例整定比例增益 (K_p)将 (K_i) 和 (K_d) 设为0。逐渐增大 (K_p)直到系统出现持续、等幅的振荡。此时记录下的 (K_p) 称为临界增益 (K_u)振荡周期称为临界周期 (T_u)。如果系统无法承受振荡则增大 (K_p到系统响应较快但刚好不出现持续振荡的状态。此时的 \(K_p作为基础。引入积分增益 (K_i)保持一个稍小于步骤1最终值的 (K_p。逐渐减小 (K_i注意增大积分作用。积分的作用是消除静差但会减慢响应、增加超调。观察系统在受到扰动或设定值变化后能否回到目标值且没有静差。调整 (K_i 直到静差在可接受时间内被消除同时超调不过大。引入微分增益 (K_d)微分可以抑制超调、提高稳定性。逐渐增大 (K_d观察系统超调是否减小响应是否更“干脆”。**务必注意噪声**微分放大噪声如果输出开始抖动说明 \(K_d过大或需要如前所述对微分项滤波。6.3 基于临界振荡法的公式整定串联型参数如果你能测出临界增益 (K_u) 和临界周期 (T_u可以使用经典的齐格勒-尼科尔斯Ziegler-Nichols经验公式得到一组初始参数控制器类型(K_p)(T_i)(T_d)P(0.5 K_u)--PI(0.45 K_u)(0.85 T_u)-PID(0.6 K_u)(0.5 T_u)(0.125 T_u)请注意这个公式给出的是串联型参数(K_p, T_i, T_d)如果你用的是标准型算法需要按照第3节的公式进行转换。例如对于PID控制器标准型 (K_p 0.6 K_u)标准型 (K_i K_p / T_i (0.6 K_u) / (0.5 T_u) 1.2 K_u / T_u)标准型 (K_d K_p \times T_d (0.6 K_u) \times (0.125 T_u) 0.075 K_u T_u)这组参数通常比较激进超调较大可作为进一步细调的起点而非终点。6.4 调参中的典型现象与对策振荡剧烈、发散比例增益 (K_p) 过大。立即减小。响应太慢、静差久久不消比例增益 (K_p) 过小或积分增益 (K_i) 过小积分作用太弱。静差消除慢但一消除就超调很多积分增益 (K_i) 过大。积分在“还债”。减小 (K_i。输出高频抖动微分增益 (K_d) 过大或未对微分项进行滤波。减小 (K_d或增加滤波时间常数 \(T_f。设定值变化时输出瞬间跳变过大这是比例和微分项对误差突变的直接反应。如果希望设定值变化更平滑可以考虑使用“设定值斜坡”或“设定值滤波”而不是粗暴地修改PID参数。调参是一个“观察-分析-调整”的循环过程没有一劳永逸的“黄金参数”。最好的老师就是系统的响应曲线。多观察多记录理解每个参数改变如何影响曲线的形状上升时间、超调量、稳定时间、抗扰动恢复时间经验就会逐渐积累起来。