Modelica中逆变器与PMSM连接仿真结果异常求助
排查Modelica逆变器-永磁同步电机模型仿真异常问题
先帮你梳理下模型里的几个关键问题点,以及对应异常现象的原因:
一、模型结构的潜在问题
1. 直流电源连接逻辑
你用了两个ConstantVoltage串联来提供直流母线电压,虽然理论上能得到100V母线电压(50V+50V),但接地方式(ground.p接constantVoltage_p.n)会让逆变器的dc_p为+50V、dc_n为-50V,这种对称接地的方式可能会在仿真中引入数值稳定性问题,而且不如直接用单个DCVoltage直观。
2. PWM相序错误
你的三相正弦信号相位设置为-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m),对于m=3的情况,symmetricOrientation(3)输出正序相位[0, 2π/3, 4π/3],加负号后变成了逆序相位,这会导致电机旋转方向与预期相反,甚至出现转矩抵消、转速振荡的情况。
3. 电机与负载参数不匹配
你设置的负载转矩TLoad=181.4N·m,但根据电机参数计算:
- 永磁磁链
ψ_m = VsOpenCircuit/(2πf1) = 100/(2π*50) ≈ 0.318Wb - 最大输出转矩(假设Lmd=Lmq)
T_max = 3/2 * p * ψ_m * I_max,而电机的最大电流受限于母线电压和定子阻抗,估算下来远不足以支撑181.4N·m的负载,会导致电机失速。
4. 无阻尼笼导致稳定性差
你把SM_PermanentMagnet的useDamperCage设为false,永磁同步电机没有阻尼笼时,空载或负载突变时容易出现转速振荡,甚至失步。
二、针对两种异常现象的具体分析
1. JLoad=0且TLoad=0时,转速呈小幅值正弦波动
- 无阻尼笼的永磁电机在空载时,若初始转速为0,需要逐步建立磁链并加速到同步转速(375rpm,约39.27rad/s),但因为没有阻尼笼抑制振荡,加上逆序PWM信号的干扰,会出现小幅值的转速波动。
- 另外,仿真初始条件未设置为稳态,电机从静止开始启动,也会有短暂的过渡过程振荡。
2. JLoad=0.29且TLoad=-180时,施加转矩后转速变负
- 首先是转矩方向定义错误:Modelica中
Rotational.TorqueStep的stepTorque为负时,代表负载给电机施加反向转矩;加上之前的逆序PWM信号,电机本身旋转方向就可能是反向的,施加反向负载转矩后会直接导致转速变为负值。 - 其次是负载转矩过载:电机无法提供足够的转矩对抗负载,直接失速反转。
三、模型调整建议
1. 修正直流电源配置
替换两个串联的ConstantVoltage为单个DCVoltage,简化连接:
Modelica.Electrical.Analog.Sources.DCVoltage dcBus(V=100) annotation(Placement(...)); connect(dcBus.p, inverter.dc_p); connect(dcBus.n, inverter.dc_n); connect(dcBus.n, ground.p);
2. 修正PWM相序
将Sine源的相位改为正序:
Modelica.Blocks.Sources.Sine sine[m]( phase = Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m), startTime = zeros(m), amplitude = fill(0.5, m), offset = fill(0.5, m), freqHz = fill(f1, m) ) annotation(...);
3. 匹配电机与负载参数
- 要么降低负载转矩至电机可承受范围(比如先测试50N·m),要么调整电机参数(比如增大
VsOpenCircuit、减小Rs),确保电机能输出足够的转矩。
4. 启用阻尼笼
将SM_PermanentMagnet的useDamperCage设为true,提升系统稳定性:
Modelica.Electrical.Machines.BasicMachines.SynchronousInductionMachines.SM_PermanentMagnet smpm( Jr = 0.29, p = 8, fsNominal = f1, VsOpenCircuit = 100, TsOperational = 293.15, TrOperational = 293.15, Rs = 4.7, TsRef = 293.15, alpha20s = Modelica.Electrical.Machines.Thermal.Constants.alpha20Aluminium, Lssigma = 0.001, Lmd = 0.0133, Lmq = 0.0133, useDamperCage = true // 改为true ) annotation(...);
5. 调整转矩方向与初始条件
- 将
TorqueStep的stepTorque改为TLoad(正数值),这样负载转矩是阻碍电机转动的阻转矩,符合实际负载逻辑。 - 在仿真实验设置中,将电机初始转速设为同步转速(
39.27rad/s),缩短过渡过程:annotation( experiment( StartTime = 0.00, StopTime = 5, NumberOfIntervals = 5000, __Wolfram_Algorithm = "dassl", Tolerance = 1e-6, __Wolfram_SynchronizeWithRealTime = false, InitialValues = {smpm.w = 39.27} // 添加初始转速 ), Diagram(...) );
内容的提问来源于stack exchange,提问作者Moebo
相关产品推荐
相关产品推荐

