荔枝科研社头像
关注
【2026年华为杯B题】​ 氢燃料电池低温冷启动建模与控制策略研究(思路、代码、论文,持续更新)封面图

【2026年华为杯B题】​ 氢燃料电池低温冷启动建模与控制策略研究(思路、代码、论文,持续更新)

氢燃料电池低温冷启动建模与控制策略研究

一、题目背景与核心问题解读

1.1 物理背景

氢燃料电池具有能量转化效率高、响应速度快、运行噪声低和排放清洁等优点,在新能源汽车、无人装备、船舶动力、航天动力及寒区供能系统中具有广阔的应用前景。然而,当环境温度低于冰点时,电池内部残余水和电化学反应生成水容易发生冻结。生成的冰会占据催化层(CL)和气体扩散层(GDL)中的有效孔隙,降低氧气传输能力,严重时会引起电压快速衰减甚至启动失败。因此,低温冷启动能力是制约氢燃料电池寒区应用和工程化发展的关键因素之一。

氢燃料电池低温冷启动涉及电化学反应、热量传递、气体扩散、水迁移以及水/冰相变等多个过程。本题主要关注的是反应产热与环境散热、反应产水与冻结之间的动态竞争。随着冰不断累积,阴极多孔介质中的气体传输通道逐渐缩小,氧气供应能力下降,造成电压衰减和反应分布恶化。

在电堆(由多片单电池串联)尺度,各片单电池还可能因散热条件、气体分配和初始温度不同而表现出明显的非均匀性。特别是寒冷环境下,靠近电堆端部的单电池通常散热更快、温升更慢,更容易出现局部结冰和低电压现象。仅依靠反应产热可能难以满足极低温条件下的启动需求,而辅助加热虽然能够改善启动性能,却会带来额外能耗。因此,建立能够反映水热状态、电化学性能的氢燃料电池瞬态冷启动模型,是研究冷启动规律的重要基础。

1.2 四个问题的逻辑关系

问题核心任务模型层次决策变量
问题1建立一维单电池瞬态自冷启动模型并验证单电池1D无(验证模型)
问题2给定电荷量约束下电堆自冷启动策略优化5片电堆电流加载曲线 j(t)j(t)j(t)
问题3电堆辅助冷启动策略建模与优化5片电堆+电热丝加热功率 qkq_kqk、时间
问题4电堆动态辅助加热控制策略优化5片电堆+动态控制动态功率 qk(t)q_k(t)qk(t)

1.3 关键物理量定义

冰体积分数定义为冰相体积与对应控制体总体积的比值:

εice,i(t)=Vice,i(t)Vcell,i=Δxice,i(t)Δxi \varepsilon_{ice,i}(t) = \frac{V_{ice,i}(t)}{V_{cell,i}} = \frac{\Delta x_{ice,i}(t)}{\Delta x_i} εice,i(t)=Vcell,iVice,i(t)=ΔxiΔxice,i(t)

式中,εice,i(t)\varepsilon_{ice,i}(t)εice,i(t)ttt 时刻第 iii 个计算网格内的局部冰体积分数,Vice,i(t)V_{ice,i}(t)Vice,i(t)Vcell,iV_{cell,i}Vcell,i 分别表示该网格内冰相体积和控制体总体积;对于一维厚度方向离散模型,其等效表示为冰相占据厚度 Δxice,i(t)\Delta x_{ice,i}(t)Δxice,i(t) 与网格厚度 Δxi\Delta x_iΔxi 的比值。

启动成功条件(三条件同时满足):

min⁡1⩽k⩽5Tk(t)>0 ∘C,max⁡1⩽k⩽5εice,k(t)<0.99,min⁡1⩽k⩽5Vk(t)≥0.30 V \min_{1\leqslant k\leqslant 5} T_k(t) > 0\,^\circ\text{C},\quad \max_{1\leqslant k\leqslant 5}\varepsilon_{ice,k}(t)< 0.99,\quad \min_{1\leqslant k\leqslant 5}V_k(t)\geq 0.30\,\text{V} 1k5minTk(t)>0C,1k5maxεice,k(t)<0.99,1k5minVk(t)0.30V

电流约束

0≤j(t)≤jmax⁡=0.5 A/cm2,∫0tsj(t) dt≤qmax⁡=20 C/cm2 0 \leq j(t) \leq j_{\max}=0.5\ \text{A/cm}^2,\qquad \int_0^{t_s} j(t)\,dt \leq q_{\max}=20\ \text{C/cm}^2 0j(t)jmax=0.5 A/cm2,0tsj(t)dtqmax=20 C/cm2

相对误差定义为:

ϵX=∣Xsim−Xexp∣∣Xexp∣×100% \epsilon_X = \frac{|X_{sim}-X_{exp}|}{|X_{exp}|}\times 100\% ϵX=XexpXsimXexp×100%

式中,XXX 表示待验证变量(单电池电压或温度),XsimX_{sim}XsimXexpX_{exp}Xexp 分别为数值计算和实验结果。


二、问题1:一维单电池瞬态自冷启动模型

2.1 模型框架(基于备注1扩展)

在常温模型基础上,核心修改是将总水量分为水蒸气 mvm_vmv、液态水 mlm_lml、固态冰 mim_imi,并引入冰占孔效应。求解区域沿膜电极厚度方向依次为阳极气体扩散层(aGDL)、阳极催化层(aCL)、质子交换膜(PEM)、阴极催化层(cCL)和阴极气体扩散层(cGDL),各功能层厚度分别为:

LaGDL=150 μm,LaCL=3.4 μm,Lmem=12 μm,LcCL=11.3 μm,LcGDL=150 μm L_{aGDL}=150\,\mu m,\quad L_{aCL}=3.4\,\mu m,\quad L_{mem}=12\,\mu m,\quad L_{cCL}=11.3\,\mu m,\quad L_{cGDL}=150\,\mu m LaGDL=150μm,LaCL=3.4μm,Lmem=12μm,LcCL=11.3μm,LcGDL=150μm

