Проверка параметров PMSM по паспортным данным
Проверка параметров синхронного двигателя с постоянными магнитами по паспортным данным
В этом примере показаны две тестовых обвязки синхронного двигателя с постоянными магнитами (СДПМ) на основе блока PMSM. Первая схема позволяет проверить частоту вращения и крутящий момент в номинальном режиме и рассчитать КПД двигателя. Вторая схема предназначена для проверки крутящего момента при заблокированном роторе.
Параметры модели
Зададим параметры из технической документации на двигатель. Постоянную крутящего момента, амплитуду номинального фазного тока и электрическую частоту рассчитаем на их основе. Номинальный ток задан действующим значением, а ток при заблокированном роторе — пиковым.
В блоке PMSM для параметра Параметризация магнитного потока постоянных магнитов выбран вариант Постоянная крутящего момента. Параметры R и L задают активное сопротивление фазы статора и собственную индуктивность фазы статора.
nPolePairs = 2; # Число пар полюсов
iRated = 2.5; # Действующее значение номинального фазного тока, А
rpmRated = 7500; # Номинальная частота вращения, об/мин
torqueRated = 0.07; # Номинальный крутящий момент на валу, Н·м
torqueStall = 0.28; # Крутящий момент при заблокированном роторе, Н·м
R = 3.43; # Активное сопротивление фазы статора, Ом
L = 0.53e-3; # Собственная индуктивность фазы статора, Гн
iStall = 8.5; # Пиковый фазный ток при заблокированном роторе, А
freqStall = 1e-9 / 60 * nPolePairs; # Частота источников тока, Гц
torqueConstant = 2 / 3 * torqueStall / iStall; # Постоянная крутящего момента, Н·м/А
iNom = sqrt(2) * iRated; # Амплитуда номинального фазного тока, А
freq = rpmRated / 60 * nPolePairs; # Электрическая частота, Гц
Модель в номинальном режиме
nom_pmsm_motor_mode.engee

В модели nom_pmsm_motor_mode.engee учитываются вязкое трение, трение покоя и сухое трение. Зададим соответствующие параметры:
viscousDamping = 1.13e-6; # Коэффициент вязкого трения, Н·м/(рад/с)
staticFriction = 7e-4; # Момент трения покоя, Н·м
coulFriction = 0.8 * staticFriction; # Момент сухого трения, Н·м
Нагрузку на валу создаёт дополнительный вращательный демпфер. Рассчитаем его коэффициент так, чтобы при номинальной частоте вращения момент нагрузки был равен номинальному крутящему моменту:
kDamp = torqueRated / (rpmRated * 2 * pi / 60); # Коэффициент демпфирования нагрузки, Н·м/(рад/с)
Сравним рассчитанные частоту вращения и крутящий момент на валу с номинальными значениями, а также определим КПД двигателя.
Проверка параметров и расчёт КПД
Загрузим и запустим модель nom_pmsm_motor_mode.engee:
engee.addpath(@__DIR__)
if "nom_pmsm_motor_mode" in [m.name for m in engee.get_all_models()]
m = engee.open("nom_pmsm_motor_mode")
else
m = engee.load("nom_pmsm_motor_mode.engee")
end
nom_results = engee.run(m, verbose=true)
Полученные из результатов моделирования угловая скорость, крутящий момент, фазные токи и линейные напряжения. Сигналы v_a, v_b и v_c соответствуют напряжениям между фазами a–b, b–c и c–a:
t_nom = collect(nom_results["W"]).time; # Время, с
W_nom = collect(nom_results["W"]).value; # Угловая скорость вала, рад/с
T_nom = collect(nom_results["T"]).value; # Крутящий момент на валу, Н·м
Ia_nom = collect(nom_results["i_a"]).value; # Ток в фазе a, А
Ib_nom = collect(nom_results["i_b"]).value; # Ток в фазе b, А
Ic_nom = collect(nom_results["i_c"]).value; # Ток в фазе c, А
Vab_nom = collect(nom_results["v_a"]).value; # Линейное напряжение a–b, В
Vbc_nom = collect(nom_results["v_b"]).value; # Линейное напряжение b–c, В
Vca_nom = collect(nom_results["v_c"]).value; # Линейное напряжение c–a, В
Рассчитаем электрическую мощность по формуле .
Механическая мощность рассчитывается по формуле .
Для оценки КПД используем отношение средних мощностей за последний электрический период моделирования, когда номинальный режим установился:
using Statistics
electricalPower = Ia_nom .* Vab_nom - Ic_nom .* Vbc_nom;
mechanicalPower = W_nom .* T_nom;
steady = t_nom .>= t_nom[end] - 1 / freq;
efficiency = 100 * mean(mechanicalPower[steady]) / mean(electricalPower[steady]);
println("КПД в номинальном режиме: $(round(efficiency, digits=2)) %")
Построим график частоты вращения вала и сравним результат моделирования с номинальным значением. Для графика переведём угловую скорость из рад/с в об/мин:
using Plots
plotlyjs();
plot(t_nom, 60 / (2 * pi) * W_nom, title="Частота вращения вала", xlabel="Время, с", ylabel="Частота вращения, об/мин", w = 2, label="Модель PMSM")
plot!(t_nom, fill(rpmRated, length(t_nom)), w = 2, linestyle=:dash, label="Номинальное значение")
Сравним крутящий момент на валу с номинальным значением:
plot(t_nom, T_nom, title="Крутящий момент на валу", xlabel="Время, с", ylabel="Крутящий момент, Н·м", w = 2, label="Модель PMSM")
plot!(t_nom, fill(torqueRated, length(t_nom)), w = 2, linestyle=:dash, label="Номинальное значение")
Построим графики токов в трёх фазах статора:
plot(t_nom, [Ia_nom Ib_nom Ic_nom], title="Фазные токи", xlabel="Время, с", ylabel="Ток, А", w = 2, label=["Фаза a" "Фаза b" "Фаза c"])
После переходного процесса частота вращения вала и крутящий момент приближаются к номинальным значениям. Графики фазных токов показывают токи, при которых получен этот режим.
Модель с заблокированным ротором
stall_pmsm_motor_mode.engee
.png)
В модели stall_pmsm_motor_mode.engee ротор неподвижен. Проверим крутящий момент при заданном пиковом фазном токе.
Загрузим и запустим модель stall_pmsm_motor_mode.engee:
if "stall_pmsm_motor_mode" in [m.name for m in engee.get_all_models()]
m = engee.open("stall_pmsm_motor_mode")
else
m = engee.load("stall_pmsm_motor_mode.engee")
end
stall_results = engee.run(m, verbose=true)
Крутящий момент из результатов моделирования:
t_stall = collect(stall_results["T"]).time; # Время, с
T_stall = collect(stall_results["T"]).value; # Крутящий момент при заблокированном роторе, Н·м
Сравним крутящий момент при заблокированном роторе со значением из технической документации:
plot(t_stall, T_stall, title="Крутящий момент при заблокированном роторе", xlabel="Время, с", ylabel="Крутящий момент, Н·м", w = 2, label="Модель PMSM")
plot!(t_stall, fill(torqueStall, length(t_stall)), w = 2, linestyle=:dash, label="Значение из документации")
Рассчитанный крутящий момент при заблокированном роторе близок к значению из технической документации. Совместно с проверкой номинального режима это позволяет оценить согласованность выбранных параметров двигателя.