目录
1 博客内容
题记:一汽使用导航动态数据规划能量管理专利,内容部分公式不合适,策略复杂也没讲透彻。本篇内容不申请发明专利,写出来供大家参考。本文可使用网址链接转载,内容转载须联系本人。
算例来源:多年前杂货铺需要找零18.88元。有10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01元纸币。收银员使用纸币张数→最优是10张,最差是1888张。有时找零发现5角纸币没了,程序自动计算,最优是12张(少1张5角,用2张2角,1张1角补上)。
算例简用:混合动力车有2度电和一箱油。1度电行驶里程6km@10km/h,5km@100km/h;1L油行驶里程8km@10km/h,16km@100km/h。上班先市区6公里(10km/h),再走绕城20公里(100km/h),最后市区6公里(10km/h)。设计员需要使用最少油量到达目的地→最优是1.25L,最差是2.125L。
2 更新算例
2.1 车辆动力学模型
并联式混合动力,其中车辆、变速箱、发动机、电机、电池构型如下图。
2.2 参数输入
2.2.1 车辆滑行阻力
滑行阻力使用中汽研数据,选用日产leaf曲线,二项式拟合后近似方程如下,轮胎规格:215/55R17。
2.2.2 变速箱速比及扭矩损失
使用某车论坛马自达6MT数据作为各档位速比输入。有关变速箱效率损失,设定各档位扭矩损失约8N·m:
2.2.3 发动机万有特性
发动机燃油消耗率,使用EPA(美国环境保护局)网站提供的马自达2.0L-skyact发动机数据。
2.2.4 电机特性
电机特性使用elecfans论坛数据:
3 基础模型数据
3.1 车辆模型计算
系列 | 公式 | 工况0 | 工况1 | 工况2 | 工况3 | 工况4 | 工况5 | 工况6 | 工况7 | 工况8 |
---|---|---|---|---|---|---|---|---|---|---|
车速(km/h) | V | 5 | 10 | 20 | 30 | 50 | 60 | 80 | 100 | 120 |
驱动力(N) | F_Veh=0.0387×V×V+0.2241×V+142.03 | 144.1 | 148.1 | 162.0 | 183.6 | 250.0 | 294.8 | 407.6 | 551.4 | 726.2 |
功率(kW) | P_Veh=F_Veh×V | 0.2 | 0.4 | 0.9 | 1.5 | 3.5 | 4.9 | 9.1 | 15.3 | 24.2 |
车轮半径(m) | R_Wheel=(215×55%×2+25.4×17)/1000/2 | 0.335 | 0.335 | 0.335 | 0.335 | 0.335 | 0.335 | 0.335 | 0.335 | 0.335 |
轮端转速(rpm) | V_wheel=V_veh×1000/60/(2×3.14×R_Wheel) | 39.6 | 79.2 | 158.4 | 237.7 | 396.1 | 475.3 | 633.8 | 792.2 | 950.7 |
轮端扭矩(Nm) | T_Wheel=F_Veh×R_Wheel | 48.3 | 49.6 | 54.3 | 61.5 | 83.7 | 98.8 | 136.6 | 184.7 | 243.3 |
理想百公里电耗(kW·h) | E_Veh_Opt=P_Veh×(100/V) | 4.0 | 4.1 | 4.5 | 5.1 | 6.9 | 8.2 | 11.3 | 15.3 | 20.2 |
3.2 变速箱模型数据
变速箱的输出扭矩即为轮端扭矩。输入扭矩与输出扭矩之间关系除考虑速比外增加扭矩损失计算。
系列 | 公式 | 工况0 | 工况1 | 工况2 | 工况3 | 工况4 | 工况5 | 工况6 | 工况7 | 工况8 |
---|---|---|---|---|---|---|---|---|---|---|
变速箱输出扭矩(N·m) | T_TrsOut=T_Wheel | 39.6 | 79.2 | 158.4 | 237.7 | 396.1 | 475.3 | 633.8 | 792.2 | 950.7 |
变速箱输出转速(rpm) | V_TrsOut=V_Wheel | 48.3 | 49.6 | 54.3 | 61.5 | 83.7 | 98.8 | 136.6 | 184.7 | 243.3 |
变速箱档位(-) | N_Gear | 1 | 1 | 2 | 3 | 4 | 4 | 5 | 6 | 6 |
档位速比(-) | K_Gear | 15.16 | 15.16 | 9.03 | 5.75 | 4.26 | 4.26 | 3.49 | 2.98 | 2.98 |
各档位扭矩损失(N·m) | T_Trslos | 7.5 | 7.5 | 7.75 | 8 | 8.25 | 8.25 | 8.5 | 8.75 | 8.75 |
变速箱效率(-) | η_Trs | 0.30 | 0.30 | 0.44 | 0.57 | 0.70 | 0.74 | 0.82 | 0.88 | 0.90 |
变速箱输入端扭矩(N·m) | T_TrsIn=T_TrsOut/K_Gear+T_Trslos | 10.68 | 10.77 | 13.76 | 18.70 | 27.91 | 31.43 | 47.63 | 70.74 | 90.39 |
变速箱输入端转速(rpm) | N_TrsIn=V_TrsOut*K_Gear | 601 | 1201 | 1431 | 1367 | 1687 | 2025 | 2212 | 2361 | 2833 |
变速箱输入功率(kW) | P_TrsIn=T_TrsIn*N_TrsIn/9550 | 0.67 | 1.35 | 2.06 | 2.68 | 4.93 | 6.66 | 11.03 | 17.49 | 26.81 |
4 算例工况
4.1 工况1_CD模式
电池提供整车行驶动力(CD模式),不考虑电池的内阻&SOC影响。
系列 | 公式 | 工况0 | 工况1 | 工况2 | 工况3 | 工况4 | 工况5 | 工况6 | 工况7 | 工况8 |
---|---|---|---|---|---|---|---|---|---|---|
电机输出扭矩 | P_EM_Out=P_TrsIn | 0.67 | 1.35 | 2.06 | 2.68 | 4.93 | 6.66 | 11.03 | 17.49 | 26.81 |
电机效率(-) | η_EM | 0.82 | 0.84 | 0.85 | 0.87 | 0.89 | 0.89 | 0.92 | 0.92 | 0.92 |
电池输出功率(kW) | P_Bat=P_EM_In=P_EM_Out/η | 0.82 | 1.61 | 2.43 | 3.08 | 5.57 | 7.49 | 12.06 | 19.11 | 29.21 |
百公里电耗(度) | E_EM_CD=(100/V)*P_Bat | 16.39 | 16.13 | 12.13 | 10.25 | 11.14 | 12.48 | 15.07 | 19.11 | 24.34 |
每度电行驶里程(km/度) | EM_Km_P_kW·h=100/E_EM_CD | 6.10 | 6.20 | 8.25 | 9.76 | 8.97 | 8.01 | 6.64 | 5.23 | 4.11 |
4.2 工况2_CS模式
内燃机提供整车行驶动力(CS模式),电机不参与工作。
系列 | 公式 | 工况0 | 工况1 | 工况2 | 工况3 | 工况4 | 工况5 | 工况6 | 工况7 | 工况8 |
---|---|---|---|---|---|---|---|---|---|---|
内燃机转速(rpm) | N_ICE_Out=N_TrsIn | 601 | 1201 | 1431 | 1367 | 1687 | 2025 | 2212 | 2361 | 2833 |
内燃机扭矩(N·m) | T_ICE_Out=T_TrsIn | 10.68 | 10.77 | 13.76 | 18.70 | 27.91 | 31.43 | 47.63 | 70.74 | 90.39 |
内燃机输出功率(kW) | P_ICE=P_TrsIn | 0.67 | 1.35 | 2.06 | 2.68 | 4.93 | 6.66 | 11.03 | 17.49 | 26.81 |
内燃机油耗(g/kW·h) | Ge | 700 | 650 | 530 | 420 | 375 | 332 | 295 | 250 | 245 |
百公里油耗(L/100km) | E_ICE_CS=P_ICEge/1000/0.74(100/V) | 12.71 | 11.90 | 7.38 | 5.06 | 5.00 | 4.98 | 5.50 | 5.91 | 7.40 |
每升油行驶里程(km/L) | ICE_Km_P_L | 7.87 | 8.40 | 13.55 | 19.76 | 20.01 | 20.07 | 18.19 | 16.93 | 13.52 |
4.3 工况3_CS模式理想
内燃机提供整车行驶动力(CS模式),同时向电机提供动力用于电池充电。
系列 | 公式 | 工况0 | 工况1 | 工况2 | 工况3 | 工况4 | 工况5 | 工况6 | 工况7 | 工况8 |
---|---|---|---|---|---|---|---|---|---|---|
内燃机转速(rpm) | N_ICE_Out=N_TrsIn | 601 | 1201 | 1431 | 1367 | 1687 | 2025 | 2212 | 2361 | 2833 |
是否建议行驶充电 | - | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
内燃机定转速时最佳油耗(g/kW·h) | Ge_Opt | - | 232 | 232 | 232 | 226 | 223 | 225 | 228 | 225 |
内燃机定转速时最佳油耗点扭矩(Nm) | T_ICE_Opt | - | 90 | 115 | 120 | 115 | 125 | 125 | 128 | 140 |
最佳油耗点内燃机转速(rpm) | N_ICE_Opt=N_ICE | - | 1201 | 1431 | 1367 | 1687 | 2025 | 2212 | 2361 | 2833 |
内燃机定速时最佳油耗功率(kW) | P_ICE_Opt | - | 11.3 | 17.2 | 17.2 | 20.3 | 26.5 | 29.0 | 31.6 | 41.5 |
最佳效率时发动机耗油量(L/h) | E_ICE_drive=P_ICE_Opt*Ge_Opt/1000/0.74 | - | 3.55 | 5.40 | 5.38 | 6.21 | 7.99 | 8.80 | 9.75 | 12.63 |
内燃机充电功率 | P_ICE_Charge=P_ICE_Opt-P_ICE | - | 9.96 | 15.17 | 14.50 | 15.39 | 19.84 | 17.92 | 14.15 | 14.72 |
内燃机充电扭矩 | T_ICE_Charge=T_ICE_Opt-T_ICE | - | 79.23 | 101.24 | 101.30 | 87.09 | 93.57 | 77.37 | 57.26 | 49.61 |
电机充电效率@N_ICE | η_Charge | - | 0.900 | 0.905 | 0.910 | 0.920 | 0.928 | 0.935 | 0.940 | 0.941 |
最佳油耗工作时百公里充电量 | Q_Charge_ICE_Opt | - | 89.671 | 68.633 | 43.972 | 28.315 | 30.685 | 20.944 | 13.305 | 11.541 |
电量燃油等效系数(KW·h/L) | K_Charge=P_ICE_Opt/E_ICE_drive*η_Charge | - | 2.87 | 2.89 | 2.90 | 3.01 | 3.08 | 3.08 | 3.05 | 3.09 |
机动车驱动百公里油耗(L/100km) | E_ICE_Opt=P_ICEGe_Opt/1000/0.74(100/V) | - | 4.25 | 3.23 | 2.80 | 3.01 | 3.35 | 4.19 | 5.39 | 6.79 |
4.3 工况3_CS模式实际
实际使用工况,低车速时内燃机充电扭矩时受到舒适性限制而降低充电扭矩而不能使用最佳最优化油耗点,但高车速时由于风噪和胎噪等背景噪声可使用最佳最优化油耗点(大扭矩)。优化后的数据如下:
系列 | 公式 | 工况0 | 工况1 | 工况2 | 工况3 | 工况4 | 工况5 | 工况6 | 工况7 | 工况8 |
---|---|---|---|---|---|---|---|---|---|---|
内燃机转速(rpm) | N_ICE_Out=N_TrsIn | 601 | 1201 | 1431 | 1367 | 1687 | 2025 | 2212 | 2361 | 2833 |
是否建议行驶充电 | - | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
内燃机定转速时最佳油耗(g/kW·h) | Ge_Opt’ | - | 300 | 265 | 236 | 226 | 223 | 225 | 228 | 225 |
内燃机定转速时最佳油耗点扭矩(Nm) | T_ICE_Opt’ | - | 40 | 60 | 80 | 115 | 125 | 125 | 128 | 140 |
最佳油耗点内燃机转速(rpm) | N_ICE_Opt=N_ICE | - | 1201 | 1431 | 1367 | 1687 | 2025 | 2212 | 2361 | 2833 |
内燃机定速时最佳油耗功率(kW) | P_ICE_Opt’ | - | 5.0 | 9.0 | 11.4 | 20.3 | 26.5 | 29.0 | 31.6 | 41.5 |
最佳效率时发动机耗油量(L/h) | E_ICE_drive’=P_ICE_Opt*Ge_Opt/1000/0.74 | - | 2.04 | 3.22 | 3.65 | 6.21 | 7.99 | 8.80 | 9.75 | 12.63 |
内燃机充电功率 | P_ICE_Charge’=P_ICE_Opt’-P_ICE | - | 3.68 | 6.93 | 8.77 | 15.39 | 19.84 | 17.92 | 14.15 | 14.72 |
内燃机充电扭矩 | T_ICE_Charge’=T_ICE_Opt’-T_ICE | - | 29.23 | 46.24 | 61.30 | 87.09 | 93.57 | 77.37 | 57.26 | 49.61 |
电机充电效率@N_ICE | η_Charge’ | - | 0.880 | 0.905 | 0.910 | 0.920 | 0.928 | 0.935 | 0.940 | 0.941 |
最佳油耗工作时百公里充电量 | Q_Charge_ICE_Opt’ | - | 32.344 | 31.347 | 26.610 | 28.315 | 30.685 | 20.944 | 13.305 | 11.541 |
每升燃油充电量(KW·h/L) | K_Charge’=P_ICE_Opt’/E_ICE_drive*η_Charge | - | 2.17 | 2.53 | 2.85 | 3.01 | 3.08 | 3.08 | 3.05 | 3.09 |
车辆百公里油耗(L/100km) | E_ICE_Opt’=P_ICEGe_Opt/1000/0.74(100/V) | - | 5.49 | 3.69 | 2.84 | 3.01 | 3.35 | 4.19 | 5.39 | 6.79 |
车辆每升油行驶里程(km/L) | Dis_Drive_ICE_Opt’ | - | 18.21 | 27.09 | 35.16 | 33.20 | 29.87 | 23.85 | 18.56 | 14.72 |
4.3 工况3_附加
检索混合动力构型时看到理想汽车使用串联式混合动力,使用东安1.2T增压直喷发动机给电机充电,发动机不直接驱动车辆。其原理参考搜狐汽车介绍如下:
东安这款发动机的最佳油耗点估算在230g/kW·h附近。设定使用马自达发动机,2000rpm、120Nm(油耗223g/kW·h)。发电机充电效率92%:
单位里程充电量:
使用“4.1 CD模式工况”百公里电耗8.01km/度,消除变速箱效率影响74%,估算理想汽车60km/h等速行驶1L油行驶里程:
使用日产Leaf滑行阻力曲线,使用发动机最佳工况点工作点时,60km/h油耗为3.35L/100kM,折合1L油行驶里程约29.85km。
PHEV内燃机最佳工况点驱动油耗差于EREV内燃机,主要受变速箱效率影响。
5 工况分类及行车充电优先级
5.1 NEDC工况分类
NEDC使用4个市区工况和1个市郊工况。市区工况拆解为市区拥堵工况和市区通畅工况,市郊工况拆解为国道工况和高速工况。车速分类定义:
市区拥堵:V_Veh≤25km/h;
市区通畅:25km/h<V_Veh≤40km/h;
国道工况:40km/h<V_Veh≤80km/h;
高速工况:80km/h<V_Veh;
5.2 典型工况及特征值
选用车速20km/h,30km/h,60km/h和100km/h作为四种分类工况的典型值。
车速(km/h) | 20 | 30 | 60 | 100 |
---|---|---|---|---|
百公里耗电量(kW·h/100km) | 12.13 | 10.25 | 12.48 | 19.11 |
实际边走边发电时百公里发电量(kW·h/100km) | 31.35 | 26.61 | 30.68 | 13.31 |
实际边走边发电时每升汽油发电量(kW·h/L) | 2.53 | 2.85 | 3.08 | 3.05 |
实际最佳工况点百公里燃油消耗量(L/100km) | 3.69 | 2.84 | 3.35 | 5.39 |
实际最佳工况点每升油行驶里程(km/L) | 27.09 | 35.16 | 29.87 | 18.56 |
内燃机模式(CS)1L燃油行驶里程_行驶不发电 | 13.55 | 19.76 | 20.07 | 16.93 |
5.3 行车充电优先级
行车发电的目的是调整发动机的工况点在最佳油耗点,但是实际车辆行驶过程中发动机受限其特性低速时并不未工作在最佳油耗点。假定用车速20km/h行车充电,所充电量用于车速100km/h,定义充电后行驶里程大于燃油模式(CD)里程具有经济性,评价如下:
车速20km/h时1L燃油充电电量 | →13.55公里@1L燃油内燃机CD模式 | |
---|---|---|
用于车速20km/h纯电行驶 | 2.53/(12.13/100) | 20.86 |
用于车速30km/h纯电行驶 | 2.53/(10.25/100) | 24.68 |
用于车速60km/h纯电行驶 | 2.53/(12.48/100) | 20.27 |
用于车速100km/h纯电行驶 | 2.53/(19.11/100) | 13.24 |
车速30km/h时1L燃油充电电量 | →19.76公里@1L燃油内燃机CD模式 | |
---|---|---|
用于车速20km/h纯电行驶 | 2.85/(12.13/100) | 23.50 |
用于车速30km/h纯电行驶 | 2.85/(10.25/100) | 27.80 |
用于车速60km/h纯电行驶 | 2.85/(12.48/100) | 22.84 |
用于车速100km/h纯电行驶 | 2.85/(19.11/100) | 14.91 |
车速60km/h时1L燃油充电电量 | →20.07公里@1L燃油内燃机CD模式 | |
---|---|---|
用于车速20km/h纯电行驶 | 3.08/(12.13/100) | 25.39 |
用于车速30km/h纯电行驶 | 3.08/(10.25/100) | 30.05 |
用于车速60km/h纯电行驶 | 3.08/(12.48/100) | 24.68 |
用于车速100km/h纯电行驶 | 3.08/(19.11/100) | 16.12 |
车速100km/h时1L燃油充电电量 | →16.93公里@1L燃油内燃机CD模式 | |
---|---|---|
用于车速20km/h纯电行驶 | 3.05/(12.13/100) | 25.14 |
用于车速30km/h纯电行驶 | 3.05/(10.25/100) | 29.76 |
用于车速60km/h纯电行驶 | 3.05/(12.48/100) | 24.44 |
用于车速100km/h纯电行驶 | 3.05/(19.11/100) | 15.96 |
根据数据判断各车速,20km/h、30km/h、60km/h和100km/h都可用于行驶发电,但行驶所发电量不适于100km/h时使用。即20km/h行驶发电的电量不能用于100km/h车速,但是100km/h行驶发电的电量能用于20km/h车速。有一种情况,当电池电量用于20km/h、30km/h和 60km/h车速行驶后用剩余,100km/h可用纯电行驶。
5.4 路径分段
导航可以提供车流情况预测实时车速,但是个人通过高德地图开发者web服务中未找到相关接口。
设定地图从A市到B市(以天津火车站到北京火车站为例,里程约130km,地图预计2.5h),地图提供路径上的车速,间隔为10s。
对路径分段,每2分(120s)分一段,车速20km/h对应里程约0.66km,车速100km/h对应里程约3.3km。
6 控制逻辑及软件程序
6.1 控制逻辑
6.2 Python软件程序
"""
名称: PHEV_Opt_Update.py
作者: Morven_Xie
版本: 1.0
时间: 2020/10/26 22:46
功能: 用于插电式混合动力能量管理,实现PHEV燃油经济性最优化
简介: 动态规划插混汽车运行模式(纯电行驶、内燃机行驶、行驶充电)
Email: morven_xie@163.com
"""
a=[20, 20, 20, 20, 20, 30, 30, 30, 30,60,60,60,60, 100, 100,
100, 100,60, 60, 60, 30, 30,100,100,100,20,20,20,20] # 设定车速分段信息
Time_Num=len(a) # 统计分段数量
DriveMode=[] # 定义运行模式,0为CD,1为DC,2位CS
Charge_DC=[] # 定义充电量库
Discharge_CD=[] # 定义放电量库
Discharge_CD_Level2=[] # 定义二级放电量库
for i in range(0,Time_Num): # 按照车速分段信息定义充电、放电、运行模式库内容
DriveMode.append(0)
Discharge_CD_Level2.append(0)
if a[i]<=25:
Discharge_CD.append(round(0.121,3))
Charge_DC.append(round(0.3115,3))
if 25<a[i]<=40:
Discharge_CD.append(round(0.1025,3))
Charge_DC.append(round(0.2621,3))
if 40<a[i]<=80:
Discharge_CD.append(round(0.1248,3))
Charge_DC.append(round(0.3068,3))
if a[i]>80:
Discharge_CD.append(round(0,3))
Discharge_CD_Level2[-1]=0.1911
Charge_DC.append(round(0.1331,3))
DriveMode[-1]=2
print(Discharge_CD)
print(Charge_DC)
print(DriveMode)
Charge_Sum=17.5 # 定义发电量库
for i in range(0,Time_Num):
Charge_Sum+=Charge_DC[i]*a[i]*0.2 # 计算充电量
Discharge_Sum =0
for j in range(i,Time_Num): # 计算纯电行驶电量需求
Discharge_Sum+=(Discharge_CD[j]*a[i]*0.2)
if Charge_Sum>Discharge_Sum: # 当充电量大于纯电行驶电量需求,终止
break
DriveMode[i]=1
if DriveMode[0]==0: # 起始点电量大于整个路径电量一级需求,剩余电用于车速度100km/h二级需求
Charge_Sum_Remain=Charge_Sum-Discharge_Sum
for i in range(0,Time_Num):
if DriveMode[i]==2 and(Charge_Sum_Remain)>=0:
Charge_Sum_Remain-=Discharge_CD_Level2[i]*a[i]*0.2
DriveMode[i]=0
print(DriveMode)
C:\Software\Anaconda3\python.exe D:/SoftApp/Python/Vehicle_Cruise/PHEV_Opt.py
注:0为纯电行驶状态,1为行驶充电状态,2为内燃机驱动(电量保持)
初始电量为0时运行结果:
[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0]
初始电量为17.5时运行结果:
C:\Software\Anaconda3\python.exe D:/SoftApp/Python/Vehicle_Cruise/PHEV_Opt.py
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0]
程序待优化待更新内容,SOC电量不足,车速100km/h应优先行驶充电。
7 更新控制逻辑和软件程序
7.1 控制逻辑简图更新
7.2 Python软件程序更新
"""
名称: PHEV_Opt_Update.py
作者: Morven_Xie
版本: 1.1
时间: 2020/10/26 22:46
更新: 2020/11/4 21:42
功能: 用于插电式混合动力能量管理,实现PHEV燃油经济性最优化
简介: 动态规划插混汽车运行模式(纯电行驶、内燃机行驶、行驶充电)
Email: morven_xie@163.com
"""
a=([20,20,20,20,20,30,30,30,30,60,60,60,60,100,100,100,100,60,60,60,30,30,100,100,100,20,20,20,20,20]) # 设定车速分段信息
Time_Num=len(a) # 车速分段数量
Mileage=0 # 定义行驶里程
DriveMode=[] # 定义车辆运行模式,0为CD,1为DC,2为CS
Charge_Level=[[0]*Time_Num for i in range(2)] # 定义充电二维数组
DisCharge_Level=[[0]*Time_Num for i in range(2)] # 定义放电二维数组
Charge_Init=20 # 定义电池包初始电景
SOC=Charge_Init # 定义电池包充电电量
Discharge_Sum=0 # 定义电池包放电初始值电量
for i in range(0,Time_Num):
DriveMode.append(1) # 定义车辆初始运行模式
Mileage+=a[i]*0.2 # 计算行驶里程
if a[i]<=25:
DisCharge_Level[0][i]=round(0.121,3)
Charge_Level[1][i]=round(0.3115, 3) # 定义车辆充电模式优先2级数组值
if 25<a[i]<=40:
DisCharge_Level[0][i]=round(0.1025,3) # 定义车辆优先1级放电_数组值
Charge_Level[1][i]=round(0.2621,3) # 定义车辆充电模式优先2级数组值
if 40<a[i]<=80:
DisCharge_Level[0][i]=round(0.1248,3) # 定义车辆优先1级放电数组值
Charge_Level[1][i]=round(0.3068,3) # 定义车辆充电模式优先2级数组值
if a[i]>80:
DisCharge_Level[0][i]=round(0,3) # 定义车辆充电模式优先1级_数组值
DisCharge_Level[1][i]=round(0.1911,3) # 定义车辆充电模式优先1级_数组值
Charge_Level[0][i]=round(0.1331, 3) # 定义车辆充电模式优先1级数组值
DriveMode[-1]=2 # 定义车辆高速运行时模式为CS模式
for i in range(Time_Num-1,-1,-1):
Discharge_Sum+=DisCharge_Level[0][i]*a[i]*0.2 # 计算全车速段一级放电电量需求
if SOC>Discharge_Sum: # 初始电池电量满足放电一级放电需求,车辆运行时模式为CD
if DisCharge_Level[0][i]>0:
DriveMode[i]=0
else:
break
if i==0: #初始电池电量有剩余,判断二级放电工况点状态
for j in range(Time_Num - 1, 0, -1):
SOC-=DisCharge_Level[1][j] * a[j]*0.2
if SOC>0 and DisCharge_Level[1][j]>0:
DriveMode[j]=0
s=0 # 一级充电模式不能满足二级放电需求时充电起始点
SOC= Charge_Init
for i in range(0,Time_Num): # 判断一级放电工况
SOC-=DisCharge_Level[0][i]*a[i]*0.2
if SOC>0:
if DisCharge_Level[0][i]>0:
DriveMode[i]=0
else: #电量不满足放电一级需求,调用一级充电开始工作
for j in range(s,i):
SOC+=Charge_Level[0][j]*a[j]*0.2
if Charge_Level[0][j]>0:
DriveMode[j]=1
if SOC >0:
if DisCharge_Level[0][i]> 0:
DriveMode[i]=0
s =j+1
break
if SOC < 0: #当一级充电仍不满足,调用二级充电开始工作
for k in range(i,0,-1):
SOC+=Charge_Level[1][k]*a[k]*0.2
if Charge_Level[1][k]>0:
DriveMode[k]=1
if SOC >0:
break
print("电池初始电量 %.2f kW,行驶里程 %.2f km" % (Charge_Init,Mileage))
print(DriveMode)
运行结果:
C:\Software\Anaconda3\python.exe D:/SoftApp/Python/Vehicle_Cruise/PHEV_Opt_Update.py
电池初始电量0.00 kW,行驶里程 300.00 km
[1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0]
电池初始电量 3.00 kW,行驶里程 300.00 km
[0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0]
电池初始电量 10.00 kW,行驶里程 300.00 km
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0]
电池初始电量 20.00 kW,行驶里程 300.00 km
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]