Engee 文档
Notebook

根据WLTC循环模拟电动汽车的运动

本例将演示根据WLTC行驶周期对电动车辆运动的模拟。 汽车,电气和机械系统的参数重复了像日产Leaf这样的电动汽车的特性。

模型的参数和结构描述

电动汽车的运动及其惯性由块电动汽车描述。 从连接到变速箱和电动机的两对车轮产生的力转换和产生扭矩来到这个单元的左端口。 单元中也计算空气阻力。

模型的主要参数:

/块名/主参数|
| ----------- | ----------- |
/电动车/重量1000公斤|
/电池/电压390V|
/电动机/扭矩常数4nm/A|
/车轮/半径0.32米|
/差速器/齿轮比0.5|
/空气阻力系数/0.28|

模型图:

electrocar_disc_brake_drive_mod_1--1739965487918.png

电动汽车单元

子系统图电动汽车:

electrocar_disc_brake_drive_mod_1--1740063224412_2.png

该子系统中的空气阻力由公式确定:

哪里: -阻力系数, -空气密度, , -中部的面积(垂直于运动方向的物体的最大横截面面积), , -电动汽车的速度。

子系统中定义的主要参数电动汽车:

image_2.png

驱动程序子系统图:

electrocar_disc_brake_drive_mod_1--1740063684238.png

驱动器子系统是一个控制系统,它为执行器产生控制信号,执行器是电动汽车的制动器和电动机。 电动机由块前轴电动机后轴电动机表示,并由块制动系统表示制动器。 在Add模块中,在设定速度和测量速度之间计算失配信号,然后将其发送到生成控制信号的PID控制器。

制动系统的子系统图:

electrocar_disc_brake_drive_mod_1--1740068897907.png

该子系统由4个制动盘组成。 来到端口P的输入信号确定制动系统中的压力,端口S将制动扭矩传递到每个车轮。

WLTC区块

WLTC块是一个From Workspace块,从模型的回调中接收有关XLSX格式转换的WLTC驱动周期的数据。

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

In [ ]:
function start_model_engee()
    try
        engee.close("electric_vehicle_performance", force=true) # закрытие модели 
        catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
            m = engee.load("$(@__DIR__)/electric_vehicle_performance.engee") # загрузка модели
        end;

    try
        engee.run(m) # запуск модели
        catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
            m = engee.load("$(@__DIR__)/electric_vehicle_performance.engee") # загрузка модели
            engee.run(m) # запуск модели
        end
end
Out[0]:
start_model_engee (generic function with 1 method)

运行模拟

In [ ]:
start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
Out[0]:
SimulationResult(
    "Крутящий момент электродвигателя" => WorkspaceArray("electric_vehicle_performance/Расчёт мощности/Крутящий момент электродвигателя"),
    "Скорость в км/ч" => WorkspaceArray("electric_vehicle_performance/Электромобиль/Скорость в км/ч"),
    "Мощность электродвигателя, кВт" => WorkspaceArray("electric_vehicle_performance/Расчёт мощности/Мощность электродвигателя, кВт"),
    "WLTC.1" => WorkspaceArray("electric_vehicle_performance/WLTC.1"),
    "Тормозной момент, Н*м" => WorkspaceArray("electric_vehicle_performance/Тормозная система/Тормозной момент, Н*м"),
    "Частота вращения электродвигателя" => WorkspaceArray("electric_vehicle_performance/Расчёт мощности/Частота вращения электродвигателя"),
    "Перемещение в км" => WorkspaceArray("electric_vehicle_performance/Электромобиль/Перемещение в км"),
    "Сила сопротивления воздуха" => WorkspaceArray("electric_vehicle_performance/Электромобиль/Сила сопротивления воздуха"),
    "Заряд батареи" => WorkspaceArray("electric_vehicle_performance/Заряд батареи"),
    "From-2.1" => WorkspaceArray("electric_vehicle_performance/From-2.1"),
    "Сила со стороны трансмиссии" => WorkspaceArray("electric_vehicle_performance/Электромобиль/Сила со стороны трансмиссии")
)

从simout到变量的模拟过程中接收到的信号的记录(有大量的数据,该过程可能需要大约4分钟):

