电动机的热方案
此示例演示如何使用集总参数模型对无刷电机的热状态进行建模。 由于定子、绕组和转子中的功率损耗而产生的热量由三个热流源表示:定子中的热量产生(定子的Q)、绕组的热量产生(绕组的Q)以及由于磁化和涡流的损 在典型电动马达循环的模拟期间记录损耗,并存储在块重复表中。 发动机的热回路由导热元件、热质量和对流传热单元组成,这些单元再现了绕组、定子、外壳、转子、前后轴承支撑和法兰等部件的热传播方式。 发动机通过触点外壳-大气、法兰-大气和轴承1-大气与大气进行热交换。 使用设置在300K的理想温度源模拟环境条件。
模型图:
定义加载和运行模型的函数:
In [ ]:
function start_model_engee()
try
engee.close("motor_thermal_circuit", force=true) # закрытие модели
catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
m = engee.load("$(@__DIR__)/motor_thermal_circuit.engee") # загрузка модели
end;
try
engee.run(m) # запуск модели
catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
m = engee.load("$(@__DIR__)/motor_thermal_circuit.engee") # загрузка модели
engee.run(m) # запуск модели
end
end
Out[0]:
运行模拟
In [ ]:
try
start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
catch err
end;
记录从simout到变量的温度和热流信号:
In [ ]:
t = collect(simout["Тепловая масса статора.T"].time[:])
Температура_ротора = collect(simout["Тепловая масса ротора.T"].value[:])
Температура_обмоток = collect(simout["Тепловая масса обмоток.T"].value[:])
Температура_статора = collect(simout["Тепловая масса статора.T"].value[:])
Температура_корпуса = collect(simout["Тепловая масса корпуса.T"].value[:])
Тепловыделение_ротора = collect(simout["Тепловая масса ротора.T"].value[:])
Тепловыделение_обмоток = collect(simout["Тепловая масса обмоток.T"].value[:])
Тепловыделение_статора = collect(simout["Тепловая масса статора.T"].value[:]);
模拟结果的可视化
In [ ]:
using Plots
In [ ]:
plot(t[:,1], Температура_ротора[:,1], label="Температура ротора, K", linewidth=2)
plot!(t[:,1], Температура_статора[:,1], label="Температура статора, K", linewidth=2)
plot!(t[:,1], Температура_обмоток[:,1], label="Температура обмоток, K", linewidth=2)
plot!(t[:,1], Температура_корпуса[:,1], label="Температура корпуса, K", linewidth=2, legend=:bottomright)
Out[0]:
In [ ]:
plot(t[:,1], Тепловыделение_ротора[:,1], label="Тепловыделение ротора, Вт", linewidth=2)
plot!(t[:,1], Тепловыделение_статора[:,1], label="Тепловыделение статора, Вт", linewidth=2)
plot!(t[:,1], Тепловыделение_обмоток[:,1], label="Тепловыделение обмоток, Вт", linewidth=2, legend=:bottomright)
Out[0]: