4. 直流电机PI转速闭环控制实现

直流电机PI转速闭环控制实现 学习卡片

PI转速闭环的控制结构与信号流

开环调速时,给定占空比 D 与稳态转速之间没有强绑定关系:负载转矩一变,转速就漂移。加入PI控制器后,控制器以“转速误差”为输入,输出占空比修正量,使稳态误差趋于零。整定前先明确各环节的物理量与量纲,避免积分项因单位混乱而饱和。

阶跃给定 n_ref (rpm) − 误差 e PI 控制器 u = Kp·e + Ki·∫e dt 输出限幅 [0, Dmax] H桥 + PWM 占空比 D → 电枢电压 直流电机 正交编码器 M法测频 n_fb (rpm) 反馈:n_fb 经测速计算回送 误差定义:e(k) = n_ref − n_fb(k) 离散PI:u(k) = Kp·e(k) + Ki·Σe(j)·Ts,Ts为控制周期 整定目标:阶跃给定下稳态无静差(Ki作用)且超调量 ≤ 5%(Kp与Ki配合)

离散PI控制器的实现

控制器在定时中断中以固定周期 Ts 执行。积分项采用累加形式,必须做输出限幅与积分抗饱和处理,否则给定突变或电机堵转时积分会持续累积,恢复时产生大幅超调。

/* 直流电机 PI 转速闭环控制 —— 离散实现 */
#define TS          0.005f    /* 控制周期 5ms */
#define KP          0.85f     /* 比例增益,先整定 */
#define KI          12.0f     /* 积分增益,后整定 */
#define DUTY_MAX    0.95f     /* 占空比上限,留死区余量 */
#define DUTY_MIN    0.0f
#define N_REF       1500.0f   /* 目标转速 rpm */

static float integral = 0.0f;  /* 积分累加器 */

/* 每 Ts 调用一次,n_fb 由编码器M法测速得到 */
float pi_speed_control(float n_ref, float n_fb)
{
    float e, u, u_unsat;

    e = n_ref - n_fb;                          /* 转速误差 */

    u_unsat = KP * e + KI * integral;          /* 未限幅输出 */

    /* 条件积分抗饱和:仅在未饱和时累加 */
    if ((u_unsat < DUTY_MAX) && (u_unsat > DUTY_MIN)) {
        integral += e * TS;
    }

    u = KP * e + KI * integral;                /* 重新计算输出 */

    /* 输出限幅 */
    if (u > DUTY_MAX) u = DUTY_MAX;
    if (u < DUTY_MIN) u = DUTY_MIN;

    return u;                                  /* 返回占空比指令 */
}
积分抗饱和要点:当输出已到达限幅值时停止积分累加,避免“积分饱和—退饱和延迟—超调”的连锁反应。若电机堵转导致 n_fb 长时间为零,该机制可防止积分项无限增长。

参数整定步骤与判据

采用“先比例后积分”的试凑法,在阶跃给定下观察转速响应曲线。整定过程中每次只改一个参数,记录超调量、上升时间和稳态误差。

步骤 操作 观察现象 调整方向
1 Ki=0,Kp从0.2逐步增大 响应加快,出现振荡 取振荡前Kp的60%~70%作为初值
2 固定Kp,Ki从0逐步增大 静差减小,超调增大 静差消除且超调≤5%时停止
3 施加负载扰动 转速跌落及恢复时间 恢复慢则适当增大Ki
4 给定阶跃反向 反向超调是否对称 不对称时检查限幅与死区

阶跃响应验证与结果判读

将 n_ref 从 0 阶跃至 1500 rpm,通过串口或上位机记录 n_fb 随时间的变化。以下为教学示例的预期响应特征(非实测数据):

指标 目标值 判读方法
稳态误差 ≈ 0 rpm 稳定后 n_fb 与 n_ref 之差
超调量 ≤ 5%(≤75 rpm) 峰值转速 − 1500
上升时间 0.3~0.8 s 10%→90% 目标值的时间
调节时间 ≤ 1.5 s 进入 ±2% 误差带并不再超出
常见问题:若转速持续振荡且幅度不衰减,通常是 Kp 过大或控制周期 Ts 与测速更新周期不匹配;若稳态始终有静差,检查积分项是否因限幅逻辑被永久冻结,或 Ki 过小。

快速整定与复查清单

  • 确认编码器测速方向与给定方向一致,否则误差符号相反导致正反馈。
  • 确认 Ts 与测速采样周期关系:测速更新慢于控制周期时,同一 n_fb 会被重复使用,等效降低反馈带宽。
  • Kp 初值取“临界振荡值”的 60%~70%,Ki 从 0 开始逐步增加。
  • 积分抗饱和条件必须与输出限幅一致,避免限幅值改变后忘记同步修改。
  • 验证时先空载阶跃,再加额定负载阶跃,最后做反向阶跃。
  • 记录每组 (Kp, Ki) 下的超调量与调节时间,选取满足指标且裕量最大的一组。