In [ ]:
t = simout["electric_vehicle_performance/Электромобиль/Скорость в км/ч"].time[:]; # время
T = simout["electric_vehicle_performance/Расчёт мощности/Крутящий момент электродвигателя"].value[:]; # крутящий момент электродвигателя
speed = simout["electric_vehicle_performance/Электромобиль/Скорость в км/ч"].value[:]; # скорость автомобиля
forces_left = simout["electric_vehicle_performance/Электромобиль/Сила со стороны трансмиссии"].value[:]; # силы, действующие на автомобиль со стороны трансмиссии 
forces_right = simout["electric_vehicle_performance/Электромобиль/Сила сопротивления воздуха"].value[:]; # силы, действующие на автомобиль со стороны окружающей среды
w = simout["electric_vehicle_performance/Расчёт мощности/Частота вращения электродвигателя"].value[:]; # частота вращения электродвигателя
q = simout["electric_vehicle_performance/Заряд батареи"].value[:]; # заряд батареи
P = simout["electric_vehicle_performance/Расчёт мощности/Мощность электродвигателя, кВт"].value[:]; # мощность электродвигателя
WLTC1 = simout["electric_vehicle_performance/WLTC.1"].value[:]; # цикл WLTC
pos = simout["electric_vehicle_performance/Электромобиль/Перемещение в км"].value[:]; # перемещение электромобиля
;

模拟结果的可视化

启动图表库:

In [ ]:
using Plots
gr()
Out[0]:
Plots.GRBackend()

绘制作用在电动汽车上的力及其速度:

In [ ]:
p1 = plot(t, forces_left, label="Усилие от трансмиссии, Н", linewidth=2)
p2 = plot(t, forces_right, label="Сопротивление воздуха, Н", linewidth=2, linecolor=2)
p3 = plot(t, speed, label="Скорость, км/ч", linewidth=2, linecolor=3)
plot(p1, p2, p3, layout=(3,1))
Out[0]:

通过对力图的分析,我们可以得出结论,高速行驶周期的各个阶段对能耗的贡献最大。 这是由于作用在电动车辆上的空气动力拖曳力与速度的平方成比例地增加。

绘制电动机的扭矩、速度和功率:

In [ ]:
p1 = plot(t, T, label="Крутящий момент, Н*м", linewidth=2)
p2 = plot(t, (w * 9.55), label="Частота вращения, об/мин", linewidth=2, linecolor=2)
p3 = plot(t, (T .* w ./1000), label="Мощность, кВт", linewidth=2, linecolor=3)
plot(p1, p2, p3, layout=(3,1))
Out[0]:

随着汽车加速,扭矩减小,电动马达的旋转速度增加。 这种电动机产生的机械功率随着空气阻力的增加而增加,这取决于速度。

使用公式计算电动机的功率:

哪里 -扭矩,在 ,而 -旋转速度,在 .

测量和设定速度图:

In [ ]:
plot(t, speed, label="Измеренная скорость, км/ч", linewidth=2)
plot!(t, WLTC1, label="Заданная скорость, км/ч", linewidth=2)
Out[0]:

曲线图显示电动汽车以小偏差坚持设定速度。 您可以通过微调单元中的控件来减少这些偏差。 司机

电动汽车运动和电池充电图:

In [ ]:
p1 = plot(t, pos, label="Перемещение электромобиля, км", linewidth=2)
p2 = plot(t, (q * 0.0002777777777778), label="Заряд батареи, А*ч", linewidth=2)
plot(p1, p2, layout=(2,1))
Out[0]:

通过分析电动汽车的电池充电和运动图,您可以计算出在克服路径上花费了多少能量。:

In [ ]:
println("Энергия, затраченная на один ездовой цикл: ", round(maximum(q * 0.000277) - minimum(q * 0.000277), digits=3), " А*ч")
Энергия, затраченная на один ездовой цикл: 20.83 А*ч

通过简单的计算,你可以估计一个电动汽车的行驶范围在一个完整的电池充电。:

In [ ]:
total_tange = maximum(q * 0.000277) / (maximum(q * 0.000277) - minimum(q * 0.000277)) * maximum(pos)
println("Запас хода электромобиля: ", round(total_tange, digits=3), " км")
println("Удельный расход энергии: ", maximum(q * 0.000277) / total_tange, " А*ч/км")
Запас хода электромобиля: 111.33 км
Удельный расход энергии: 0.9136257264575948 А*ч/км

结论:

该示例演示了根据WLTC行驶周期对电动车辆运动的模拟。 已经对生产率,特别是动力储备和特定能源消耗进行了计算。 模型可以通过对块进行额外的参数化和调整控件来细化. 还可以将其他行驶循环加载到From块中,该块可用于评估电动汽车在不同条件下的性能。