4、电流环调参(三):自动调参方法(如Ziegler-Nichols)、工程经验公式

手动调参调得多了,你可能会想:能不能让控制器自己算出一组差不多的参数?

答案是肯定的。自动调参方法,说白了就是通过一些系统辨识的手段,先摸清电机和驱动器的“脾气”,然后套用现成的公式把PI参数算出来。我最早接触这玩意儿是在一个量产项目上,当时要调几十台参数略有差异的电机,手动调得我快吐了。后来上了自动调参,虽然不能说一劳永逸,但至少把调试时间从半小时压缩到了两分钟。

这一章,我就把最实用的两种自动调参思路讲透:Ziegler-Nichols频域法和工程经验公式法。

核心观点:自动调参不是“黑盒魔法”,它本质上是把手动调参的经验规则化、公式化。你理解了背后的逻辑,就能判断什么时候该信它,什么时候该手动微调。

电流环自动调参方法体系 电流环PI参数自动整定 方法一:Ziegler-Nichols频域法 方法二:工程经验公式法 ① 断开积分 ② 增大Kp至振荡 ③ 记录Ku、Tu ④ 代入ZN公式 ① 辨识Rs、Ld、Lq ② 计算带宽 ③ 代入经验公式 ④ 限幅与微调 输出:Kp、Ki 初始值 ⚠️ 自动调参给出的是 “初始值”,不是“最优值”

4.1 Ziegler-Nichols频域法:让系统自己“说话”

Ziegler-Nichols法,简称ZN法,是1940年代提出的经典方法。它不依赖电机模型,只靠实验数据。我个人觉得,这是最直观的自动调参方式——你让系统振荡起来,它就会告诉你该用多大的增益。

4.1.1 操作步骤

  1. 把积分项置零:Ki = 0,只保留比例项Kp。
  2. 慢慢增大Kp:给一个小的阶跃指令(比如50rpm或0.5A),观察电流响应。继续增大Kp,直到电流开始出现等幅振荡。
  3. 记录两个关键值:
    • Ku(临界增益):此时Kp的值。
    • Tu(临界振荡周期):振荡波形一个完整周期的时间。
  4. 代入ZN公式:
// Ziegler-Nichols 整定公式(电流环PI)
Kp = 0.45 * Ku;
Ki = Kp / (0.85 * Tu);   // 或者写成 Ki = Kp * (1 / (0.85 * Tu))

// 注意:离散化实现时,积分系数需要乘以控制周期 Ts
// Ki_discrete = Ki * Ts;

我的经验:ZN法在电流环上使用时,振荡频率通常比较高(几百Hz到几kHz)。示波器采样率要够,不然Tu测不准。我曾经因为示波器采样率设低了,测出来的Tu偏大了一倍,算出来的Ki软绵绵的,电流响应慢得像蜗牛。

4.1.2 注意事项与坑

  • 安全第一:等幅振荡意味着电流在正负之间来回跳。如果母线电压高、电机大,振荡电流可能损坏驱动器。我建议从小电流开始试,或者加一个临时限幅。
  • 死区问题:如果系统有死区或摩擦力较大,可能永远振荡不起来。这时候可以稍微加一点积分(比如Ki=0.1*Kp)再试。
  • ZN公式不是万能的:它给出的参数通常偏“激进”,超调量较大。如果你需要平滑响应,可以把Kp乘以0.6~0.8,Ki相应调整。

⚠️ 重要提醒:ZN法只适用于线性系统。如果你的电流环存在明显的饱和、限幅或非线性摩擦,振荡波形会畸变,测出来的Ku和Tu就不准了。这时候,我建议先用小信号测试,避开饱和区。

4.2 工程经验公式法:基于电机参数的快速估算

如果你手头有电机的电阻、电感数据(或者能在线辨识出来),那就不需要让系统振荡了。直接用经验公式算,又快又安全。

4.2.1 核心公式推导思路

