Моделирование движения электромобиля по циклу WLTC¶
В данном примере будет продемонстрировано моделирование движения электромобиля по ездовому циклу WLTC. Параметры автомобиля, электрической и механической систем повторяют характеристики электромобиля подобного Nissan Leaf.
Описание параметров и структуры модели¶
Движение электромобиля и его инерционность описываются блоком Электромобиль. На левый порт этого блока приходит результирующее усилие от двух пар колёс, соединённых с редукторами и электродвигателями, преобразующими и создающими крутящий момент. В блоке также рассчитывается сила сопротивления воздуха.
Основные параметры модели:
Название блока | Основной параметр |
---|---|
Электромобиль | Масса 1000 кг |
Батарея | Напряжение 390 В |
Электродвигатели | Постоянная крутящего момента 4 Нм/А |
Колёса | Радиус 0,32 м |
Дифференциалы | Передаточное отношение 0,5 |
Коэффициент сопротивления воздуха | 0.28 |
Схема модели:
Блок Электромобиль¶
Схема подсистемы Электромобиль:
Сила сопротивления воздуха в данной подсистеме определяется по формуле:
$$F_d = \frac{1}{2} C_x \rho S v^2,$$
где: $Cx$ - коэффициент лобового сопротивления, $\rho$ - плотность воздуха, $кг/м^3$, $S$ - площадь миделя (наибольшая площадь поперечного сечения объекта, перпендикулярная направлению движения), $м^2$, $v$ - скорость электромобиля.
Основные параметры, определяемые в подсистеме Электромобиль:
Схема подсистемы Водитель:¶
Подсистема Водитель представляет собой систему управления, которая генерирует управляющие сигналы для исполнительных устройств, которыми являются тормоза и электродвигатели электромобиля. Электродвигатели представлены блоками Электродвигатель передней оси и Электродвигатель задней оси, а тормоза блоком Тормозная система. В блоке Add вычисляется сигнал рассогласования между заданной и измеренной скоростями, который затем поступает на PID-регуляторы, генерирующие управляющие сигналы.
Схема подсистемы Тормозная система:¶
Подсистема состоит из 4-х тормозных дисков. Входной сигнал, поступающий на порт P, определяет давление в тормозной системе, порт S передаёт тормозной момент на каждое из колёс.
Блок WLTC¶
Блок WLTC представляет собой блок From Workspace в который, из обратных вызовов модели, поступают данные о ездовом цикле WLTC, преобразованные из формата XLSX.
Определение функции для загрузки и запуска модели:¶
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
Запуск симуляции¶
start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
Запись из simout в переменные сигналов, полученных в ходе симуляции (данных много, процесс может занимать около 4-х минут):
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[:]; # перемещение электромобиля
;
Визуализация результатов моделирования¶
Запуск библиотеки для построения графиков:
using Plots
gr()
Построение графиков сил, действующих на электромобиль и его скорости:
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))
Анализ графиков сил позволяет заключить, что наибольший вклад в энергопотребление вносят этапы ездового цикла с высокой скоростью движения. Это связано с тем, что сила аэродинамического сопротивления, действующая на электромобиль, возрастает пропорционально квадрату скорости.
Построение графиков крутящего момента, частоты вращения и мощности электродвигателя:
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))
По мере разгона автомобиля уменьшается крутящий момент и увеличивается скорость вращения электродвигателя. Механическая мощность, производимая этим электродвигателем, возрастает, поскольку растёт и сила сопротивления воздуха, в зависимости от скорости.
Мощность электродвигателя рассчитывается по формуле: $$P = \frac {M*w}{1000}, $$
где $M$ - крутящий момент, в $Н \cdot м$, а $w$ - частота вращения, в $\frac {рад}{с}$.
График измеренной и заданной скорости:
plot(t, speed, label="Измеренная скорость, км/ч", linewidth=2)
plot!(t, WLTC1, label="Заданная скорость, км/ч", linewidth=2)
По графику видно что электромобиль с небольшими отклонениями придерживается заданной скорости. Уменьшить эти отклонения можно с помощью более тонкой настройки регуляторов в блоке Водитель.
Графики перемещения электромобиля и заряда батареи:
p1 = plot(t, pos, label="Перемещение электромобиля, км", linewidth=2)
p2 = plot(t, (q * 0.0002777777777778), label="Заряд батареи, А*ч", linewidth=2)
plot(p1, p2, layout=(2,1))
Анализируя графики заряда батареи и перемещения электромобиля, можно подсчитать, сколько было затрачено энергии на преодоление пути:
println("Энергия, затраченная на один ездовой цикл: ", round(maximum(q * 0.000277) - minimum(q * 0.000277), digits=3), " А*ч")
Путём несложных расчётов можно оценить дальность езды электромобиля на одном полном заряде батареи:
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, " А*ч/км")
Вывод:¶
В данном примере продемонстрировано моделирование движения электромобиля по ездовому циклу WLTC. Проведены расчёты производительности, в частности запаса хода и удельного расхода энергии. Модель может быть уточнена путём дополнительной параметризации блоков и с помощью настройки регуляторов. Также в блок From Workspace могут быть загружены другие ездовые циклы, с помощью которых можно оценить производительность электромобиля в разных условиях.