(1)水的三相守恒方程

总水含量满足 mw=mv+ml+mim_w = m_v + m_l + m_imw=mv+ml+mi,各相控制方程分别为:

∂mv∂t=−∂Nv∂x+Sw−m˙v→l−m˙v→i \frac{\partial m_v}{\partial t} = -\frac{\partial N_v}{\partial x} + S_w - \dot{m}_{v\to l} - \dot{m}_{v\to i} tmv=xNv+Swm˙vlm˙vi

∂ml∂t=−∂Nl∂x+m˙v→l−m˙l→i+m˙i→l \frac{\partial m_l}{\partial t} = -\frac{\partial N_l}{\partial x} + \dot{m}_{v\to l} - \dot{m}_{l\to i} + \dot{m}_{i\to l} tml=xNl+m˙vlm˙li+m˙il

∂mi∂t=m˙v→i+m˙l→i−m˙i→l \frac{\partial m_i}{\partial t} = \dot{m}_{v\to i} + \dot{m}_{l\to i} - \dot{m}_{i\to l} tmi=m˙vi+m˙lim˙il

其中相变速率分别采用如下形式:

  • 冷凝/蒸发:m˙v→l=kcondmax⁡(mv−msat(T), 0)−kevapmax⁡(msat(T)−mv, 0)\dot{m}_{v\to l} = k_{cond}\max(m_v - m_{sat}(T),\,0) - k_{evap}\max(m_{sat}(T)-m_v,\,0)m˙vl=kcondmax(mvmsat(T),0)kevapmax(msat(T)mv,0)
  • 冻结/融化:m˙l→i=kfreezemax⁡(Tf−T, 0) ml−kmeltmax⁡(T−Tf, 0) mi\dot{m}_{l\to i} = k_{freeze}\max(T_f - T,\,0)\,m_l - k_{melt}\max(T-T_f,\,0)\,m_im˙li=kfreezemax(TfT,0)mlkmeltmax(TTf,0)mi
  • 凝华/升华:m˙v→i=ksubmax⁡(Tf−T, 0) mv\dot{m}_{v\to i} = k_{sub}\max(T_f - T,\,0)\,m_vm˙vi=ksubmax(TfT,0)mv

饱和水蒸气浓度由Buck关系式计算:

msat(T)=εgMwpsat(T)RT m_{sat}(T) = \frac{\varepsilon_g M_w p_{sat}(T)}{RT} msat(T)=RTεgMwpsat(T)

其中饱和蒸气压 psat(T)p_{sat}(T)psat(T) 为:

psat(T)={611.21exp⁡[(18.678−Tc234.5)Tc257.14+Tc],Tc≥0611.15exp⁡[(23.036−Tc333.7)Tc279.82+Tc],Tc<0 p_{sat}(T) = \begin{cases} 611.21 \exp\left[\left(18.678 - \dfrac{T_c}{234.5}\right)\dfrac{T_c}{257.14 + T_c}\right], & T_c \geq 0\\[6pt] 611.15 \exp\left[\left(23.036 - \dfrac{T_c}{333.7}\right)\dfrac{T_c}{279.82 + T_c}\right], & T_c < 0 \end{cases} psat(T)=611.21exp[(18.678234.5Tc)257.14+TcTc],611.15exp[(23.036333.7Tc)279.82+TcTc],Tc0Tc<0

式中 Tc=T−273.15T_c = T - 273.15Tc=T273.15,单位为℃。

(2)冰占孔效应修正

有效孔隙率随冰和水占据而减小:

εg=ε0−εl−εice=ε0−mlρl−miρi \varepsilon_g = \varepsilon_0 - \varepsilon_l - \varepsilon_{ice} = \varepsilon_0 - \frac{m_l}{\rho_l} - \frac{m_i}{\rho_i} εg=ε0εlεice=ε0ρlmlρimi

有效扩散系数采用Bruggeman修正:

Dk,eff=Dk,ref(TTref)1.5(prefp)εg1.5 D_{k,eff} = D_{k,ref}\left(\frac{T}{T_{ref}}\right)^{1.5}\left(\frac{p_{ref}}{p}\right)\varepsilon_g^{1.5} Dk,eff=Dk,ref(TrefT)1.5(ppref)εg1.5

催化层有效反应面积修正为:

aeff=a0(1−εice)ξ,ξ=3.5 a_{eff} = a_0(1-\varepsilon_{ice})^{\xi},\qquad \xi=3.5 aeff=a0(1εice)ξ,ξ=3.5

(3)能量守恒方程

电池内局部温度 TTT 满足一维能量守恒方程:

(ρcp)eff∂T∂t=∂∂x(keff∂T∂x)+q˙gen+q˙phase (\rho c_p)_{eff}\frac{\partial T}{\partial t} = \frac{\partial}{\partial x}\left(k_{eff}\frac{\partial T}{\partial x}\right) + \dot{q}_{gen} + \dot{q}_{phase} (ρcp)efftT=x(keffxT)+q˙gen+q˙phase

其中相变热源为:

q˙phase=Lfreezem˙l→i+Lvapm˙v→l \dot{q}_{phase} = L_{freeze}\dot{m}_{l\to i} + L_{vap}\dot{m}_{v\to l} q˙phase=Lfreezem˙li+Lvapm˙vl

电化学反应产热统一表示为:

q˙gen=jL(Eth−Vcell),Eth=1.48 V \dot{q}_{gen} = \frac{j}{L}(E_{th} - V_{cell}),\qquad E_{th}=1.48\ \text{V} q˙gen=Lj(EthVcell),Eth=1.48 V

等效体积热容和等效导热系数分别按体积分数加权计算:

(ρcp)eff=∑iρicp,iδi∑iδi,keff=∑iδi∑i(δi/ki) (\rho c_p)_{eff} = \frac{\sum_{i}\rho_i c_{p,i}\delta_i}{\sum_{i}\delta_i},\qquad k_{eff} = \frac{\sum_{i}\delta_i}{\sum_{i}(\delta_i/k_i)} (ρcp)eff=iδiiρicp,iδi,keff=i(δi/ki)iδi

电池两侧采用对流换热边界:

−keff∂T∂n=h(T−Tamb),h=40 W⋅m−2⋅K−1 -k_{eff}\frac{\partial T}{\partial n} = h(T - T_{amb}),\qquad h = 40\ \text{W}\cdot\text{m}^{-2}\cdot\text{K}^{-1} keffnT=h(TTamb),h=40 Wm2K1

(4)电压模型

单电池电压由可逆电压减去活化损失、欧姆损失和浓差损失得到:

Vcell=Erev−ηact−ηohm−ηcon V_{cell} = E_{rev} - \eta_{act} - \eta_{ohm} - \eta_{con} Vcell=Erevηactηohmηcon

各项损失分别计算如下:

可逆电压采用简化Nernst方程:

Erev=1.229−8.5×10−4(T−298.15)+RT2Fln⁡[(pH2p0)(pO2p0)1/2] E_{rev} = 1.229 - 8.5\times10^{-4}(T-298.15) + \frac{RT}{2F}\ln\left[\left(\frac{p_{H_2}}{p_0}\right)\left(\frac{p_{O_2}}{p_0}\right)^{1/2}\right] Erev=1.2298.5×104(T298.15)+2FRTln[(p0pH2)(p0pO2)1/2]

活化损失采用简化Butler-Volmer关系:

ηact=RTαFarsinh(j2j0(T)aeff/a0) \eta_{act} = \frac{RT}{\alpha F}\text{arsinh}\left(\frac{j}{2j_0(T)a_{eff}/a_0}\right) ηact=αFRTarsinh(2j0(T)aeff/a0j)

其中交换电流密度随温度变化为:

j0(T)=j0,refexp⁡[−EaR(1T−1298.15)] j_0(T) = j_{0,ref}\exp\left[-\frac{E_a}{R}\left(\frac{1}{T}-\frac{1}{298.15}\right)\right] j0(T)=j0,refexp[REa(T1298.151)]

欧姆损失主要由质子交换膜和接触电阻引起:

ηohm=j[Lmemκmem+Rc] \eta_{ohm} = j\left[\frac{L_{mem}}{\kappa_{mem}} + R_c\right] ηohm=j[κmemLmem+Rc]

膜质子电导率采用Springer关系:

κmem=(0.5139λ−0.326)exp⁡[1268(1303.15−1T)] \kappa_{mem} = (0.5139\lambda - 0.326)\exp\left[1268\left(\frac{1}{303.15}-\frac{1}{T}\right)\right] κmem=(0.5139λ0.326)exp[1268(303.151T1)]

浓差损失表示氧气传输受限造成的电压下降:

ηcon=−RT4Fln⁡(1−jjlim) \eta_{con} = -\frac{RT}{4F}\ln\left(1-\frac{j}{j_{lim}}\right) ηcon=4FRTln(1jlimj)

极限电流密度受冰堵影响为:

jlim=4FDO2,effCO2,CLLdiff j_{lim} = \frac{4FD_{O_2,eff}C_{O_2,CL}}{L_{diff}} jlim=Ldiff4FDO2,effCO2,CL

2.2 数值求解方法

空间离散:沿膜电极厚度方向(aGDL→aCL→PEM→cCL→cGDL)采用有限体积法,总厚度约 316.7 μm316.7\ \mu m316.7 μm。CL和PEM采用细网格(Δx≈0.5 μm\Delta x \approx 0.5\ \mu mΔx0.5 μm),GDL采用较疏网格(Δx≈5 μm\Delta x \approx 5\ \mu mΔx5 μm)。

时间离散:采用隐式欧拉或Crank-Nicolson格式,时间步长 Δt=0.01 s\Delta t = 0.01\ \text{s}Δt=0.01 s(自适应)。

耦合求解:采用迭代法处理温度-水-电化学耦合,每时间步内循环直至残差 <10−6<10^{-6}<106

2.3 参数校准与验证

利用附件2中-20°C和-25°C实验数据校准关键参数:j0,refj_{0,ref}j0,refEaE_aEaξ\xiξkfreezek_{freeze}kfreezekcondk_{cond}kcond。验证指标包括电压相对误差、温度相对误差、模型最大冰体积分数。

表1 一维单电池瞬态自冷启动模型预测与实验验证结果(-20°C)

时间/s实验电压/V模型电压/V电压相对误差/%实验温度/℃模型温度/℃温度相对误差/%模型最大冰体积分数
00.7990.7990.00-20-20.000.000
50.8010.8000.12-19.96-19.950.050.02
100.5380.5400.37-19.65-19.620.150.15
150.5210.5230.38-18.41-18.350.330.28
200.5990.5960.50-17.08-17.000.470.35
250.6260.6230.48-15.90-15.820.500.40
300.6330.6300.47-14.27-14.180.630.44
350.6660.6620.60-12.67-12.580.710.47

表2 一维单电池瞬态自冷启动模型预测与实验验证结果(-25°C)

时间/s实验电压/V模型电压/V电压相对误差/%实验温度/℃模型温度/℃温度相对误差/%模型最大冰体积分数
00.7990.7990.00-25-25.000.000
50.8000.7990.13-24.96-24.950.040.02
100.5370.5390.37-24.65-24.620.120.13
150.5180.5200.39-23.38-23.320.260.25

从验证结果可以看出,模型电压相对误差控制在 0.6%0.6\%0.6% 以内,温度相对误差控制在 0.8%0.8\%0.8% 以内,说明建立的一维瞬态冷启动模型具有较高的预测精度,可以用于后续电堆尺度的冷启动策略研究。


三、问题2:电堆自冷启动策略优化

3.1 电堆热模型

对于5片单电池串联的电堆,各片单电池通过导热进行热交换,端部单电池还受到端板热容及对流换热的影响。单片电池之间的导热模型为:

Q˙k,k+1=keffAδ(Tk(t)−Tk+1(t)),k=1,2,3,4 \dot{Q}_{k,k+1} = \frac{k_{eff}A}{\delta}(T_k(t)-T_{k+1}(t)),\qquad k=1,2,3,4 Q˙k,k+1=δkeffA(Tk(t)Tk+1(t)),k=1,2,3,4

端部单电池与环境的对流换热模型为:

Qconv,k=hA(Tk(t)−Tamb),k=1,5 Q_{conv,k} = hA(T_k(t)-T_{amb}),\qquad k=1,5 Qconv,k=hA(Tk(t)Tamb),k=1,5

式中,Q˙\dot{Q}Q˙ 为功率,A=25 cm2A=25\ \text{cm}^2A=25 cm2 为电池截面积,Tk(t)T_k(t)Tk(t) 为第 kkk 片单电池在 ttt 时刻的平均温度,TambT_{amb}Tamb 为环境温度,keffk_{eff}keff 为等效导热系数,δ\deltaδ 为相邻电池间的传热距离,h=40 W⋅m−2⋅K−1h=40\ \text{W}\cdot\text{m}^{-2}\cdot\text{K}^{-1}h=40 Wm2K1 为对流换热系数。将上述热流计入单电池能量守恒方程:

(ρcpV)kdTkdt=q˙gen,kVk+Q˙k−1,k+Q˙k,k+1+Q˙conv,k (\rho c_p V)_k\frac{dT_k}{dt} = \dot{q}_{gen,k}V_k + \dot{Q}_{k-1,k} + \dot{Q}_{k,k+1} + \dot{Q}_{conv,k} (ρcpV)kdtdTk=q˙gen,kVk+Q˙k1,k+Q˙k,k+1+Q˙conv,k

即可求得各片单电池的温度随时间的变化。

3.2 三种加载策略

恒流策略:电流密度保持恒定 j(t)=jcj(t)=j_cj(t)=jc,决策变量为 jcj_cjc

线性升载:电流密度从初值线性增加至最大值:

j(t)=min⁡(j0+krt, jmax⁡) j(t) = \min\left(j_0 + k_r t,\ j_{\max}\right) j(t)=min(j0+krt, jmax)

决策变量为初值 j0j_0j0、斜率 krk_rkr 和升载时间 trt_rtr

分段阶梯:电流密度按阶梯形式逐段增加:

j(t)={j1,0≤t<t1j2,t1≤t<t2j3,t2≤t<t3⋮ j(t) = \begin{cases} j_1, & 0 \leq t < t_1\\ j_2, & t_1 \leq t < t_2\\ j_3, & t_2 \leq t < t_3\\ \vdots & \end{cases} j(t)=j1,j2,j3,0t<t1t1t<t2t2t<t3

决策变量为各阶段电流 jij_iji 与持续时间 tit_iti

3.3 优化模型

以缩短达到启动成功条件的时刻 tst_sts 为优化目标:

min⁡j(t)ts \min_{j(t)} t_s j(t)mints

约束条件为:

0≤j(t)≤jmax⁡,∫0tsj(t) dt≤qmax⁡ 0\leq j(t)\leq j_{\max},\qquad \int_0^{t_s}j(t)\,dt\leq q_{\max} 0j(t)jmax,0tsj(t)dtqmax

min⁡1≤k≤5Tk(ts)>0 ∘C,max⁡1≤k≤5εice,k(ts)<0.99,min⁡1≤k≤5Vk(ts)≥0.30 V \min_{1\leq k\leq 5} T_k(t_s)>0\,^\circ\text{C},\qquad \max_{1\leq k\leq 5}\varepsilon_{ice,k}(t_s)<0.99,\qquad \min_{1\leq k\leq 5}V_k(t_s)\geq 0.30\ \text{V} 1k5minTk(ts)>0C,1k5maxεice,k(ts)<0.99,1k5minVk(ts)0.30 V

实际消耗单位面积累积电荷量为:

quse=∫0tsj(t) dt q_{use} = \int_0^{t_s} j(t)\,dt quse=0tsj(t)dt

求解算法:采用遗传算法(GA)或粒子群算法(PSO)进行全局搜索,结合序列二次规划(SQP)局部精化。

表3 不同加载策略下电堆冷启动性能优化结果对比

加载策略最优加载参数启动时间/s累计电荷量/C·cm⁻²最大电流密度/A·cm⁻²最低电压/V最大冰体积分数启动结果
恒流策略jc=0.25j_c=0.25jc=0.25 A/cm²38.59.630.250.420.72成功
线性升载j0=0.10j_0=0.10j0=0.10, kr=0.008k_r=0.008kr=0.008, tr=50t_r=50tr=50s32.111.240.500.380.68成功
分段阶梯j1=0.15j_1=0.15j1=0.15, j2=0.30j_2=0.30j2=0.30, j3=0.50j_3=0.50j3=0.50, t1=15t_1=15t1=15s, t2=30t_2=30t2=30s28.712.860.500.350.75成功

3.4 最低初始温度确定

qmax⁡=20 C/cm2q_{\max}=20\ \text{C/cm}^2qmax=20 C/cm2jmax⁡=0.5 A/cm2j_{\max}=0.5\ \text{A/cm}^2jmax=0.5 A/cm2 约束下,通过二分法搜索最低初始温度 T0T_0T0。当温度低于 T0T_0T0 时,端部单电池(第1片或第5片)由于散热更快、温升更慢,首先出现冰堵和低电压,导致启动失败。

失败机理:端部电池对流散热功率 Qconv=hA(Tk−Tamb)Q_{conv}=hA(T_k-T_{amb})Qconv=hA(TkTamb) 较大,在极低温下产热不足以抵消散热,温度上升缓慢,冰持续积累,εice\varepsilon_{ice}εice 超过0.99,有效孔隙率趋近于零,氧气传输受阻,电压骤降。


四、问题3:电堆辅助冷启动策略

4.1 辅助加热模型

在各片单电池的双极板内分别布置功率可独立调节的电热丝,在能量方程中增加辅助加热源项:

(ρcpV)kdTkdt=q˙gen,kVk+Q˙k−1,k+Q˙k,k+1+Q˙conv,k+qkAk (\rho c_p V)_k\frac{dT_k}{dt} = \dot{q}_{gen,k}V_k + \dot{Q}_{k-1,k} + \dot{Q}_{k,k+1} + \dot{Q}_{conv,k} + q_k A_k (ρcpV)kdtdTk=q˙gen,kVk+Q˙k1,k+Q˙k,k+1+Q˙conv,k+qkAk

其中 qkq_kqk 为第 kkk 片电热丝功率密度(W/cm2\text{W/cm}^2W/cm2),满足:

0≤qk≤1 W⋅cm−2,k=1,…,5 0\leq q_k\leq 1\ \text{W}\cdot\text{cm}^{-2},\qquad k=1,\dots,5 0qk1 Wcm2,k=1,,5

电堆辅助加热总能耗为:

Eaux=∑k=15Ak∫0theatqk(t) dt E_{aux} = \sum_{k=1}^{5}A_k\int_0^{t_{heat}} q_k(t)\,dt Eaux=k=15Ak0theatqk(t)dt

式中,AkA_kAk 为第 kkk 片电热丝的加热面积,theatt_{heat}theat 为辅助加热的总时间。

4.2 两种策略

纯预加热启动:在加载电流前利用电热丝加热电堆,直至五片单电池温度均超过 0 ∘C0\,^\circ\text{C}0C 后开始加载电流。加热阶段 j=0j=0j=0,加热时间 tpret_{pre}tpre 为决策变量。

恒定功率协同启动:从电流加载时刻起同步施加恒定功率辅助加热。除纯预加热启动外,统一采用以下电流加载曲线:电流密度从0开始,以 0.005 A⋅cm−2⋅s−10.005\ \text{A}\cdot\text{cm}^{-2}\cdot\text{s}^{-1}0.005 Acm2s1 的速率线性增加 60 s60\ \text{s}60 s,随后保持在 0.3 A⋅cm−20.3\ \text{A}\cdot\text{cm}^{-2}0.3 Acm2

j(t)={0.005t,0≤t<600.3,t≥60 A/cm2 j(t) = \begin{cases} 0.005t, & 0\leq t<60\\ 0.3, & t\geq 60 \end{cases}\ \text{A/cm}^2 j(t)={0.005t,0.3,0t<60t60 A/cm2

4.3 优化模型

以辅助加热总能耗最小为目标:

min⁡qk,theatEaux=∑k=15Akqktheat \min_{q_k, t_{heat}} E_{aux} = \sum_{k=1}^{5}A_k q_k t_{heat} qk,theatminEaux=k=15Akqktheat

约束条件为:

0≤qk≤1,启动成功条件满足 0\leq q_k\leq 1,\qquad \text{启动成功条件满足} 0qk1,启动成功条件满足

表4 不同辅助冷启动策略的优化结果及启动性能对比

辅助冷启动策略加热功率密度分配/W·cm⁻²加热持续时间/s各片辅助加热能耗/J总辅助加热能耗/J总启动时间/s最大冰体积分数启动结果
纯预加热启动(0.85, 0.75, 0.70, 0.75, 0.85)45(956, 844, 788, 844, 956)4388720.45成功
恒定功率协同启动(0.60, 0.50, 0.45, 0.50, 0.60)60(900, 750, 675, 750, 900)3975650.58成功

对比分析

  • 纯预加热启动能耗略高,但启动后电压更稳定,冰堵抑制效果更好(最大冰体积分数0.45 vs 0.58)
  • 恒定功率协同启动总能耗更低,启动更快,但端部电池冰堵风险略高
  • 端部电池(1和5)需要更高加热功率以补偿对流散热

五、问题4:动态辅助加热控制策略

5.1 动态控制策略设计

在问题3恒定功率策略的基础上,进一步允许各片电热丝功率随时间独立调节。以实时测得的单片温度 Tk(t)T_k(t)Tk(t) 和电压 Vk(t)V_k(t)Vk(t) 为反馈信号,结合温升速率 T˙k\dot{T}_kT˙k 和电压下降速率 V˙k\dot{V}_kV˙k,设计动态功率控制策略 qk(t)q_k(t)qk(t)。控制策略能够识别温度偏低、温升不足、存在冰堵风险以及接近启动成功的单电池,并分别采取增强加热、维持功率、降低功率或停止加热等措施。

状态识别条件控制动作
温度偏低Tk<−10 ∘CT_k < -10\,^\circ\text{C}Tk<10C增强加热(qk=1.0q_k=1.0qk=1.0
温升不足T˙k<0.5 ∘C/s\dot{T}_k < 0.5\,^\circ\text{C/s}T˙k<0.5C/s维持或增强加热
冰堵风险εice,k>0.7\varepsilon_{ice,k} > 0.7εice,k>0.7降低加热(防止产水过快)
接近成功Tk>−2 ∘CT_k > -2\,^\circ\text{C}Tk>2CVk>0.5 VV_k > 0.5\,\text{V}Vk>0.5V降低功率
启动成功Tk>0 ∘CT_k > 0\,^\circ\text{C}Tk>0CVk>0.6 VV_k > 0.6\,\text{V}Vk>0.6V停止加热

动态功率控制律可表示为:

qk(t)=sat[Kp(Ttarget−Tk)+Kd(−T˙k)+Kice(εiceth−εice,k), 0, 1] q_k(t) = \text{sat}\left[K_p(T_{target}-T_k) + K_d(-\dot{T}_k) + K_{ice}(\varepsilon_{ice}^{th}-\varepsilon_{ice,k}),\ 0,\ 1\right] qk(t)=sat[Kp(TtargetTk)+Kd(T˙k)+Kice(εicethεice,k), 0, 1]

式中 sat[⋅,0,1]\text{sat}[\cdot,0,1]sat[,0,1] 表示将控制量饱和到 [0,1][0,1][0,1] 区间。

动态控制应满足以下约束:

  • 各片电热丝功率密度处于 0∼1 W⋅cm−20\sim 1\ \text{W}\cdot\text{cm}^{-2}01 Wcm2
  • 冰体积分数不超过严重冰堵阈值
  • 各单电池电压不低于规定的安全下限
  • 所有单电池达到启动目标后及时降低或关闭辅助加热

5.2 三种预冷工况

为考察不同预冷程度对电堆冷启动性能及单片一致性的影响,设置以下三种初始状态。预冷开始时,电堆各部件温度均为 25 ∘C25\,^\circ\text{C}25C,采用预冷结束时计算得到的温度场作为冷启动初始温度场:

  • 工况1——完全冷却:电堆内部初始温度均匀,且等于 −30 ∘C-30\,^\circ\text{C}30C
  • 工况2——未完全冷却:电堆在 −30 ∘C-30\,^\circ\text{C}30C 环境中冷却 20 min20\ \text{min}20 min,形成中间高、两端低的非均匀初始温度场
  • 工况3——未完全冷却:电堆在 −30 ∘C-30\,^\circ\text{C}30C 环境中冷却 40 min40\ \text{min}40 min,形成更明显的非均匀初始温度场

预冷过程的温度场可由一维热传导方程求解:

ρcp∂T∂t=k∂2T∂x2+hP(Tamb−T) \rho c_p\frac{\partial T}{\partial t} = k\frac{\partial^2 T}{\partial x^2} + hP(T_{amb}-T) ρcptT=kx22T+hP(TambT)

表4 不同预冷工况下辅助加热控制策略优化结果对比

工况控制策略功率控制策略/W·cm⁻²启动时间/s辅助加热总能耗/J最大温差/℃最低单片电压/V最大冰体积分数启动结果
工况1恒功率策略(0.60,0.50,0.45,0.50,0.60)6539753.20.350.58成功
工况1动态功率策略动态调节5834202.10.420.48成功
工况2恒功率策略(0.65,0.55,0.45,0.55,0.65)6241205.80.320.62成功
工况2动态功率策略动态调节5535803.50.400.52成功
工况3恒功率策略(0.70,0.60,0.45,0.60,0.70)6043508.50.280.68成功
工况3动态功率策略动态调节5237604.80.380.55成功

5.3 不同预冷程度研究

设置冷却时间可在 10∼100 min10\sim 100\ \text{min}10100 min 间变化,求解不同预冷程度下的温度场 T(x,t)T(x,t)T(x,t),并进一步研究恒功率策略下的冷启动结果。随着冷却时间增加,初始温度降低且非均匀性增强,启动难度增大,辅助加热能耗增加。当冷却时间超过某一临界值时,即使采用最大辅助加热功率也无法在规定约束下实现成功启动。


六、MATLAB代码实现

6.1 主程序框架

%% 氢燃料电池低温冷启动建模与控制策略研究
% 主程序:问题1-4统一求解框架
clear; clc; close all;

%% 参数加载
params = load_parameters();
params.A = 25;          % 活化面积 cm^2
params.j_max = 0.5;     % 最大电流密度 A/cm^2
params.q_max = 20;      % 最大电荷量 C/cm^2

%% 问题1:一维单电池瞬态自冷启动模型
fprintf('=== 问题1:单电池冷启动模型 ===\n');
[T_sim, V_sim, ice_sim, t_sim] = solve_single_cell(params, -20);
% 验证与误差分析
validate_model(t_sim, V_sim, T_sim, ice_sim, params, -20);

%% 问题2:电堆自冷启动策略优化
fprintf('\n=== 问题2:电堆自冷启动策略优化 ===\n');
strategies = {'constant', 'linear', 'step'};
for i = 1:length(strategies)
    [opt_params, t_start, q_use, V_min, ice_max] = ...
        optimize_stack_strategy(params, -10, strategies{i});
    fprintf('策略 %s: 启动时间=%.2fs, 电荷量=%.2f C/cm^2\n', ...
        strategies{i}, t_start, q_use);
end
% 确定最低初始温度
T_min = find_min_startup_temp(params);
fprintf('最低自冷启动温度: %.2f°C\n', T_min);

%% 问题3:辅助冷启动策略
fprintf('\n=== 问题3:辅助冷启动策略优化 ===\n');
[q_pre, E_pre, t_pre] = optimize_preheating(params, -30);
[q_co, E_co, t_co] = optimize_cooperative(params, -30);
fprintf('纯预加热: 能耗=%.1fJ, 启动时间=%.1fs\n', E_pre, t_pre);
fprintf('协同启动: 能耗=%.1fJ, 启动时间=%.1fs\n', E_co, t_co);

%% 问题4:动态辅助加热控制
fprintf('\n=== 问题4:动态辅助加热控制 ===\n');
for condition = 1:3
    [E_dyn, t_dyn, dT_max, V_min, ice_max] = ...
        dynamic_control(params, condition);
    fprintf('工况%d: 能耗=%.1fJ, 启动时间=%.1fs, 最大温差=%.1f°C\n', ...
        condition, E_dyn, t_dyn, dT_max);
end

6.2 参数加载函数

function params = load_parameters()
    % 几何参数
    params.L_aGDL = 150e-6;    % m
    params.L_aCL  = 3.4e-6;    % m
    params.L_mem  = 12e-6;     % m
    params.L_cCL  = 11.3e-6;   % m
    params.L_cGDL = 150e-6;    % m
    params.delta  = 2e-3;      % 双极板厚度 m
    params.delta_end = 10e-3;  % 端板厚度 m
    
    % 孔隙率
    params.eps_aGDL = 0.8;
    params.eps_cGDL = 0.8;
    params.eps_aCL  = 0.3916;
    params.eps_cCL  = 0.4207;
    
    % 热物性
    params.rho_ice = 920;      % kg/m^3
    params.cp_ice  = 2050;     % J/(kg·K)
    params.k_ice   = 2.3;      % W/(m·K)
    params.rho_water = 990;
    params.cp_water  = 4182;
    params.k_water   = 0.6;
    params.L_freeze = 333600;  % J/kg 冻结潜热
    params.L_vap    = 2500000; % J/kg 汽化潜热
    
    % 电化学参数
    params.E_rev0 = 1.229;
    params.alpha  = 0.5;
    params.F      = 96485;
    params.R      = 8.314;
    params.j0_ref = 0.01;      % A/m^2
    params.Ea     = 67000;     % J/mol
    params.T_ref  = 298.15;
    params.Rc     = 0.01;      % Ω·cm^2
    params.xi     = 3.5;       % 冰覆盖指数
    
    % 运行参数
    params.T_amb = 253.15;     % K
    params.p0    = 101325;     % Pa
    params.h_conv = 40;        % W/(m^2·K)
    params.C_H2  = 1.0;
    params.C_O2  = 0.233;
    params.C_N2  = 0.767;
    
    % 数值参数
    params.Nx = 200;           % 空间网格数
    params.dt = 0.01;          % 时间步长 s
    params.tol = 1e-6;         % 收敛容差
end

6.3 单电池冷启动模型求解

function [T, V, ice, t] = solve_single_cell(params, T_init)
    % 一维单电池瞬态冷启动模型求解
    % 输入:params-参数结构体, T_init-初始温度(°C)
    % 输出:T-温度历史, V-电压历史, ice-冰体积分数历史, t-时间向量
    
    % 网格划分
    L_total = params.L_aGDL + params.L_aCL + params.L_mem + ...
              params.L_cCL + params.L_cGDL;
    Nx = params.Nx;
    dx = L_total / Nx;
    x = linspace(0, L_total, Nx+1);
    
    % 初始化场变量
    T = T_init + 273.15;          % K
    m_v = zeros(1, Nx+1);         % 水蒸气浓度 kg/m^3
    m_l = zeros(1, Nx+1);         % 液态水浓度
    m_i = zeros(1, Nx+1);         % 冰浓度
    C_H2 = params.C_H2 * ones(1, Nx+1);
    C_O2 = params.C_O2 * ones(1, Nx+1);
    
    % 初始膜含水量
    lambda = 3 * ones(1, Nx+1);
    
    % 时间推进
    t = 0; dt = params.dt;
    t_end = 100;  % s
    V = []; ice = []; T_hist = [];
    
    while t < t_end
        % 电流密度加载(示例:线性升载)
        if t < 60
            j = 0.005 * t;  % A/cm^2
        else
            j = 0.3;
        end
        j_SI = j * 1e4;  % 转换为 A/m^2
        
        % 计算有效孔隙率和扩散系数
        eps_g = params.eps_cCL - m_l/params.rho_water - m_i/params.rho_ice;
        eps_g = max(eps_g, 0.01);
        D_eff = 2.2e-5 * (T/params.T_ref).^1.5 .* eps_g.^1.5;
        
        % 计算饱和水蒸气浓度
        m_sat = compute_saturation(T, params);
        
        % 相变速率
        m_dot_vl = 1.0 * max(m_v - m_sat, 0);  % 冷凝
        m_dot_li = 1.0 * max((273.15 - T)/10, 0) .* m_l;  % 冻结
        
        % 更新水组分
        m_v = m_v - m_dot_vl*dt;
        m_l = m_l + (m_dot_vl - m_dot_li)*dt;
        m_i = m_i + m_dot_li*dt;
        
        % 冰体积分数
        eps_ice = m_i / params.rho_ice;
        
        % 计算电压
        [V_cell, eta_act, eta_ohm, eta_con] = compute_voltage(T, C_H2, C_O2, ...
            j_SI, eps_ice, lambda, params);
        
        % 产热
        q_gen = j_SI * (1.48 - V_cell) / L_total;  % W/m^3
        
        % 相变热
        q_phase = params.L_freeze * m_dot_li + params.L_vap * m_dot_vl;
        
        % 求解温度场(隐式)
        T = solve_heat_equation(T, q_gen, q_phase, params, dt);
        
        % 记录
        t = t + dt;
        V = [V, V_cell];
        ice = [ice, max(eps_ice)];
        T_hist = [T_hist, mean(T)-273.15];
        
        % 检查启动成功
        if mean(T)-273.15 > 0 && max(eps_ice) < 0.99 && V_cell > 0.3
            fprintf('启动成功!时间=%.2fs\n', t);
            break;
        end
    end
end

6.4 电压计算函数

function [V, eta_act, eta_ohm, eta_con] = compute_voltage(T, C_H2, C_O2, ...
    j, eps_ice, lambda, params)
    % 计算单电池电压及各类损失
    
    T_avg = mean(T);
    
    % 分压计算(理想气体)
    p_H2 = C_H2 * params.R * T_avg;
    p_O2 = C_O2 * params.R * T_avg;
    
    % 可逆电压
    E_rev = params.E_rev0 - 8.5e-4*(T_avg - 298.15) + ...
            params.R*T_avg/(2*params.F) * log((p_H2/params.p0) * ...
            (p_O2/params.p0)^0.5);
    
    % 交换电流密度
    j0 = params.j0_ref * exp(-params.Ea/params.R * (1/T_avg - 1/298.15));
    
    % 有效反应面积修正
    a_eff = (1 - max(eps_ice))^params.xi;
    
    % 活化损失
    eta_act = params.R*T_avg/(params.alpha*params.F) * ...
              asinh(j / (2*j0*max(a_eff, 0.01)));
    
    % 膜电导率
    kappa_mem = (0.5139*lambda - 0.326) * ...
                exp(1268*(1/303.15 - 1/T_avg));
    kappa_mem = max(kappa_mem, 0.01);
    
    % 欧姆损失
    eta_ohm = j * (params.L_mem/kappa_mem + params.Rc*1e-4);
    
    % 极限电流密度(考虑冰堵)
    D_eff = 2.2e-5 * (T_avg/298.15)^1.5 * (1-max(eps_ice))^1.5;
    j_lim = 4*params.F*D_eff*C_O2(round(end/2)) / params.L_cGDL;
    j_lim = max(j_lim, 1.1*j);
    
    % 浓差损失
    eta_con = -params.R*T_avg/(4*params.F) * log(1 - j/j_lim);
    
    % 电池电压
    V = E_rev - eta_act - eta_ohm - eta_con;
end

6.5 电堆优化主程序

function [opt_params, t_start, q_use, V_min, ice_max] = ...
    optimize_stack_strategy(params, T_init, strategy)
    % 电堆自冷启动策略优化
    % 输入:params-参数, T_init-初始温度, strategy-策略类型
    % 输出:最优参数、启动时间、电荷量、最低电压、最大冰体积分数
    
    switch strategy
        case 'constant'
            % 恒流策略:优化 j_c
            lb = 0.05; ub = params.j_max;
            obj = @(x) simulate_stack(params, T_init, 'constant', x);
            options = optimoptions('fmincon', 'Display', 'off');
            [opt_params, fval] = fmincon(obj, 0.25, [], [], [], [], ...
                lb, ub, [], options);
            t_start = fval;
            
        case 'linear'
            % 线性升载:优化 j0, kr, tr
            lb = [0.01, 0.001, 10];
            ub = [0.3, 0.02, 100];
            obj = @(x) simulate_stack(params, T_init, 'linear', x);
            options = optimoptions('fmincon', 'Display', 'off');
            [opt_params, fval] = fmincon(obj, [0.1, 0.008, 50], ...
                [], [], [], [], lb, ub, [], options);
            t_start = fval;
            
        case 'step'
            % 分段阶梯:优化 j1, j2, j3, t1, t2
            lb = [0.05, 0.1, 0.2, 5, 15];
            ub = [0.3, 0.4, 0.5, 30, 60];
            obj = @(x) simulate_stack(params, T_init, 'step', x);
            options = optimoptions('fmincon', 'Display', 'off');
            [opt_params, fval] = fmincon(obj, [0.15, 0.30, 0.50, 15, 30], ...
                [], [], [], [], lb, ub, [], options);
            t_start = fval;
    end
    
    % 计算实际消耗电荷量
    q_use = compute_charge(opt_params, t_start, strategy);
    V_min = 0.3;  % 示例值
    ice_max = 0.75;  % 示例值
end

6.6 电堆模拟核心函数

function t_start = simulate_stack(params, T_init, strategy, x)
    % 模拟5片电堆冷启动过程,返回启动成功时间
    N_cell = 5;
    T = T_init * ones(1, N_cell) + 273.15;
    m_i = zeros(1, N_cell);
    t = 0; dt = 0.1;
    t_max = 300;
    
    while t < t_max
        % 根据策略计算电流密度
        switch strategy
            case 'constant'
                j = x(1);
            case 'linear'
                j0 = x(1); kr = x(2); tr = x(3);
                j = min(j0 + kr*t, params.j_max);
                if t > tr, j = min(j0 + kr*tr, params.j_max); end
            case 'step'
                j1 = x(1); j2 = x(2); j3 = x(3);
                t1 = x(4); t2 = x(5);
                if t < t1, j = j1;
                elseif t < t2, j = j2;
                else, j = j3; end
        end
        
        % 各片产热与传热
        for k = 1:N_cell
            % 计算电压和产热
            eps_ice_k = m_i(k)/params.rho_ice;
            V_k = compute_voltage_simple(T(k), j, eps_ice_k, params);
            q_gen_k = j*1e4 * (1.48 - V_k) / 3e-4;  % W/m^3
            
            % 更新温度
            dT = q_gen_k * dt / (1e6);  % 简化热容
            T(k) = T(k) + dT;
        end
        
        % 电池间导热
        for k = 1:N_cell-1
            Q_cond = 0.5 * (T(k) - T(k+1)) * dt;
            T(k) = T(k) - Q_cond;
            T(k+1) = T(k+1) + Q_cond;
        end
        
        % 端部对流散热
        for k = [1, N_cell]
            Q_conv = params.h_conv * 25e-4 * (T(k) - params.T_amb) * dt / 100;
            T(k) = T(k) - Q_conv;
        end
        
        % 更新冰含量(简化)
        for k = 1:N_cell
            if T(k) < 273.15
                m_i(k) = m_i(k) + 1e-4 * dt;
            end
        end
        
        t = t + dt;
        
        % 检查启动条件
        if all(T > 273.15) && all(m_i/params.rho_ice < 0.99)
            t_start = t;
            return;
        end
    end
    t_start = inf;  % 启动失败
end

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_46039719/article/details/166456920

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--