PI 控制环路设计方法论 — 带宽 / 裕度 / 极点配置

控制采样L2别名 PI tuning · PI 调参 · 控制环路设计 · bandwidth design · 带宽设计 · phase margin · 相位裕度 · gain margin · 增益裕度 · 极点配置 · pole placement · Ziegler-Nichols · SISOTOOL · frequency response · bode plot · anti-windup

本质与导读

本质 几乎所有功率电子闭环(FOC 电流环、PSFB/Buck 电压环、PFC)都是 PI 控制器,而工程 PI 设计不靠盲调 Kp/Ki 或套 Ziegler-Nichols:必须先按物理上限定带宽(三环 10× 阶梯,电流环 < fsw/5),再由被控对象传递函数做极点配置反算 Kp/Ki——带宽优先于增益,极点配置取代试错。

主线坐标:第 6 站 · 电机 + 控制采样 · ↑ 全景主线

1. PI 调参的核心思路

PI 调参不是"调 Kp / Ki 让响应好看",而是"先决定环路带宽 → 算 Kp / Ki 实现该带宽"。带宽是物理上限 + 系统稳定性决定的,不能凭直觉。级联结构(位置环 → 速度环 → 电流环 → 电机)把这条思路具体化:三环各有自己的被控对象与目标带宽,内环带宽必须远高于外环,逐环用极点配置算出 Kp / Ki。

级联 PI 调参 — 电流环/速度环/位置环带宽分离(内环远快于外环),各环 plant 与目标带宽对应 Kp/Ki 整定

1.1 三环带宽分配(10× 阶梯)

外环带宽 < 内环 / 10,确保内环动态对外环表现为常数

典型带宽物理上限
电流环1-2 kHz< fsw / 5(典型 fsw 10 kHz)
速度环100-200 Hz< 电流环 / 10
位置环10-50 Hz< 速度环 / 5

如果内外环带宽接近 → 环间相互振荡(内环响应变化看上去像外环在抖)。

1.2 带宽物理上限

电流环 上限由 PWM 频率决定:

电流环带宽 > fsw/5 → 控制器试图调整比开关周期更快的事件 → 噪声放大 + 不稳定。

速度环 上限由机械时间常数决定:

J = 转动惯量,B = 阻尼系数。机械响应慢,速度环不能比机械极点快 5 倍以上。

位置环 上限由速度环带宽决定。

1.3 选带宽的工程权衡

带宽高:

  • 优点:响应快,扰动抑制好
  • 缺点:噪声放大,EMI 灵敏度高,采样要求严

带宽低:

  • 优点:稳定,抗噪声,采样简单
  • 缺点:响应慢,负载阶跃恢复时间长

实务:取物理上限的 1/3 - 1/2(留余量给老化 / 温度漂移 / 参数变化)。

2. 极点配置法 — PI 参数推导

2.1 电流环典型对象

电机相电压 → 电流的传递函数:

L = 相电感,R = 相电阻。这是一阶系统,极点 -R/L。

2.2 PI 控制器

这一节先说明“PI 控制器”为什么需要形式化表达,后面的公式用于把变量关系明确写出来。

把 Ki 改写为 Kp · ω_z(零点频率 ω_z = Ki / Kp):

2.3 闭环带宽 ω_bw

PI + plant 开环:

让 PI 零点抵消 plant 极点(零极对消):

剩下开环传递函数:

闭环带宽:

2.4 PI 参数公式

设计目标 ω_bw → 算 Kp, Ki:

2.5 实战例

电机:R = 10 mΩ, L = 0.5 mH。设计 ω_bw = 1 kHz × 2π = 6280 rad/s。

  • Kp = 0.5e-3 × 6280 = 3.14
  • Ki = 10e-3 × 6280 = 62.8

闭环带宽 1 kHz,稳态零误差(I 项保证),动态抖动小。

3. 相位 / 增益裕度

3.1 定义

这一节先给出“定义”需要同时考虑的几个判断点,后面的条目按工程优先级展开。

  • 相位裕度 PM:开环增益 = 0 dB 处,相位距 -180° 的余量
  • 增益裕度 GM:开环相位 = -180° 处,增益距 0 dB 的余量

3.2 工程要求

这一节先给出“工程要求”需要同时考虑的几个判断点,后面的条目按工程优先级展开。

  • PM ≥ 60°(典型,稳定且阻尼好)
  • GM ≥ 6 dB(2× 增益变化也稳定)
  • PM < 30° → 振荡,响应有大超调
  • PM < 0° → 不稳定

