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 → 控制器试图调整比开关周期更快的事件 → 噪声放大 + 不稳定。

速度环 上限由级联隔离决定(内环 / 10),不受机械极点约束:

J = 转动惯量,B = 阻尼系数。机械极点 被 PI 零点消去(§10.5 极点配置),因此它不设带宽上限;真正的上限是内环带宽的 1/10——保证内环动态对速度环表现为常数。

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

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 × fsample(rad/s),等价于 fbw < 0.3/(2π) × fsample ≈ 0.05 × fsample(Hz)——采样频率必须 > 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 · (B / J) = B · ω_bw_speed / Kt(极点消零:零点对准机械极点 B/J,与 §10.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. 7 条工程陷阱(Gotcha 链)

PI 控制器的理论推导相对简洁,但工程实现中有大量"正确算法接错信号"或"台架正常、产品线失效"的陷阱。以下 7 条是 EV 主驱 FOC 电流环和功率电子电压环中高频、高代价的失效链。

G1 d/q 轴 数值不同 → 极点消零逻辑错误 → 高速谐振

极点消零后 ,与 无关——d/q 两轴 数值必须相同(62.8 V/(A·s) @1 kHz 带宽,),只有 等比缩放(1.88/3.77 V/A)。若代码里 d/q 轴 数值差异大(如 d 轴用 换算、q 轴用 换算),说明整定变量对应关系搞错:,而 本身含 ,两者相除后 恰好消去。诊断:在 10 kHz 正弦扫频(频率响应分析仪模式)下,d/q 环幅频曲线应在同一带宽处 −3 dB;若 d 轴带宽异常(偏窄或偏宽)而 q 轴正常,99% 是 赋值错。高速时()未消零的残余极点引发谐振,电机"哼鸣"加剧后失步。

G2 跨轴解耦前馈使用反馈电流而非预测电流 → 解耦引入噪声 → 高速 d/q 耦合加剧

dq 轴稳态解耦前馈为 (推导见 §11)。 应取已通过滤波、代表下一周期预期值的电流估计,而非直接用 ADC 采样值。若用采样值,ADC 量化噪声(±0.5 A 典型)经 放大:基速 1662 rad/s × 0.6 mH × 0.5 A = 0.50 V 前馈噪声,在 230 V 相电压背景下约 0.2%——但高速弱磁 量级达 100 V,噪声放大到 ±0.5 V,折合 电流纹波 ,持续累积引发 dq 高频振荡,在 5000 rpm 以上()尤其明显。修复:用一阶 IIR 滤波后电流(时间常数 )做前馈,噪声衰减 10×。

G3 采样频率 < 20× 带宽 → PM 不够 60° → 响应震荡

相位损失三项叠加:计算延迟()、ZOH()、抗混叠滤波器():

)、双采样()、(1 阶 8 kHz 截止抗混叠):

理论 PM = 90°(纯积分开环)− 34.2° = 55.8°——合理,与 §10.4 一致。若改为单采样(),,PM = 29°——振荡。工程准则 时 PM 约 54°(可接受), 时 PM 约 70°(充裕)。EV 主驱双采样 20 kHz 对 1 kHz 带宽是边界,不能再往上调带宽。

G4 Anti-windup 忘接饱和输出 → 大负载阶跃后积分项"偷跑" → 超调 150%

Back-calculation anti-windup 的正确公式:

out_raw = K_p * e + i_acc;
out_sat = clamp(out_raw, -V_max, +V_max);
i_acc  += K_i * T_s * e - K_aw * (out_raw - out_sat);  // 正确:反算修正积分

高频错误:K_aw 接了 out_raw 而非 (out_raw - out_sat),即忘减去饱和值;此时饱和期间修正项 = out_raw(量级可达 ),反向过修正, 迅速反向累积——解除限幅后输出过冲 150%,EV 扭矩快速阶跃时表现为"解保后冲"。诊断方法:在扭矩阶跃试验中用示波器同时记录 (PI 输出前)和 ,若饱和期间 仍单调增或单调减、解除后反向飞冲,即为此 bug。

G5 离散化用后向欧拉而非 Tustin → 高频 PM 额外损失 5–10° → 带宽上限收窄

后向欧拉 在 Nyquist 频率处相位误差 ;Tustin 相位误差仅 (一阶项消去)。对 :后向欧拉额外相位损失 ,Tustin 仅 。两种方案 PM 差 15° 以上,后向欧拉在 1 kHz 带宽时 PM 约 38°(不稳定边缘),Tustin 54°(可接受)。实务AUTOSAR MCAL / TriCore DSP 的除法延迟已被 Tustin 折算 吸收,代码量相同,无理由用后向欧拉。

