Albert Official PID Control

Closed-loop control

PID 控制器 Interactive PID controller simulation.

在同一个二阶对象上调整比例、积分与微分增益,直接比较输出响应、控制量和误差指标。公式、指标定义与下方仿真代码保持一致。

Plant: second-order dt = 0.01 s Window: 12 s Integrator clamp: ±4

阶跃响应 Step Response

超调量 Overshoot
0.0%
稳定时间估计 · ±5% / 0.8 s
--
ITAE / 当前控制量 u
0.00 / 0.00

输出响应 Output response

系统输出 y 目标值 r ±5% 误差带

控制量 Control effort

控制输入 u 限幅 ±10

数学模型与校正说明 Mathematical Model and Notes

公式与代码保持一致:微分项作用于对象输出,避免设定值阶跃带来的 derivative kick;数值积分、限幅和指标口径也在下方明确给出。

PID 控制律

误差定义为 e(t)=r(t)-y(t)。本页使用工业实现里常见的“微分作用于输出”形式:

当目标值不再变化时,-dy/dtde/dt 等价;在目标值突然阶跃时,它能避免微分项产生瞬时尖峰。本仿真直接使用模型内部的速度状态 dy/dt,没有模拟传感器噪声、数值微分或微分滤波。代码还把积分状态限制在 [-4,4],这是简单的积分钳位,不代表所有工程抗饱和方案。

三项分别在做什么

P:现在误差

u_P=K_pe。P 项像弹簧,误差越大推得越用力。它提高响应速度,但过大时会降低阻尼,带来超调和振荡。

I:历史误差

u_I=K_i∫e dt。I 项会累积长期偏差,是消除当前对象稳态误差的关键;但积累太快会产生积分饱和和慢振荡。

D:变化趋势

本页实际采用 u_D=-K_d dy/dt,并直接读取对象模型的速度状态。当设定值保持不变时,它才与 K_d de/dt 等价;真实测量微分通常还要加入低通滤波。

被控对象

仿真对象为二阶线性系统,控制器输出先限制在 ±10,再进入对象:

当前取 ω_n=2.2ζ=0.55K=1。这是用于学习与分享的简化模型,不代表某个特定电机、温控或飞行器。

代码中的离散计算

采样周期为 Δt=0.01 s。下标 k−1 表示更新前状态;clip(x,a,b) 表示把数值限制在区间 [a,b]

对象采用半隐式 Euler:先更新速度,再用新速度更新位置。它是连续模型的数值近似,不等同于解析解。

性能指标

本页只运行从 0 到 1 的正单位阶跃,因此超调量按 |Δr|=1 归一化。响应连续停留在 ±5%·|Δr| 内 0.8 s 后,首次进入时刻记为“稳定时间估计”;这是实时演示用的驻留判据,不等同于检查全部未来轨迹的严格调节时间。

调参流程

  1. 先令 Ki=0Kd=0,逐步提高 Kp,直到响应足够快但还未持续振荡。
  2. 增加 Ki 消除残余稳态误差。若出现慢速来回摆动,说明积分太强或输出已经饱和。
  3. 增加 Kd 抑制超调和振铃。若曲线变得毛躁,真实系统里应降低 Kd 或增加微分滤波。
  4. 比较 超调量调节时间ITAE,不要只追求某一个指标。

推荐初值

稳健默认

Kp=2.20Ki=1.00Kd=1.00。这组参数对当前二阶对象响应较快,基本无超调,适合先理解三项作用。

从零开始

Kp=0Ki=0Kd=0。先只加 P,再补 I,最后用 D 抑制超调,这样最容易看清每一项的影响。

调参边界

若输出长时间振荡,优先降低 KpKi;若控制量经常贴近限幅,再追求更快响应意义不大。

常见现象诊断

  • 响应慢:通常是 Kp 太小,也可能是输出限幅太低。
  • 超调大:可能是 KpKi 过强,可降低它们或适当增加 Kd
  • 稳态偏差:对当前二阶对象,单独 P 控制会留下偏差;需要加入 I 项。
  • 持续振荡:闭环阻尼不足,常见处理是降低 Kp/Ki,或增加合适的 D 项。