• 沒有找到結果。

乙 模擬電動車道路駕駛之程式碼和其註解

% Program_Level = Ultimate*******_Driving_Cycle_Test_with_Constant_Current_||_Constant_Voltage_Charger ;

程式等級﹕極致級*******,能估算大規模串、並聯電池組之老化程度,並且擁有〈定電流 − 定電壓〉之充電功能,可用

來估算電動車電池組於道路駕駛時之狀態及未來老化走勢;

% Default_Battery_Type = Panasonic_NCR18650_3100mAh_NCA_LixC6 ;

預設電池型號﹕松下Panasonic_NCR18650_3100mAh,鎳鈷鋁氧化物/鋰碳化合物;

% Default_Vehicle = Telsa_Model_S_90kWh

預設電動車之車型﹕Telsa_Model_S_90kWh;

% Default_Driving_Cycle = Common_ARTEMIS_Driving_Cycles

預設駕駛路況﹕Common_ARTEMIS_Driving_Cycles;

% Author = H5N1AIDS , National_Taiwan_University ^_^ ;

程式撰寫人﹕H5N1AIDS,國立台灣大學 ^_^;

% E-mail = [email protected] ;

電子郵件﹕[email protected]

% Last_Update_Date = 2016 / 07 / 10 ;

最後更新日期﹕2016年7月10日;

% Main_References = Journal_of_Power_Sources_252_(2014)_214-228 && Journal_of_Power_Sources_247_(2014)_365-376 ; 主要參考文獻;

% @ Copyright 請勿任意翻印

% $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ clc 清空執行視窗

clear 清除暫存工作空間之變數

% ________________________________________________

C_rate = 1/5 ; 設定充放電速率;

doi:10.6342/NTU201602734

143

Cycles = 1 ; 設定循環次數;

Lower_Cut_off_Voltage = 320 ; 最低截止電壓;

Upper_Cut_off_Voltage = 410 ; 最高截止電壓;

Guess_Tolerance = 0.1 ; 設置定電壓充電時,其電壓誤差之容忍度;

Current_Adjust = 0.0005; 設置定電壓充電時,其電流之最小調控精度;

Shen_Ji_Miao_Suan = 1.001 ; 設置定電壓充電時,猜測電流之起始值; 「神機妙算」的漢語拼音

Start_CV_Process = 400 ; 定電壓充電啟動時機;

Constant_Voltage = 400 ; 定電壓充電值;

Cut_off_Current = -0.155*75 ; 定電壓充電結束時機;

Capacity_Test = 0 ; 電容量測定功能,1表示啟動,0代表關閉;

First_capacity_test_cycles = 1 ; 第一次電容量測定時機;

capacity_test_per_cycles = 50 ; 電容量測定間隔;

% ________________________________________________

T_ambient = 298.15 ; 環境溫度;

Convection_coefficient = 10 ; 對流係數;

% ________________________________________________

Balance_Weight = 0.08 ; 並聯電池組之平衡電流權重;

Series_Number = 100 ; 串聯數目;

Parallel_Number = 75 ; 並聯數目;

% ________________________________________________

Manufacture_Deviation = 0.05 ; 電池之製造偏差,0.05表示±5%;

Initial_average_SOC = 0.9 ; 電池單元起始蓄電狀態,0.9表示SOC = 90%;

SOC_Range = 0.1 ; 電池組內部之電池單元起始蓄電狀態差異,0.1表示對Initial_average_SOC ± 10%;

% ________________________________________________

load cycles_artemis.mat 讀取ARTEMIS駕駛路況之資料;

Driving_Cycle_Type = [ ArtRoad.data ; ArtMw150.data ; ArtUrban.data ] ; 組合ARTEMIS駕駛路況;

doi:10.6342/NTU201602734

144

Dr_length = length(Driving_Cycle_Type) ; 組合駕駛路況之矩陣向量長度;

Gravity = 9.8 ; 重力加速度;

Air_density = 1.2 ; 空氣密度;

Road_inclination = 0 ; 路面坡度;

Inertia_factor = 1.1 ; 慣性因子;

Carring_mass = 65 ; 載運質量;

Vehicle_mass = 2144 ; 電動車質量;

Cross_sectional_area = 2.34 ; 電動車的風阻面積;

Drag_coefficient = 0.24 ; 空氣阻力係數;

Rolling_coefficient = 0.012 ; 滾動阻力係數;

Efficient_work = 0.8 ; 電池組管理系統之能源轉換效率;

Efficient_braking = 0.5 ; 發電機之回充效率;

Power_consumption_air_condition = 2000 ; 車內空調之耗能;

