适用目标:理解什么时候该从“直接调 PID”升级到“Smith + PID”

PID 是“根据当前误差调控制”;而 Smith 补偿是在系统存在明显纯滞后时,用对象模型去预测“还没来得及测到的输出”,从而让控制器尽量像在控制一个无纯滞后的对象。

1 先从 PID 视角理解:为什么纯滞后会让控制变难?

普通 PID 的基本逻辑是:测量输出 y(t),形成误差 e(t)=r(t)-y(t),再根据误差去计算控制量 u(t)。如果对象没有明显纯滞后,这个闭环逻辑通常是顺畅的。

但当对象包含纯滞后环节时,例如 G(s)=G0(s)·exp(-Ls),控制器当前施加的动作要经过 L 秒之后,输出才开始变化。这样一来,控制器所看到的反馈总是“落后”的。PID 参数一旦调大,就容易出现响应慢半拍、来回修正、超调增大甚至振荡。

所以,很多初学者学完 PID 后会觉得:参数怎么都不好调。此时问题往往不是 PID 本身,而是对象中的纯滞后已经显著影响了闭环相位裕度。

2 PID 与 Smith 的关系:不是替代,而是分工

概念

PID 直接控制

Smith + PID

控制依据

直接使用真实滞后输出形成误差

使用模型预测输出辅助形成“更及时”的反馈

对纯滞后敏感性

高,滞后越大越难调

低,能显著削弱纯滞后影响

整定难度

当 L 较大时明显上升

通常先按无滞后对象整定,再检查模型误差

适用前提

对象滞后不大也能工作

对象存在显著纯滞后,且模型要相对准确

初学者理解

“直接看误差就调”

“先预测,再让 PID 看到更合理的误差”

Smith 的本质不是替换 PID,而是给 PID 提供一个“去滞后后的工作环境”。因此,对于大纯滞后对象,常见做法不是“PID 和 Smith 二选一”,而是“在 Smith 结构中配置 PID 控制器”。

3 哪些对象适合做 Smith 补偿?

判断核心可以浓缩为一个比值:

L / τ

L/τ 范围

判断建议

说明

< 0.1

一般不需要

纯滞后相对很小,常规 PID 往往足够

0.1 ~ 0.5

可以考虑

若希望进一步改善动态性能,可尝试 Smith

> 0.5

建议使用

纯滞后已明显影响整定和响应

> 1

强烈建议

通常属于大滞后对象,不做补偿常很难兼顾稳定与快速

工程上常见适用对象包括:加热炉和温控系统、化工反应与蒸馏过程、长管道输送、网络/远程控制系统等。它们的共同点是:输入动作到输出显现之间存在可观测、可辨识的时间延迟。

反过来,如果对象几乎没有纯滞后,或者对象模型变化很大、非线性很强、参数严重不确定,那么 Smith 的效果会下降,甚至因模型失配而带来额外误差。

4 一个适合初学者的 Smith 案例

考虑对象:

G(s) = exp(-s) / (s + 1)

这个对象的无滞后部分为 G0(s)=1/(s+1),纯滞后为 L=1 s,时间常数 τ≈1 s,因此 L/τ≈1,属于典型的“应考虑 Smith”的对象。

方案

结构理解

典型现象

普通 PID

PID 直接面对带纯滞后的对象

能工作,但更容易出现响应慢、超调大、振荡明显

Smith + PID

PID 主要按无滞后模型 G0(s) 进行整定,延迟由预测补偿处理

通常上升更快、超调更小、整定更从容

初学时可以先抓住一句话:普通 PID 是“等真实输出慢慢回来再调”;Smith 是“先用模型把未来会发生什么估一下,再提前做出更合理的控制”。

5 学完 PID 后,如何学习和使用 Smith?

  1. 先会看对象:先判断对象是否包含显著纯滞后,即是否可写成 G(s)=G0(s)·exp(-Ls)。
  2. 先整定无滞后部分:把注意力先放到 G0(s) 上,按常规 PID 的思路把闭环速度和阻尼整出来。
  3. 再引入 Smith 结构:让补偿器承担“对纯滞后做预测”的任务,而不是指望 PID 一个人硬扛滞后。
  4. 最后检查模型误差:Smith 的效果依赖模型精度,因此要特别关注对象增益、时间常数和延迟估计是否偏差过大。

6 MATLAB 入门示例:对比普通 PID 与 Smith + PID

下面给出一段适合初学者上手的 MATLAB 示例代码。前提是已安装 Control System Toolbox。该例用于比较对象 G(s)=exp(-s)/(s+1) 在普通 PID 和 Smith 补偿下的单位阶跃响应。

clc; clear; close all;
s = tf(''s'');

%
对象模型
G0 = 1/(s+1);      % 无纯滞后部分
L  = 1;            % 纯滞后时间
G  = exp(-L*s)*G0; % 实际对象

% 一个示例 PID 参数(初学时可继续试凑)
C = pid(1.0, 1.0, 0.2);

%
普通 PID 闭环
Sys_PID = feedback(C*G, 1);

% Smith
补偿的常见等效写法(教学演示用)
Sys_Smith = feedback(C*G0, 1) * exp(-L*s);

%
阶跃响应对比
figure;
step(Sys_PID, ''r'', Sys_Smith, ''b'', 10);
grid on;
legend(''
普通 PID'', ''Smith + PID'');
title(''
带纯滞后对象的闭环响应对比'');

运行后重点观察三件事:① 上升速度;② 超调量;③ 调节时间。通常会看到 Smith + PID 的动态更平稳,尤其当纯滞后较大时优势更明显。

如果你的 MATLAB 中连 tf 都无法识别,往往说明没有安装或授权 Control System Toolbox。这种情况下可以改用差分方程或状态空间递推仿真。

7 注意事项

1. PID 适合大多数对象,但遇到明显纯滞后时会变得难调。

2. Smith 不是替代 PID,而是帮助 PID 处理“反馈来得太晚”的问题。

3. 是否考虑 Smith,先看对象是否可分解为 G0(s)exp(-Ls),再看 L/τ 是否足够大。

4. Smith 的关键前提是模型要较准确,尤其是延迟时间 L。

5. 学 Smith 的最佳路线不是跳过 PID,而是先会 PID,再理解为什么纯滞后需要预测补偿。

8 小结

对于没有明显纯滞后的对象,先把常规 PID 学扎实,往往就足够了。

对于带明显纯滞后的对象,若发现“PID 怎么调都慢半拍、超调大、容易振荡”,应优先怀疑纯滞后,而不是一味继续硬调 PID。

这时引入 Smith 预测补偿,实质上就是把“处理纯滞后”这件事交给模型,把“整定动态性能”这件事交给 PID,从而实现更清晰、更有效的控制设计分工。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