G6 速度环参数直接复制到位置环 → 外环太快 → 内外环互相激励震荡

三环 10× 阶梯是被控对象传递函数宽度的工程近似:速度环 plant ,电流环 plant ,两者带宽物理上限比约 ,即速度环/电流环 ≈ 1/12——原则上 1/10 近似成立。但位置环 plant 是纯积分 ,没有天然极点,位置环带宽必须 < 速度环 / 10(不是 / 5)。若直接套速度环 (已对机械极点整定),位置环带宽偏高 3–5×,与速度环互相激励,阶跃响应中可见 2–5 Hz 低频振荡(听感"颤抖")。修复:位置环 (纯比例),无积分(已有速度环积分消稳态误差),

G7 数字实现中 单位接口不一致 → 整定数字正确但物理量纲错 → 静默偏差

极点消零 (单位 V/A),(单位 V/(A·s))。MCU 定点实现时常用 Q 格式:若 以 Q15(1.0 = 32768)存储但 以 Q12(1.0 = 4096)存储,且代码里两者都乘了同一个 e_curr,则 实际作用比设计值大 8×()。表现:阶跃响应超调"恰好"不振荡(大 凑巧做了类阻尼),但稳态误差异常快消除、温度升高后超调略增——指向 过大。防护:统一用浮点(TC397 TriCore 支持单精度 FPU,FOC 算法热路径用 float 不影响 6.5 μs 时序),避免 Q 格式混用;定点实现必须在单元测试用正弦扫频验算实际带宽与目标是否一致。

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. 量产前温度 + 老化漂移测试

10. 100 kW EV IPMSM 端到端 Worked Design

PI 整定不是"查公式填表",而是从电机实际参数出发的闭合推导链——每个参数都有物理来源,每步都能被频率响应仪实测核验。本节以 100 kW EV IPMSM + TC397 为实例,5 步走完完整流程。

10.1 电机参数

本设计使用与 电机控制基础FOC 页一致的参数(wiki SSOT,已跨页核验)。

参数符号取值来源
极对数4(8 极)电机 nameplate
定子电阻10 mΩ(25°C)绕组测量
d 轴电感0.3 mHDQ 辨识
q 轴电感0.6 mH(凸极比 2)DQ 辨识
永磁磁链0.08 Wb空载反电势推算
峰值相电流250 A逆变器额定
母线电压400 V电池系统
开关频率10 kHz,双采样 20 kHz热/EMI 权衡
转动惯量0.02 kg·m²样机转子 + 联轴估算
阻尼系数0.1 N·m·s/rad摩擦损耗估算

10.2 Step 1 — 电流环带宽上限

带宽上限由采样频率 / 20 决定(保证 PM ≥ 54°,见 G3):

PWM 频率约束独立检查:——1 kHz 满足。取 (= 采样上限,PWM 约束有 2× 余量)。

10.3 Step 2 — 极点消零算

d 轴电流环 plant(单相 RL 等效):

极点在 (时间常数 30 ms)。PI 零点 消去该极点,开环化简为纯积分 ,闭环带宽

一致性自核:(舍入)✓。

10.4 Step 3 — PM 精确核算(含所有延迟)

相位损失明细(双采样 ):

延迟来源时间相位损失 @1kHz
计算延迟(PWM 更新单周期延迟)50 μs
ZOH(数字采样保持)25 μs
抗混叠 LPF(fc = 8 kHz,1 阶)~20 μs
合计95 μs34.2°

若降为单采样(),相位损失 = ,PM = 29°——不可用。双采样是本设计的 PM 保障前提,不可省。

10.5 Step 4 — 速度环整定(外环)

被控对象(电流环已闭合,等效为带宽 1 kHz 的电流源):

速度环带宽:(约 100 Hz)。

极点消零(消去 ):

10.6 Step 5 — TC397 计算时序与 FTTI 对接

TC397 FOC 计算链的时序拆分如下,验证 6.5 μs 总耗时的物理来源(per AURIX TC38x UM)。

步骤典型耗时依据
EDSADC ADC 触发→就绪~1.5 μsTC38x UM EDSADC §24
Clarke + Park(TriCore FPU)~1.0 μs浮点乘加指令 @300 MHz
2× PI + 跨轴解耦前馈~1.5 μsd/q 各一路 + 4 次乘加
Park + SVPWM~2.0 μs扇区判断 + 占空比 + 死区
GTM 比较寄存器写入~0.5 μsGTM-ATOM 6 路同步
总计~6.5 μs< 50 μs 半周期,裕量 7.7×