Power_consumption_cooling_system = 1000 ; 電池組冷卻系統之耗能;

Power_consumption_management_computer = 500 ; 行車控制系統之耗能;

Power_consumption_sum_others = Power_consumption_air_condition + Power_consumption_cooling_system + Power_consumption_management_computer ; 上述電器設備耗能總和;

Mass_total = (Vehicle_mass + Carring_mass)* Inertia_factor ; 整體總質量;

Weight_total = Mass_total*Gravity ; 整體總重量;

Vehicle_velocity = Driving_Cycle_Type./3.6 ; 行車速率單位換算;

Vehicle_velocity(Dr_length+1) = Vehicle_velocity(Dr_length) ; 假設駕駛路況結束後的下一秒,該車之速率與最後一秒相同;

% ________________________________________________

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%

Standard_Ah = 3.1 ; 標準安時數;

Battery_Type_C_solid_n_max = 28000 ; 負電極最大之鋰原子濃度;

doi:10.6342/NTU201602734

145

Battery_Type_C_solid_p_max = 51000 ; 正電極最大之鋰原子濃度;

C_solid_n_max_0 = 28000 ; 負電極最大之鋰原子濃度初始值;

C_solid_p_max_0 = 51000 ; 正電極最大之鋰原子濃度初始值;

Initial_Available_ratio_n = 0.63 ; 負電極最大之鋰原子濃度,其放電初始之可使用比例;

Initial_Available_ratio_p = 0.395 ; 正電極最大之鋰原子濃度,其放電初始之可使用比例;

Battery_Type_C_electrolyte_n_avg = 1200 ; 負極區電解液濃度;

Battery_Type_C_electrolyte_s_avg = 1200 ; 隔離膜區電解液濃度;

Battery_Type_C_electrolyte_p_avg = 1200 ; 正極區電解液濃度;

Activation_energy_D_Solid_n = 5000 ; 負電極內鋰原子擴散之活化能;

Activation_energy_D_Solid_p = 25000 ; 正電極內鋰原子擴散之活化能;

Activation_energy_kn_reaction = 20000 ; 負電極之電化學反應活化能;

Activation_energy_kp_reaction = 35000 ; 正電極之電化學反應活化能;

Electrode_area_n = 0.132 ; 負電極之投影面積;

Electrode_area_p = 0.132 ; 正電極之投影面積;

Rn = 12.5*10^-6.*ones(Parallel_Number,Series_Number) ; 每個電池單元其負電極之顆粒半徑;

Rp = 4*10^-9.*ones(Parallel_Number,Series_Number) ; 每個電池單元其正電極之顆粒半徑;

Ln_space = 93*10^-6 ; 負極空間整體長度;

Ls_space = 17*10^-6 ; 隔離膜空間整體長度;

Lp_space = 69*10^-6 ; 正極空間整體長度;

Ln_electrolyte = 93*10^-6 ; 負極區之電解液空間長度;

Ls_electrolyte = 17*10^-6 ; 隔離膜區之電解液空間長度;

Lp_electrolyte = 69*10^-6 ; 正極區之電解液空間長度;

Ln_solid = 93*10^-6 ; 負電極長度;

Lp_solid = 69*10^-6 ; 正電極長度;

dln_activity_coefficient_n_over_dln_C_electrolyte_n_avg = 1 ; = 1;

doi:10.6342/NTU201602734

146

dln_activity_coefficient_s_over_dln_C_electrolyte_s_avg = 1 ; = 1;

dln_activity_coefficient_p_over_dln_C_electrolyte_p_avg = 1 ; = 1;

tn_plus = 0.38 ; 負極區電解液之轉移係數;

ts_plus = 0.38 ; 隔離膜區電解液之轉移係數;

tp_plus = 0.38 ; 正極區電解液之轉移係數;

D_solid_p_0 = NaN ; 正電極內的鋰原子擴散係數= Not a Number。由於帶入隨時間演變之經驗公式,故不在此處給值設定;

D_solid_n_0 = 3.9.*10.^-14 ; 負電極內鋰原子的擴散係數;

D_electrolyte_p_0 = 2.6.*10.^-10 ; 正極區電解液之擴散係數;

D_electrolyte_s_0 = 2.6.*10.^-10 ; 隔離膜區電解液之擴散係數;

D_electrolyte_n_0 = 2.6.*10.^-10 ; 負極區電解液之擴散係數;

D_tuning_parameter = 4/3 ; 電極內鋰原子擴散通道係數;

kp_0 = 1*10^-10 ; 正極區之電化學反應速率常數;

kn_0 = 2.334*10^-11 ; 負極區之電化學反應速率常數;

