maxwell simplorer simulink 永磁同步电机矢量控制联合仿真,电机为分数槽绕组,使用pi控制SVPWM调制,修改文件路径后可使用,软件版本matlab 2017b, Maxwell electronics 2021b 共包含两个文件, Maxwell和Simplorer联合仿真文件,以及Maxwell Simplorer simulink 三者联合仿真文件。

三电机控圈老炮儿们最近总在问联合仿真那点事儿,今儿咱就盘一盘Maxwell+Simplorer+Simulink这仨活宝怎么折腾永磁同步电机的矢量控制。先说清楚啊,我这套模型是分数槽绕组,玩过电动车的都知道这货齿槽转矩小,低速稳如老狗。

先看Maxwell这头,电磁场模型导出来的时候记得勾选"Enable Harmonic Force Calculation",分数槽绕组的高次谐波不抓准了后面仿真准翻车。Simplorer里接电机模型时注意看这行配置:

.Parameters Rs=0.2ohm, Ld=8.5mH, Lq=8.5mH

这参数得跟你Maxwell里提取的有限元结果对得上,别直接照搬教科书参数,实测发现分数槽的交叉耦合效应能让Ld、Lq偏差15%以上。

控制部分在Simulink里整活,PI参数调节是个玄学。给你们看个实战用的抗饱和PI代码:

function [out, integrator] = PI_anti_windup(ref, fb, Kp, Ki, limit, Ts, prev)
    error = ref - fb;
    integrator = prev + Ki*error*Ts;
    
    % 抗饱和处理
    if abs(integrator) > limit
        integrator = sign(integrator)*limit*0.9;  //留10%缓冲
    end
    
    out = Kp*error + integrator;
end

重点看那个0.9的系数,这招是从电动车控制器厂里顺来的经验值,防积分饱和比教科书里的clamping法更带劲。

maxwell simplorer simulink 永磁同步电机矢量控制联合仿真,电机为分数槽绕组,使用pi控制SVPWM调制,修改文件路径后可使用,软件版本matlab 2017b, Maxwell electronics 2021b 共包含两个文件, Maxwell和Simplorer联合仿真文件,以及Maxwell Simplorer simulink 三者联合仿真文件。

SVPWM部分别傻乎乎用官方库,自己搭个带死区的:

function [PWM_A, PWM_B, PWM_C] = SVPWM(Ualpha, Ubeta, Vdc, deadtime)
    % 死区时间补偿
    comp = deadtime * 1e-6 * 20e3;  //20kHz开关频率
    duty_cycle = clamp((Ualpha/Vdc) + 0.5 + comp, 0, 1);
    ...
end

注意这个死区补偿算法,实测能减少5%左右的电流谐波。分数槽电机对谐波敏感得很,这个细节不处理好,仿真波形妈见打。

联合仿真最坑的是数据同步,Maxwell和Simulink的步长要锁死。在Simplorer里设个中间人:

.INTERFACE Simulink 
   VAR Inputs: Ia, Ib, Ic
   VAR Outputs: Vd, Vq
   TIMESTEP 1e-5  //必须跟Simulink固定步长一致

跑起来要是发现波形抽搐,八成是步长没对齐。遇到过仿真跑10秒就卡死的,把Maxwell的场计算精度从0.1%调到0.5%立马丝滑。

最后说文件路径问题,Maxwell工程文件里所有绝对路径都得改成相对路径,用这个脚本批量改:

import os
for root, dirs, files in os.walk("ProjectFolder"):
    for file in files:
        if file.endswith(".mxwl"):
            with open(os.path.join(root, file), 'r+') as f:
                content = f.read().replace('C:\\YourOldPath', '..\\')
                f.seek(0)
                f.write(content)

这玩意救过好几个人头发,特别是从别人那拷来的工程,路径不对仿真直接罢工。

仿真跑通了也别急着high,分数槽电机的3次谐波要用这个脚本验尸:

fft_current = abs(fft(Ia));
if fft_current(3)/fft_current(1) > 0.15
    warning('老铁换斜极吧,这谐波要上天')
end

说到底联合仿真就是个绣花活,参数对不上、步长不对齐、路径有中文,随便哪个都能让你怀疑人生。但整顺了之后,这分数槽电机的效率MAP图能给你画出朵花来,值了!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