1. 为什么看阶跃响应:电流环是系统的天花板
FOC 三闭环像俄罗斯套娃:电流环在里,速度环包电流环,位置环包速度环。任何外环的命令最终都要通过电流环落地——所以:
- 电流环带宽决定速度环上限:工程惯例速度环带宽取电流环的 1/5~1/10(见 06 篇三闭环整定);
- 电流环阶跃响应决定"出力速度":加速多快、抗扰动多快,都由它决定;
- 电流环参数最不能拍脑袋:Kp/Ki 与电机 R/L 直接挂钩,公式算出来就八九不离十——它是三环里唯一"可以解析设计"的环。
阶跃响应就是电流环的"体检报告":给一个方波电流命令,看 iq 怎么追——多快(tr)、过不过冲(Mp)、稳不稳(ts),全在一条曲线上。
2. 模型:R/L 一阶对象 + PI 零极点对消
忽略反电动势与耦合项(低速/静止整定时的标准简化),d 轴或 q 轴电流通道就是一个一阶 RL 对象:
两个式子就是电流环整定的标准答案——这也是电机参数计算器(tools/motor-param.html)里 PI 公式的来源。前提:R/L 估得准、反电动势被前馈或低速忽略。
3. 参数与闭环带宽:Kp 定带宽,Ki 定对消
| 参数 | 决定什么 | 解析关系 | 调整后果 |
|---|---|---|---|
| Kp | 闭环带宽(响应快慢) | f_bw ≈ Kp / (2π·L) | ↑Kp 响应快;过大 → 受采样/延迟限制振荡 |
| Ki | 低频增益 / 稳态误差消除 | 对消点 Ki = Kp·R/L | ↑Ki 偏离对消 → 引入零点、出现超调;过小 → 稳态误差 |
| L、R | 对象的极点位置 | 极点 = R/L | 参数估错 → 对消失效,响应变形 |
| 采样/载频 fs | 可实现带宽上限 | f_bw_max ≈ fs / 10 | 载频越高,能压的带宽越宽(受延迟制约) |
工程估算:L=1mH 的电机想要 500Hz 电流环带宽,Kp = 2π·500·0.001 ≈ 3.1(V/A);Ki = Kp·R/L(R=0.5Ω → Ki ≈ 1570)。算完先上板,再按第 9 节实测微调。
4. 阶跃响应指标:tr / Mp / ts / 稳态误差
看阶跃曲线先认四个指标(示意:对消理想的一阶系统):
| 指标 | 定义 | 一阶系统理论值 | 实际意义 |
|---|---|---|---|
| 上升时间 tr | 10% → 90% 目标值 | tr ≈ 2.2 / ωc | 出力速度 |
| 超调量 Mp | 峰值超过稳态值的百分比 | 0%(一阶无超调) | 超调 = Ki 偏大或延迟 |
| 调节时间 ts | 进入 ±2% 误差带 | ts ≈ 4 / ωc | 稳定速度 |
| 稳态误差 | |i(∞) − i*| | 0(PI 积分消除) | Ki=0 时才有 |
注意口径:tr 和 ts 都与带宽成反比(ωc 越大越快),超调则完全来自"非对消项"——看曲线时先问"有没有超调、tr 合不合理",再决定动 Kp 还是 Ki。
5. Kp 扫描:从迟钝到振荡
固定 Ki 按对消条件(Ki = Kp·R/L),只拉 Kp,看响应形态(示意,fs=20kHz、L=1mH、R=0.5Ω):
| Kp | 带宽 f_bw | 响应形态 | 问题 |
|---|---|---|---|
| 0.5 | ≈ 80 Hz | 慢、无超调、tr ≈ 4.4ms | 太迟钝,速度环被拖累 |
| 2.0 | ≈ 320 Hz | 理想一阶,tr ≈ 1.1ms | 常规工作点 |
| 4.0 | ≈ 640 Hz | 仍一阶但逼近采样/延迟极限 | 边缘,轻微过冲 |
| 8.0 | ≈ 1.3 kHz(>fs/10) | 振荡/超调 20%+ | 撞上奈奎斯特/延迟,不能这么用 |
规律:Kp 是响应速度的旋钮,但存在"载频墙"——把带宽压到 fs/10 以上,离散化延迟开始主导,曲线从"一阶"变"二阶振荡"。这就是为什么载频 20kHz 的系统很少把电流环带宽调过 2kHz。
6. Ki 偏离对消:超调从哪来
对消条件是 Ki = Kp·R/L。把 Ki 调大(Ki > Kp·R/L),PI 零点跑向高频,闭环出现额外零点 + 极点对,超调随之而来:
为什么偏大的 Ki 会加超调:PI 零点 (Ki/Kp) 与对象极点不对消后,零点在闭环里表现为"微分前馈"效应——命令一到就推过头,然后积分再慢慢拉回来,形成过冲。这也是为什么"先按公式对消、再微调 Kp"是最稳的整定路线。
7. 数字实现的两大杀手:采样频率与一拍延迟
理论是连续域,板上是离散域。两个效应会把"算好的阶跃响应"变差:
- 采样频率 fs(=PWM 载频):电流采样与 PWM 同步,一个 PWM 周期算一次 PI。带宽不能超过 fs/10 附近(工程经验),否则离散化误差让相位滞后累积、响应振荡;
- 一拍延迟(计算 + 占空比更新):本周期采的电流,算完要下一个周期才生效——等效在环路里加 e^(−sTs) 延迟。延迟让"临界 Kp"变小:同样带宽下,延迟越大超调越多。
仿真里最直观(第 10/11 节):同一组 Kp/Ki,关掉延迟是干净一阶;打开一拍延迟,超调马上冒出来——板上看到的"多出来的超调",一大半是延迟给的,不是参数给的。对策:采样时刻对准 PWM 中点、占空比下一周期更新前先算完(双缓冲)、Kp 按"延迟折减"取保守值。
8. 电压限幅与积分饱和:anti-windup 不能省
阶跃命令很大时(比如 10A 阶跃),PI 输出会撞上母线电压限幅 ±V_bus:
整定大阶跃响应时,先确认曲线是不是撞限幅了——撞限幅的响应跟 PI 参数没关系,是"出力上限"决定的(母线电压 / 电机反电动势的物理墙)。第 11 节仿真器里把阶跃幅值调大就能看到这个分界线。
9. 实测方法:示波器看电流阶跃
板上验证三步(配合 11 篇的工具链思路):
实测与仿真对照是最高效的:先用第 11 节仿真器把参数调到"理论曲线好看",再上板复现——两者对不上,先怀疑采样/延迟/限幅,而不是参数。
10. 可编译 C 代码:离散 PI + 一阶对象阶跃仿真
完整可编译:离散电流环(PI + anti-windup + 一拍延迟开关)+ R/L 对象递推,跑阶跃并打印指标:
这个仿真就是第 11 节演示器的命令行版——改参数、重编译、看指标,适合批量扫参数;交互版适合直观拖滑块。
11. 交互演示:电流环阶跃响应仿真器
拖 Kp / Ki / L / R / 载频五个滑块,看 iq 阶跃曲线与四项指标实时变化——先试"零极点对消"(Ki 自动 = Kp·R/L 附近),再故意拉大 Ki 看超调,最后打开一拍延迟对比(示意仿真):
- 默认即对消点(Kp=2、Ki=1000、L=1mH、R=0.5Ω、fs=20kHz、延迟关):干净一阶,0% 超调、tr≈1.1ms——对照第 3 节公式 f_bw≈320Hz。
- 把 Ki 拉到 4000:超调约 20% 冒出来(第 6 节);勾上"一拍延迟"再拉高 Kp:超调与振荡尾巴更早出现(第 7 节)。
- 把 Kp 拉到 8:tr 变快但 ts 反而拖长(离散零阶保持的尾巴);再勾上"一拍延迟":超调约 8% 冒出来——这就是第 7 节的"载频墙"。