FTTI 对接:FOC 计算链传输延迟 = 1 个 PWM 周期 = 0.1 ms ≪ FTTI(主驱)= 200 ms(余量 2000×)。瓶颈在 SW FSM 调度周期(10–15 ms),硬件 DESAT 路径(1.2 μs)独立不受 FOC 影响。


11. 跨轴解耦前馈全推导

dq 轴电流方程含运动 EMF 交叉耦合项,在高速时量级可达数十伏,必须前馈补偿才能维持 PI 收敛。

交叉耦合项 (d 轴)和 (q 轴)在高速时量级可达数十伏,若不前馈补偿,PI 需额外带宽来压制,或在高速出现 d/q 耦合振荡。

解耦前馈策略:将交叉耦合项作为已知扰动(前向补偿),PI 输出仅需应对剩余误差:

为当前时刻估计电流(用滤波后电流,不用原始 ADC,见 G2)。

基速工作点数值验证(电角速度 = 机械角速度 × ),MTPA 工作点 (与 topic-motor-control.md §9 一致):

无前馈时这两项完全由 PI 靠积分项吸收;有前馈后 PI 仅需应对 (< 3 V),带宽可降或裕度大幅提升。


12. 3 条 Corner 分析

C1 +125°C 高温: 升 39% → 固定时极点消零失效 → 电流环谐振风险

铜线 TCR ,从 25°C 到 125°C():

仍固定在 62.8(按 10 mΩ 整定),实际 ,而高温时 ——积分时间常数比 plant 时间常数长 39%,零点没有对准极点,残余极点在 。开环传递函数含未消去的实极点,PM 损失额外 ——PM 基本消零,闭环接近振荡。修复 随温度自适应——在线估算 (稳态时 ),按 实时更新,或用电机 NTC + 铜线温度折算表。

C2 −40°C 冷态:传播延迟增加 → PM 额外损失 → 冷启动谐振

TC397 EDSADC 在低温下时钟速率固定,但比较器阈值偏移导致采样窗口偏移约 1–2 μs(per AURIX TC38x UM 低温特性);IGBT/SiC 门极驱动传播延迟在低温略增(约 +10%)。若设计点 PM = 55.8°(余量仅 5.8° 超出 50°),冷态额外相位损失 +3°,PM = 52.8°——仍 OK 但裕度进一步压缩。更大威胁:冷态润滑脂黏度升高(典型汽车黏脂 −40°C 比 25°C 黏度高 2–3 个数量级),(阻尼系数)增大 2–3×,速度环 plant 极点右移,速度环极点消零失配,可能出现低速段振荡。验证方法:在 −40°C 环境箱中做额定扭矩阶跃,记录电流环和速度环阶跃响应,确认 PM 和超调在规格内。

C3 FTTI 压缩至 50 ms(L4 场景)→ 采样带宽约束不变,SW FSM 必须压至 <25 ms

L4 自动驾驶安全需求升格 → SG-01 FTTI 从 200 ms 收到 50 ms(系统级重定义,见 扭矩安全)。FOC 计算链本身(0.1 ms)不变,但 SW FSM 调度从 10–15 ms 必须收紧:按 ISO 26262-4 典型 FDTI/FTTI ≈ 60%,SW FSM 必须 < 30 ms(余量 1.7×);若要余量 2×,SW FSM < 25 ms,需从 15 ms → 10 ms 调度周期,对 TC397 CPU 负载增加约 50%。PI 整定本身不需变(电流环带宽仍由采样率决定,与 FTTI 无关),变的是 FSM 调度和 E2E 通信分配比例。


核心要点

  • 先定带宽,再算 :带宽由物理决定(电流环 保 PM ≥ 54°)
  • d/q 轴 必须相同,与 无关; 分别缩放(G1)
  • 极点消零:(100 kW 参考值 @1 kHz)
  • PM 核算必含三项:计算延迟 + ZOH + 抗混叠滤波,合计 ~34° @双采样 20 kHz / 1 kHz 带宽,PM ≈ 56°(刚过 50°,单采样则 PM = 29°——不可用)
  • 跨轴解耦前馈用预测电流(滤波后),不用原始 ADC 采样(避免 × 噪声放大,G2)
  • Anti-windup:back-calculation 主流, 修正项接 差值而非原始值(G4)
  • 离散化用 Tustin(BLT),高频 PM 比后向欧拉多保 15°(G5)
  • 高温 升 39%(25→125°C)使极点消零失配 需随温度自适应(C1)
  • FOC 计算链 6.5 μs(TC397 @300 MHz),不是 FTTI 瓶颈;瓶颈在 SW FSM 10–15 ms 调度周期

Cross-references