Solid_epsilon_n = 0.5802.*ones(Parallel_Number,Series_Number) ; 每個電池單元其負電極之體積分率;

Solid_epsilon_p = 0.4483.*ones(Parallel_Number,Series_Number) ; 每個電池單元其正電極之體積分率;

Solid_epsilon_n = 0.5802 ; 負電極之體積分率;

Solid_epsilon_p = 0.4483 ; 正電極之體積分率;

Solid_epsilon_n_0 = 0.5802 ; 負電極之體積分率初始值;

Solid_epsilon_p_0 = 0.4483 ; 正電極之體積分率初始值;

Electorlyte_epsilon_n = 0.364 ; 負極區電解液之體積分率;

Electorlyte_epsilon_s = 0.5 ; 隔離膜區電解液之體積分率;

Electorlyte_epsilon_p = 0.3382 ; 正極區電解液之體積分率;

Filler_Volume_fraction_n = 1 - Solid_epsilon_n - Electorlyte_epsilon_n ; 負極區粘著物之體積分率;

Filler_Volume_fraction_p = 1 - Solid_epsilon_p - Electorlyte_epsilon_p ; 正極區粘著物之體積分率;

Bruggman_coefficient_n = 1.5 ; 負極區的Bruggman指數;

doi:10.6342/NTU201602734

147

Bruggman_coefficient_s = 1.5 ; 隔離膜區的Bruggman指數;

Bruggman_coefficient_p = 1.5 ; 正極區的Bruggman指數;

sigma_n = 100 ; 負電極單位長度電導;

sigma_p = 100 ; 正電極單位長度電導;

Length_collector_n_Cu = 25.*10.^-6 ; 負極集電器長度;

Length_collector_p_Al = 25.*10.^-6 ; 正極集電器長度;

Conductivity_collector_n_Cu = 5.998.*10.^7 ; 負極集電器之單位長度電導率;

Conductivity_collector_p_Al = 3.774.*10.^7 ; 正極集電器之單位長度電導率;

alpha = 0.5 ; 傳遞係數,正、負極同值;

IR_contact_n = 0 ; 負極之單位面積接觸電阻值;

IR_contact_p = 0 ; 正極之單位面積接觸電阻值;

Y = 0.68 ; 電池老化經驗式中的γ;

U_SEI = 0.4 ; SEI膜之開路電壓;

M_SEI = 0.162 ; SEI膜之莫耳質量;

Density_SEI = 1690 ; SEI膜之密度;

R_SEI = 0.09.*ones(Parallel_Number,Series_Number) ; 每個電池單元其SEI膜之單位面積電阻值;

Cp = 750 ; 電池之定壓熱容值;

Battery_density = 2017 ; 電池密度;

Battey_volume = pi.*9.^2.*65e-9 ; 電池體積;

Battery_surface_area = 2.*pi.*9e-3.*65e-3 + 2.*pi.*9e-3.*9e-3 ; 電池表面積;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

I = 0 ; 起始電池組的工作總電流;

t = 0 ; 初始時序;

t_Drive = 0 ; 駕駛路況用之時序;

CV = 0 ; 初始定電壓功能為關閉;

cyc = 1 初始循環序號;

doi:10.6342/NTU201602734

148

check = 0 ; 初始電容量測定功能為關閉;

Go_home = 0 初始位置在家中,因此初始設定值為0

Go_company = 1 從家裡出發去公司上班,因此初始設定值為1

Power_output = 0 ; 初始之電池組輸出功率值;

Start_charged = 0 ; 初始充電功能設為關閉;

dt = 1 ; 時間步階長度;

F = 96487 ; 法拉第常數;

R = 8.314 ; 理想氣體常數;

Delta_n = Ln_electrolyte./3 ; 負極區電解液之微量擴散長度;

Delta_p = Lp_electrolyte./3 ; 正極區電解液之微量擴散長度;

Diffusion_length_s = Ls_electrolyte ; 隔離膜區電解液之微量擴散長度;

N_n = (Solid_epsilon_n.*Electrode_area_n.*Ln_solid)./(4./3.*pi.*Rn.^3) ; 負電極顆粒總數;

N_p = (Solid_epsilon_p.*Electrode_area_p.*Lp_solid)./(4./3.*pi.*Rp.^3) ; 正電極顆粒總數;

T_reference = 298.15.*ones(Parallel_Number,Series_Number) ; 電化學參數之參考溫度標準;

T_ambient = T_ambient.*ones(Parallel_Number,Series_Number) ; 初始電池溫度等於環境溫度;

