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 个矢量 → 计算量大
解决:
- 分支裁剪
- 并行计算
- 查表法
总结:MPC 响应快,但计算量大
下一篇:参数辨识