Maxwell和Simplorer联合仿真——永磁同步电机SVPWM控制 本仿真用AnsysEM实现永磁同步电机(PMSM)的仿真模拟,控制方式采用空间矢量控制,闭环方式采用电流环速度环双闭环控制。 文件中包含一个仿真文件,以及仿真搭建的简单介绍以及SVPWM算法的详细过程,根据教程可将已经搭建好的不同参数的电机放到Simplorer中仿真验证,查看结果。
先说硬件在环怎么玩——Maxwell里导出的电机模型直接拖进Simplorer当虚拟被控对象,这操作就像把真电机装进了电脑。重点来了,电机参数得用场算结果,别信那些教科书上的理想参数。特别是交直轴电感,实测Maxwell瞬态场算出来的值比理论公式准三倍不止。
SVPWM核心代码长这样:
// 扇区判断 sector = (Ualpha > 0) ? 1 : 0; sector += (Ubeta > 0) ? 2 : 0; sector += (sqrt3*Ubeta - Ualpha > 0) ? 4 : 0; // 矢量作用时间计算 T1 = (sqrt3*Ts/Udc)*(Ualpha - Ubeta/sqrt3); T2 = (sqrt3*Ts/Udc)*(Ubeta*2/sqrt3);这段看着简单实则暗藏杀机。上周熬夜调参才发现sqrt3必须用双精度浮点,用float类型直接导致电流毛刺,波形跟心电图似的。有个取巧办法:把sqrt(3)改成1.7320508075688772,仿真步长设成5us刚刚好。
双闭环控制最怕积分饱和,分享个带抗饱和的PI代码:
void PI_Update(PI_TypeDef* hpi) { float err = hpi->Ref - hpi->Fdb; hpi->Integral += hpi->Ki * err * hpi->Ts; // 抗饱和处理 if(hpi->Integral > hpi->Limit) hpi->Integral = hpi->Limit; else if(hpi->Integral < -hpi->Limit) hpi->Integral = -hpi->Limit; hpi->Output = hpi->Kp * err + hpi->Integral; }重点在积分限幅的位置,必须在累加之后输出之前做钳位。之前把限幅放在积分累加前,结果速度环跟踪时总差0.5rpm死活调不准,排查两天才发现是这里顺序反了。
波形调试有个秘诀:把Simplorer的示波器调成红绿蓝三通道,红看给定转速,绿看实际转速,蓝看q轴电流。当蓝色曲线像猎豹追羚羊一样扑向绿色曲线时,说明参数调到位了。记得把PWM载波频率设成开关器件真实值,别整10kHz这种理想值,IGBT实际跑到8kHz就开始烫手了。
最后说个坑:Maxwin导出模型时勾选Consider Core Loss选项会导致Simplorer仿真步长必须小于5us,否则转矩计算会飘。建议第一次仿真先不勾这个,等主电路调通了再重新导出带铁损的精细模型。