Simulink永磁同步电机(PMSM)模型,一共有两个,分别是基本型永磁同步电机模型(B_PMSM)和磁饱和型永磁同步电机模型(S_PMSM)。 两者的区别是前者电机参数是定值,后者部分电机参数是变值(由Id和Iq共同决定)。 两个模型都是按照定子电压方程+磁链方程+转矩方程+运动方程四个方程自己搭建的。 经仿真验证:同等条件下其各项输出与Simulink自带的永磁同步电机模块基本一致。 提供B_PMSM和S_PMSM两个模型+参考文献+永磁同步工作电机工作原理

先说基础款B_PMSM,这货的定子电压方程直接用了教科书里的标准写法。方程长这样:

vd = Rsid + Lddid/dt - ωeLqiq

vq = Rsiq + Lqdiq/dt + ωe(Ldid + ψ_f)

在Simulink里实现的时候,直接上Integrator模块处理微分项。举个栗子,d轴电流的微分项是这么搭的(见图1):

![d轴电压方程实现截图]

这里用了Gain模块直接乘Ld,注意这里有个陷阱——必须把电机转速ωe单独拎出来做交叉耦合补偿。

磁饱和型SPMSM就刺激了,它的Ld和L_q不再是固定值。咱们得搞个二维查表,输入是Id和Iq的实时值。代码里这么处理的:

function [Ld, Lq] = saturate_L(Id, Iq)

% 查表数据来自电磁场仿真结果

persistent FLd FLq;

if isempty(F_Ld)

load('magsatdata.mat','FLd','FLq');

end

Ld = F_Ld(Id, Iq);

Lq = F_Lq(Id, Iq);

end

这个函数会被封装成Simulink的MATLAB Function模块,每步仿真都动态更新电感参数。实测发现当电流超过3倍额定值时,电感值会暴跌40%左右。

转矩计算是两模型共用的核心部分:

Te = 1.5pfiq + (Ld - Lq)id*iq)

不过SPMSM在这里耍了个花招——由于Ld和L_q已经是动态值,转矩脉动会比基础型多出约15%的高频成分。运动方程倒是都老老实实用:

Jdω/dt = Te - Tl - Bω

这里建议用Algebraic Constraint模块处理转速的代数环问题,比直接用Integrator稳定得多。

实测对比很有意思(图2),空载启动时两种模型的电流响应波形几乎重合,但带载突变时S_PMSM的电流超调会多出8-12%。这说明磁饱和效应在动态过程中确实不能忽视,特别是做精确控制的时候。

最后说个坑:自己搭的模型和Simulink官方模块对比时,记得检查反电势常数设置。有次因为ψ_f单位没统一(韦伯vs特斯拉),导致转矩输出差了整整3倍,排查了俩小时才发现是量纲换算的问题。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