3.3 单极点 PI 的 PM

零极对消后开环 L(s) = Kp / (sL),纯积分器 → 相位 -90° → PM = 90°(理想)。

但加上:

  • 计算延迟 (PWM 半周期 + 计算延迟)→ 相位滞后 ω · T_delay
  • 离散化(零阶保持 ZOH)→ 相位滞后 ω · Ts/2
  • 滤波器(ADC 抗混叠 / EMI 滤波)→ 额外相位滞后

实际 PM = 90° - ω_bw × (T_delay + Ts/2 + T_filter) × 180°/π

例:ω_bw = 6280, T_delay = 100 µs → PM 损失 6280 × 1e-4 × 57.3° = 36° → 实际 PM ≈ 54°(刚好 OK)。

经验值:计算延迟 + ZOH ≈ 1.5 × Ts,所以 ω_bw × Ts < 0.3 rad/sample 才能保 PM > 60°。即 ω_bw < 0.3 × f_sample × 2π / 6.28 = 0.05 × f_sample——采样频率必须 > 20× 带宽

3.4 工程经验

f_sample / fbw 比值:

  • 5×: 不稳定 / 振荡
  • 10×: PM ≈ 30°,响应有超调
  • 20×: PM ≈ 60°,健康
  • 50×: PM ≈ 80°,过阻尼

EV 主驱:fsw = 10 kHz, 双采样 = 20 kHz → 电流环带宽 1 kHz(20×)是合理上限。

4. 离散化 — 数字 PI 实现

4.1 Tustin 变换(双线性 / BLT)

连续域 G(s) → 离散域 G(z):

PI 数字实现(C 代码):

// 连续: K_p + K_i/s
// 离散 Tustin: 
e[n] = ref - meas;
i_acc += K_i * T_s * (e[n] + e[n-1]) / 2;  // 梯形积分
out[n] = K_p * e[n] + i_acc;
e[n-1] = e[n];

4.2 后向欧拉(简化版)

这一节先说明“后向欧拉(简化版)”为什么需要形式化表达,后面的公式用于把变量关系明确写出来。

// 离散 后向欧拉 PI
e[n] = ref - meas;
i_acc += K_i * T_s * e[n];
out[n] = K_p * e[n] + i_acc;

简单,但相位精度比 Tustin 略差(在带宽 1/5 内忽略)。

4.3 增量式 vs 位置式

这一节先给出“增量式 vs 位置式”需要同时考虑的几个判断点,后面的条目按工程优先级展开。

  • 位置式:输出 = Kp·e + ∫Ki·e (绝对值)
  • 增量式:Δout = Kp·(e[n] - e[n-1]) + Ki·Ts·e[n]

工程实务:增量式更适合 anti-windup(直接限制 Δout 而非 iacc)。

5. Anti-Windup(积分饱和)

5.1 问题

PI 控制器输出受物理限幅(如 PWM duty 0-100%)。如果误差长期同号 → 积分项无限累加 → 解除限幅后控制器需要很久才能"放空积分项" → 大超调

5.2 三种 Anti-Windup 方案

方案 1: Back-Calculation(反算)

out_raw = K_p * e + i_acc;
out_sat = saturate(out_raw, -MAX, +MAX);
i_acc -= K_aw * (out_raw - out_sat);  // 把"溢出"部分反向作用到积分项

Kaw 典型 1/Taw, Taw = 0.5 - 1 × Ts。

方案 2: Conditional Integration(条件积分)

if (output_unsaturated || (error_sign != saturated_direction)) {
    i_acc += K_i * T_s * e;
}

只有"输出未饱和" 或 "误差方向与饱和方向相反" 时才积分。

方案 3: Clamping(钳位)

i_acc += K_i * T_s * e;
i_acc = saturate(i_acc, -I_MAX, +I_MAX);  // 限幅积分项本身

简单粗暴,但 IMAX 难调(太小响应慢,太大无效)。

5.3 工程选择

EV 主驱主流: 方案 1 back-calculation(平滑,对参数不敏感)。 家电 / 简单场景: 方案 3 clamping(简单)。

6. 典型环路设计

6.1 FOC 电流环(已在 topic-foc §8 给出)

这一节先给出“FOC 电流环(已在 topic-foc §8 给出)”需要同时考虑的几个判断点,后面的条目按工程优先级展开。

  • 对象:R + sL(单相)
  • 设计:ω_bw_current = 1-2 kHz
  • Kp = L · ω_bw, Ki = R · ω_bw
  • 加 dq 解耦前馈 + BEMF 前馈

