MPC 预测控制:有限控制集方法

系列:电机控制系列 - 第 16 篇 难度:⭐⭐⭐⭐

一、MPC 原理

核心思想:预测下一时刻状态 → 选择最优电压矢量

 1. 遍历 8 个电压矢量
 2. 预测下一时刻电流
 3. 计算代价函数
 4. 选择最小代价的矢量

二、FCS-MPC 实现

 void MPC_Update(float id_ref, float iq_ref, float id, float iq,
                 float theta_e, float omega_e, float vdc) {
     float min_cost = 1e10f;
     int best_vector = 0;
     
     // 8 个电压矢量
     for (int k = 0; k < 8; k++) {
         // 1. 电压矢量 → dq 电压
         float vd = Get_Vd(k, theta_e, vdc);
         float vq = Get_Vq(k, theta_e, vdc);
         
         // 2. 预测下一时刻电流
         float id_next = id + Ts * (vd - Rs*id + omega_e*Lq*iq) / Ld;
         float iq_next = iq + Ts * (vq - Rs*iq - omega_e*Ld*id - omega_e*psi_f) / Lq;
         
         // 3. 代价函数
         float cost = (id_ref - id_next)² + (iq_ref - iq_next)²;
         
         // 4. 最小代价
         if (cost < min_cost) {
             min_cost = cost;
             best_vector = k;
         }
     }
     
     // 5. 应用最优矢量
     Apply_Voltage_Vector(best_vector);
 }

三、MPC 优化

问题:遍历 8 个矢量 → 计算量大

解决

  1. 分支裁剪
  2. 并行计算
  3. 查表法

总结:MPC 响应快,但计算量大

下一篇参数辨识

最后修改:2026 年 03 月 14 日
如果觉得我的文章对你有用,请随意赞赏