Engee 文档
Notebook

电机热图

本例演示了如何使用集中参数模型模拟无刷电机的热状态。定子、绕组和转子中的功率损耗产生的热量由三个热通量源表示:定子发热量(Q 定子)、绕组发热量(Q 绕组)以及磁化和涡流损耗导致的转子发热量(Q 转子)。这些损耗在模拟典型电机循环过程中记录下来,并存储在重复表块中。电机热回路由导热元件、热质量和对流传热块组成,再现了绕组、定子、机壳、转子、前后轴承座和法兰等部件的热路径。电机通过轴承座-大气层、法兰-大气层和轴承 1-大气层接触与大气进行热交换。环境条件是通过设置在 300 K 的理想温度源进行模拟的。

模型示意图:

motor_thermal_circuit_1733400267958.png

定义加载和运行模型的函数:

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]:
start_model_engee (generic function with 1 method)

运行模拟

In [ ]:
try
    start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
    catch err
    end;

将温度和热通量信号从模拟输出写入变量:

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]: