MPCC模型三相永磁同步电机控制
传统PI控制虽然稳如老狗,但遇到参数变化或者动态响应要求高的时候,总感觉差点意思。MPCC就像个预言家,提前算好未来几步的操作,直接挑个最优解,这思路确实骚。反正MPCC这玩意儿就像炒菜,火候(参数)掌握好了比PI控制香,但千万别迷信理论模型,示波器+电流探头才是亲爹。实测时候发现个坑:当转速接近极限时,预测模型可能算出来需要超过逆变器输出能力的电压,这时候得加个电压前馈补偿。这个暴力搜索看着蠢,
三相永磁同步电机模型预测电流控制(MPCC)。
最近在研究永磁同步电机控制,发现模型预测电流控制(MPCC)这玩意儿有点意思。传统PI控制虽然稳如老狗,但遇到参数变化或者动态响应要求高的时候,总感觉差点意思。MPCC就像个预言家,提前算好未来几步的操作,直接挑个最优解,这思路确实骚。
先说预测模型的核心——电机状态方程。用个离散化的电压方程表示电流变化:
def predict_current(id_k, iq_k, vd, vq, Ts, Rs, Ld, Lq, lambda_m):
id_next = (1 - Rs*Ts/Ld)*id_k + (Lq/Ld)*omega_e*Ts*iq_k + (vd/Ld)*Ts
iq_next = (1 - Rs*Ts/Lq)*iq_k - (Ld/Lq)*omega_e*Ts*id_k + (vq/Lq)*Ts - (lambda_m*omega_e/Lq)*Ts
return id_next, iq_next
这里Ts是采样时间,lambdam是永磁体磁链。注意Ld和Lq这两个电感参数,表贴式电机这俩差不多,内置式电机得分开处理。代码里那个omegae是电角速度,得从编码器或者观测器搞来。

代价函数才是灵魂所在:
# 代价函数计算
def cost_function(id_ref, iq_ref, id_pre, iq_pre, v_used):
error_d = id_ref - id_pre
error_q = iq_ref - iq_pre
return error_d**2 + error_q**2 + 0.01*(v_used**2) # 最后项是电压抑制项
平方误差看着普通,但后面那个电压抑制项才是精髓。不加的话控制器可能会选个电压跳变的矢量,加了能让开关频率稳定点。这个0.01的系数得试,大了影响动态,小了镇不住高频抖动。
三相永磁同步电机模型预测电流控制(MPCC)。
实际跑起来得遍历所有电压矢量:
# 电压矢量集合,这里用最简单的两电平逆变器7个基本矢量
voltage_vectors = [
[0, 0],
[2/3*Vdc, 0],
[1/3*Vdc, np.sqrt(3)/3*Vdc],
[-1/3*Vdc, np.sqrt(3)/3*Vdc],
[-2/3*Vdc, 0],
[-1/3*Vdc, -np.sqrt(3)/3*Vdc],
[1/3*Vdc, -np.sqrt(3)/3*Vdc]
]
# 遍历所有电压矢量找最优
min_cost = float('inf')
best_vector = voltage_vectors[0]
for vec in voltage_vectors:
vd, vq = vec
id_pre, iq_pre = predict_current(id_now, iq_now, vd, vq, Ts, Rs, Ld, Lq, lambda_m)
current_cost = cost_function(id_ref, iq_ref, id_pre, iq_pre, np.sqrt(vd**2 + vq**2))
if current_cost < min_cost:
min_cost = current_cost
best_vector = vec
这个暴力搜索看着蠢,但实际运行时每个控制周期也就7次计算,现在STM32都能轻松hold住。注意Vdc要实时测量,不然母线电压波动会翻车。

调参有三板斧:
- 预测步长别超过采样周期1/5,否则预测结果跟实际差太远
- 电压权重系数从0.001开始试,示波器看电流纹波和开关频率折中
- 参数不准的话,在代价函数里加个参数辨识项,比如加个(estLd - realLd)^2这种惩罚项
实测时候发现个坑:当转速接近极限时,预测模型可能算出来需要超过逆变器输出能力的电压,这时候得加个电压前馈补偿。或者更骚的操作是在代价函数里把不可达的矢量直接排除。
最后说个骚操作——用查表法替代实时计算。把常见工作点的最优矢量提前算好存成二维表,运行时直接查表。实测能让计算时间砍掉一半,适合老古董DSP。不过这方法在过调制区可能翻车,得做好安全边界。
反正MPCC这玩意儿就像炒菜,火候(参数)掌握好了比PI控制香,但千万别迷信理论模型,示波器+电流探头才是亲爹。下次有机会聊聊怎么用卡尔曼滤波做无感MPCC,那才是真·刺激战场。

更多推荐
所有评论(0)