6.2 速度环

被控对象:

Kt = 转矩常数, J = 转动惯量, B = 阻尼。

PI:

  • ω_bw_speed = ω_bw_current / 10
  • K_p_speed = J · ω_bw_speed / Kt
  • K_i_speed = K_p_speed · ω_bw_speed / 5(经验比)

6.3 PFC 电压环(已在 topic-pfc-power-factor-correction §4)

被控对象:Vbus 电容 + 平均功率传输模型。

  • ω_bw_voltage < 20 Hz(避开二次纹波 100/120 Hz)
  • 速度慢,但稳定性优先

6.4 PSFB / Buck 电压环

被控对象:LC 滤波器(2 阶) + 模式特性。

  • 电流模式控制(PCMC):内电流环将电感等效为电流源 → 简化外电压环
  • 电压模式控制(VMC):必须补偿 LC 双极点
  • ω_bw_voltage = 5-20 kHz(典型)

详见 PCMC Buck 控制环

7. Ziegler-Nichols 公式 — 何时不能用

Ziegler-Nichols 经验公式(Kp = 0.6 × K_critical, Ti = 0.5 × T_oscillation)在工程上不推荐:

  1. 假设 plant 是一阶 + 时延 → 功率电子大多不是
  2. 设计目标是"开环到达临界振荡"→ 实际 plant 进入临界振荡危险
  3. 给出的 PM ≈ 30°,余量小

何时可以用:

  • plant 模型完全未知(纯黑盒)
  • 安全可控的初步调试
  • 预热阶段,后续必须用极点配置精修

EV / 工业量产 PI 设计应永远用极点配置,Ziegler-Nichols 仅在调试早期作 starting point。

8. 工程实战陷阱

8.1 参数随工况漂移

电机相电阻 R 随温度变化(铜线温度系数 0.4%/°C),20-150°C 漂 1.5×。Ki 应该随 R 自适应(温度查表 / 在线辨识),否则带宽随温度变。

8.2 离散化采样的相位损失

ω_bw × Ts > 0.3 rad → PM 损失大。Ts 必须 < 1/(20 × ω_bw / 2π)

8.3 抗混叠滤波器的相位

ADC 前的抗混叠 LPF(典型 fsw/2)会在带宽内贡献 -10° 到 -20° 相位 → 必须计入裕度计算。

8.4 计算延迟

控制算法在 PWM 中断里跑,实际输出在下一个 PWM 周期生效 → 延迟 0.5-1 × Ts → 计入相位损失。

8.5 量化噪声

Ki 太小 → 积分项每步增量 < 1 LSB → 死区。增量式 / 双精度浮点 / 32-bit 累加器解决。

9. 设计流程模板

新环路设计标准流程:

  1. 写 plant 传递函数 G_plant(s)(物理建模)
  2. 决定带宽 ω_bw(物理上限 / 3,留余量)
  3. 极点配置算 Kp, Ki(对消 plant 主极点)
  4. 算理论 PM, GM(包含计算延迟 / ZOH / 滤波器)
  5. PM < 60° → 降低带宽 / 加补偿器
  6. 离散化(Tustin)
  7. 加 anti-windup(back-calculation 主流)
  8. MATLAB Simulink / SISOTOOL 验证(频域 + 时域)
  9. **硬件实测 Bode 图(网络分析仪)**与设计对比
  10. 量产前温度 + 老化漂移测试

核心要点

  • 先定带宽,再算 Kp, Ki,带宽由物理决定(电流环 < fsw/5,采样 > 20× 带宽)
  • 三环 10× 阶梯:电流(1-2kHz)→ 速度(100-200Hz)→ 位置(10-50Hz)
  • 极点配置:PI 零点对消 plant 极点,Kp = L·ω_bw, Ki = R·ω_bw(电流环典型)
  • PM ≥ 60°,GM ≥ 6 dB,PM 计算包含计算延迟 + ZOH + 滤波器相位损失
  • 离散化:Tustin(精度高)/ 后向欧拉(简单),Ts < 1/(20× ω_bw/2π)
  • Anti-windup 必须有,主流是 back-calculation
  • Ziegler-Nichols 仅作初步调试,量产用极点配置
  • 参数随温度漂移(R 随温度 0.4%/°C),Ki 应自适应或重设余量
  • FOC 电流环加 dq 解耦 + BEMF 前馈,提升动态性能

Cross-references