R_collector_n_Cu = Length_collector_n_Cu/Conductivity_collector_n_Cu ; 負極集電器之單位面積電阻值;

R_collector_p_Al = Length_collector_p_Al/Conductivity_collector_p_Al ; 正極集電器之單位面積電阻值;

Modify_sigma_n = sigma_n.*Solid_epsilon_n ; 負電極單位長度電導值之多孔性修正;

R_collector_n_Cu = Length_collector_n_Cu/Conductivity_collector_n_Cu ; 負極集電器之單位面積電阻值;

R_collector_p_Al = Length_collector_p_Al/Conductivity_collector_p_Al ; 正極集電器之單位面積電阻值;

Modify_sigma_n = sigma_n.*Solid_epsilon_n ; 負電極單位長度電導值之多孔性修正;

Modify_sigma_p = sigma_p.*Solid_epsilon_p ; 正電極單位長度電導值之多孔性修正;

as_n = (3.*Solid_epsilon_n)./Rn ; 負電極每單位體積之有效表面積;

as_p = (3.*Solid_epsilon_p)./Rp ; 正電極每單位體積之有效表面積;

aLp = as_p.*Lp_solid ; 正電極每單位面積之有效表面積;

aLn = as_n.*Ln_solid ; 負電極每單位面積之有效表面積;

doi:10.6342/NTU201602734

149

tp_plus_bar = tp_plus - 1 ; 正極區電解液之轉移係數減一;

tn_plus_bar = tn_plus - 1 ; 負極區電解液之轉移係數減一;

ts_plus_bar = ts_plus - 1 ; 隔離膜區電解液之轉移係數減一;

Battery_density_dot_Cp = Battery_density.*Cp ; 電池密度與定壓熱容之乘積;

Eigenvalues_square =

[4.4934094579091;7.7252518369377;10.9041216594289;14.0661939128315;17.2207552719308;20.3713029592876;23.51945249 86890;26.6660542588127;29.8115987908930;36.1006222443756;39.2444323611642;42.3879135681319;45.5311340139913;48.6 741442319544;51.8169824872797].^2 ; 球座標擴散之級數解其前15項特徵值的平方;

Ei_length = length(Eigenvalues_square) ; 特徵值矩陣其行向量之長度;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Minions_Kevin = ones(Parallel_Number,Series_Number) ;

預先建立內容全是1之矩陣,待後續運算使用,避免於時間演進時重複開儲位之動作,以加速運算。其中Minions_Kevin意即 小小兵中的凱文,是身長高的小小兵類型,像數字1一樣;

Minions_Bob = zeros(Parallel_Number,Series_Number) ;

預先建立內容全是0之矩陣,待後續運算使用,避免於時間演進時重複開儲位之動作,以加速運算。其中Minions_Bob意即 小小兵中的鮑伯,是身長矮的小小兵類型,像數字0一樣;

current = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_solid_n_max = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_solid_p_max = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_solid_n_surface = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_solid_p_surface = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_electrolyte_n_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_electrolyte_s_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

C_electrolyte_p_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Ah_Discharge_plus_Charge = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Series_Voltage = zeros(Parallel_Number,1) ; 預先配置記憶體;

doi:10.6342/NTU201602734

150

Balance_Current = zeros(Parallel_Number,1) ; 預先配置記憶體;

Equal_Resistance = zeros(Parallel_Number,1) ; 預先配置記憶體;

power = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

iapp_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

iapp_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Jn = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Jp = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

IR_SEI = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

RT = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

R_diff_T = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

D_solid_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

D_solid_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

D_electrolyte_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

D_electrolyte_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

D_electrolyte_s = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Diffusion_length_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Diffusion_length_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

U_SOC_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

U_SOC_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

dUn_over_dT = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

dUp_over_dT = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Un = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Up = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Alpha_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Beta_sep = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Gamma_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

doi:10.6342/NTU201602734

151

Omega = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

GAO = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

GA_over_GAO = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

An = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Bn = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Ap = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Bp = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

kn = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

kp = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

kappa_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

kappa_s = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

kappa_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Kappa_eff_n = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Kappa_eff_s = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Kappa_eff_p = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Ce_interface1 = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Ce_interface2 = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_solid_n_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_solid_n_terminal = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_electrolyte_n_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

S_interface1 = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

S_interface2 = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_interface1 = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_interface2 = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_solid_p_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Phi_solid_p_terminal = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

doi:10.6342/NTU201602734

152

Phi_electrolyte_p_avg = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

IR_collector = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Battery_Working_Potential = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Heat = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

Heat = zeros(Parallel_Number,Series_Number) ; 預先配置記憶體;

相關文件