电动汽车通过 WLTC 循环的运动建模¶
本例将演示电动汽车在 WLTC 驾驶循环中的行驶建模。车辆、电气和机械系统的参数遵循日产聆风等电动汽车的特性。
参数和模型结构描述¶
电动车辆的运动及其惯性由电动车辆块描述。该程序块的左端口接收来自两对车轮的合力,这两对车轮与变速箱和电动马达相连,可转换并产生扭矩。该程序块还计算空气阻力。
模型的主要参数如下
| 块名称 | 基本参数 | 块名称 | 基本参数 | 块名称 | 基本参数 | 块名称 | 基本参数 | ----------- | ----------- | | 电动汽车 | 重量 1000 千克 | 电池 | 电池电压 390 V | 电机 | 恒定扭矩 4 Nm/A | 车轮半径 0.32 米 | 差速器齿比 0.5 | 空气阻力系数 | 0.28 | 0.28
模型示意图:
块状电动车¶
子系统电动汽车示意图:
该子系统中的空气阻力由公式确定:
$$F_d = \frac{1}{2} C_x \rho S v^2,$$
其中 $Cx$ - 阻力系数,$\rho$ - 空气密度,$кг/м^3$,$S$ - 中段面积(物体垂直于运动方向的最大横截面积),$м^2$,$v$ - 电动汽车的速度。
电动汽车**子系统中定义的主要参数:
子系统驱动程序方案:¶
驱动子系统是一个控制系统,为电动汽车的制动器和电动马达等执行器生成控制信号。电动机由前轴电动机和后轴电动机块表示,制动器由制动系统块表示。添加**块计算设定速度和测量速度之间的不匹配信号,然后将其输入生成控制信号的 PID 控制器。
制动系统子系统图:¶
子系统由 4 个制动盘组成。端口 P 的输入信号决定制动系统的压力,端口 S 将制动扭矩传递到每个车轮。
WLTC 单元¶
WLTC 块是一个 From Workspace 块,用于接收从模型回调转换成 XLSX 格式的 WLTC 驱动循环数据。
定义加载和运行模型的函数:¶
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 驾驶循环中的行驶建模。已经进行了性能计算,特别是行驶里程和具体能耗。可以通过进一步设置模块参数和调整控制器来完善模型。其他行驶循环也可载入从工作区块,用于评估电动汽车在不同条件下的性能。