电流环的PI参数,本质上是由期望的电流环带宽决定的。带宽越高,响应越快,但噪声抑制能力下降。工程上常用的带宽范围是:

  • 通用伺服:500 Hz ~ 2 kHz
  • 高速主轴:2 kHz ~ 5 kHz
  • 力矩控制:200 Hz ~ 500 Hz

有了目标带宽 ωc(单位:rad/s),就可以用下面的公式估算:

// 经验公式(基于电机电气时间常数)
// 前提:你已经知道 Rs(相电阻)、Ld(d轴电感)、Lq(q轴电感)

// 对于表贴式PMSM(Ld ≈ Lq ≈ Ls):
Kp = ωc * Ls;
Ki = ωc * Rs;

// 对于内置式PMSM(Ld ≠ Lq):
// d轴:
Kp_d = ωc * Ld;
Ki_d = ωc * Rs;

// q轴:
Kp_q = ωc * Lq;
Ki_q = ωc * Rs;

// 注意:这里的 ωc 是角频率,如果目标带宽是 f_c (Hz),则 ωc = 2 * π * f_c

为什么是这个公式?说白了,电流环的传递函数近似为一阶惯性环节,时间常数 τ = L/R。PI控制器的零点(Ki/Kp)如果刚好抵消掉这个极点,系统就变成了纯积分环节,带宽由Kp/L决定。所以Kp = ωc * L,Ki = ωc * R。

4.2.2 实际应用中的调整

公式算出来的参数,直接上机往往会有偏差。原因有几个:

  • 电感会饱和:大电流下Ld、Lq会下降,实际带宽比预期低。
  • 数字延迟:PWM更新、AD采样都有延迟,等效于在环路中加了一个小惯性环节。
  • 反电动势干扰:高速时反电动势会耦合进电流环,需要前馈补偿。

我一般会在公式结果的基础上,做一次手动微调:

现象 调整方向 说明
电流响应有超调 减小Kp,或增大Ki 超调说明阻尼不够,降低比例增益最直接
电流跟踪有静差 增大Ki 积分项负责消除稳态误差
电流噪声大 减小Kp,或降低带宽目标 带宽越高,噪声放大越明显
启动或换向时有冲击 增加积分限幅,或加软启动 积分饱和是常见原因

我的习惯:先用经验公式算一组参数,然后给一个阶跃指令(比如1A),看电流的上升时间和超调。如果上升时间比预期的1/(2*ωc)慢很多,说明电感参数不准或者有延迟,我会适当增大Kp。如果超调超过10%,我就把Kp降10%~20%。

4.3 两种方法的对比与选择

对比维度 Ziegler-Nichols法 工程经验公式法
依赖数据 不需要电机参数 需要Rs、Ld、Lq
安全性 中等(需振荡实验) 高(纯计算)
适用场景 参数未知、系统线性度好 参数已知、需要快速部署
结果精度 偏激进,需微调 偏保守,需微调
实现复杂度 需要示波器或FFT分析 只需要MCU计算

我个人更倾向于工程经验公式法,尤其是在量产项目中。原因很简单:安全、可重复、容易自动化。你只需要在电机出厂前测一次电阻电感,或者用在线辨识算法实时更新参数,就能在每次上电时自动算出一组合理的PI值。

但ZN法也有它的价值——当你怀疑电机参数不准,或者系统存在未知的非线性时,ZN法能给你一个“真实系统”的反馈。我遇到过一台电机,标称电感是2mH,但用ZN法测出来等效电感只有1.2mH。后来拆开一看,磁钢退磁了。嗯,ZN法有时候还能当诊断工具用。

⚠️ 最终建议:无论你用哪种自动调参方法,算出来的参数都只是起点。一定要在真实负载下做一次阶跃响应测试,确认电流环的带宽和稳定性。自动调参帮你省掉的是“从零开始”的时间,但“精益求精”这一步,还得靠你的眼睛和示波器。