4. 速度环PI参数整定:带宽选择、整定步骤与抗饱和策略

速度环是弱磁控制三环里的“承上启下”环节。位置环给它指令,电流环替它执行。速度环调好了,系统跑起来才稳、准、快。我个人习惯把速度环整定分成三块:带宽怎么选、PI参数怎么算、饱和了怎么办。咱们一个一个说。

4.1 速度环带宽选择——不是越快越好

速度环带宽,说白了就是它响应指令的速度。带宽越高,电机转速跟踪越快,抗扰动能力也越强。但这里有个坑——带宽不是越高越好。

为什么?因为速度环的带宽受限于电流环的响应速度。你想想看,速度环的输出就是电流环的指令,如果速度环带宽比电流环还高,那速度环要的电流,电流环根本给不出来,系统就会振荡。

我在项目中遇到过一台伺服驱动器,客户抱怨高速运行时转速波动大。查了半天,发现速度环带宽设到了200Hz,而电流环带宽只有800Hz。速度环指令变化太快,电流环跟不上,结果就是转速来回抖。后来把速度环带宽降到120Hz,问题就解决了。

经验法则:速度环带宽通常取电流环带宽的1/5到1/10。比如电流环带宽800Hz,速度环带宽选80~160Hz。保守点就取1/10,追求动态响应就取1/5。

具体选多少,还得看负载特性:

应用场景 负载特性 推荐带宽范围 说明
机床主轴 大惯量、恒转矩 30~80 Hz 带宽低些,避免机械谐振
机器人关节 变惯量、频繁加减速 80~150 Hz 需要快速响应,但要注意稳定性
纺织/包装 轻载、恒速运行 50~100 Hz 带宽适中,重点在稳态精度
电动汽车驱动 宽调速、变负载 100~200 Hz 弱磁区带宽会下降,需折中

4.2 PI参数整定步骤——从理论到实操

确定了带宽,接下来就是算PI参数。速度环PI控制器的传递函数是:

G_speed(s) = Kp + Ki/s

其中Kp是比例增益,Ki是积分增益。整定的核心思路是:把速度环校正成典型I型或II型系统。我个人偏爱用“对称最优法”,步骤清晰,不容易出错。

步骤一:获取系统等效惯量和阻尼

速度环的被控对象是电机+负载的机械系统。你需要知道两个参数:

  • 等效转动惯量 J_eq(单位:kg·m²)——电机转子惯量+负载惯量折算到电机轴
  • 粘滞摩擦系数 B(单位:Nm·s/rad)——通常很小,可忽略

如果没有精确数据,可以用“自整定”功能让驱动器自动辨识。我早期做项目时没有自整定功能,就用手动加减速法测惯量,虽然麻烦,但结果也挺准。

步骤二:计算PI参数

假设你选定了速度环带宽 ω_sc(单位:rad/s),那么:

Kp = J_eq × ω_sc
Ki = Kp × ω_sc / 4   (对称最优法,阻尼比0.707)

举个例子:电机转子惯量0.001 kg·m²,负载惯量0.002 kg·m²,J_eq=0.003。选定带宽100Hz(即628 rad/s)。

Kp = 0.003 × 628 = 1.884
Ki = 1.884 × 628 / 4 = 295.8

嗯,这里要注意:算出来的Ki值通常比较大,实际使用时需要做限幅,不然积分饱和会搞死你。

关键点:以上公式基于“电流环响应远快于速度环”的假设。如果电流环带宽不够高(比如只有速度环的3倍以内),算出来的Kp和Ki需要打折,通常乘以0.6~0.8的系数。

步骤三:空载调试

把算好的参数写进驱动器,让电机空载运行。给一个阶跃转速指令(比如从0到1000rpm),观察响应曲线:

  • 超调量 < 5% —— 参数合适
  • 超调量 > 10% —— 降低Kp,或者增加Ki(但Ki增加会加剧超调,要小心)
  • 响应太慢 —— 增加Kp,或者提高带宽重新算
  • 有振荡 —— 带宽选高了,或者机械谐振,先降带宽试试

步骤四:带载验证

空载调好了,不代表带载也行。我曾经遇到过空载响应完美,一加上负载就抖得不行。原因是负载惯量变化导致系统增益改变。

带载后如果出现振荡,可以适当降低Kp(比如降20%),或者增加微分前馈(如果驱动器支持)。对于变惯量负载(比如机器人),建议用“自适应增益调度”,根据负载状态切换PI参数。

4.3 抗饱和策略——积分饱和是隐形杀手

速度环的输出是电流指令,而电流指令是有上限的(受限于驱动器额定电流和电机额定电流)。当速度误差很大时(比如急加速或堵转),积分项会一直累积,导致输出超过限幅值。等误差减小后,积分项还需要时间“退回来”,这段时间里输出仍然饱和,系统就会失控——这就是积分饱和。

我见过最惨的一次:一台起重机起升机构,积分饱和导致电机在减速阶段反而加速,差点把吊物甩出去。从那以后,我对抗饱和策略格外重视。

常用抗饱和方法

方法 原理 优点 缺点
积分限幅 限制积分项的最大值 实现简单 限幅值不好选,影响稳态精度
积分冻结 输出饱和时停止积分 效果明显,不损失精度 需要判断饱和状态,有切换噪声
反向计算 饱和时重新计算积分值 平滑退出饱和 计算复杂,需要模型准确
条件积分 误差大时减小积分系数 兼顾动态和稳态 参数整定麻烦

我个人最推荐积分冻结+反向计算的组合策略。具体做法:

  1. 实时检测速度环输出是否达到限幅值
  2. 如果达到限幅,冻结积分项(Ki不累加)
  3. 同时计算“理想输出”和“实际输出”的差值,用这个差值修正积分项

代码实现大概是这样的:

// 速度环PI控制器(带抗饱和)
float speed_pi_control(float err_speed) {
    // 比例项
    float p_out = Kp * err_speed;
    
    // 积分项(带冻结)
    if (!is_saturated) {
        integral += Ki * err_speed * dt;
    }
    
    // 总输出
    float output = p_out + integral;
    
    // 限幅判断
    if (output > LIMIT_MAX) {
        output = LIMIT_MAX;
        is_saturated = 1;
        // 反向计算:修正积分项
        integral = LIMIT_MAX - p_out;
    } else if (output < LIMIT_MIN) {
        output = LIMIT_MIN;
        is_saturated = 1;
        integral = LIMIT_MIN - p_out;
    } else {
        is_saturated = 0;
    }
    
    return output;
}
避坑指南:我曾经在弱磁区吃过亏。弱磁时电流限幅值会变化(因为电压饱和),如果抗饱和策略没跟着更新限幅值,积分饱和会更严重。建议在弱磁区把限幅值设为动态值,实时跟踪电流环的可用电流。

4.4 速度环整定知识体系

下面这张图把速度环整定的核心逻辑串起来了。你可以把它当作调试时的检查清单。

速度环PI参数整定知识体系 速度环PI参数整定知识体系 带宽选择 PI参数整定 抗饱和策略 电流环带宽的1/5~1/10 负载惯量影响带宽选择 获取J_eq和B参数 对称最优法计算Kp/Ki 空载调试→带载验证 积分限幅/冻结/反向计算 弱磁区动态限幅 稳定的速度环响应 超调<5% | 无振荡 | 抗饱和 💡 调试顺序建议: 先选带宽 → 算PI参数 → 空载调稳 → 带载验证 → 加入抗饱和 → 弱磁区复核

速度环整定说难不难,说简单也不简单。核心就三件事:带宽选对、参数算准、饱和管好。你按这个流程走一遍,大部分系统都能调稳。如果还出问题,大概率是机械谐振或者电流环没调好——那就是另外的话题了。