基于规则策略的纯电动汽车复合电源仿真模型,包括DCDC模型、电池模型,超级电容模型。
先看动力电池的建模。这里用二阶RC等效电路能比较好地反映动态特性。试着用Python搭个简化模型:
class BatteryModel: def __init__(self, soc=0.8): self.soc = soc self.r0 = 0.001 # 欧姆 self.r1 = 0.0005 self.c1 = 5000 # 法拉 self.v_ocv = 3.7 * 100 # 100个单体串联 def step(self, current, dt): v_r1 = self.i_r1 * self.r1 self.i_r1 += (current - self.i_r1) * dt / (self.r1*self.c1) terminal_v = self.v_ocv - current*self.r0 - v_r1 self.soc -= current * dt / (3600*200) # 200Ah容量 return terminal_v这个模型捕捉了欧姆极化、浓差极化对端电压的影响。特别要注意的是soc更新逻辑,这里用库仑计数法实现,实际开发时还要考虑温度补偿。
超级电容的建模更强调动态响应。我们采用三支路模型:
function [v_sc, soc_sc] = supercap_model(i_sc, dt) persistent c0 c1 c2 r1 r2; if isempty(c0) c0 = 3000; c1 = 500; c2 = 200; % 法拉 r1 = 0.001; r2 = 0.005; % 欧姆 end v0 = (1/c0)*i_sc*dt; v1 = (1/(c1*r1))*exp(-dt/(r1*c1)); v2 = (1/(c2*r2))*exp(-dt/(r2*c2)); v_sc = v0 + v1 + v2; soc_sc = 1 - (i_sc*dt)/(c0*2.7); % 假设额定电压2.7V end微分方程的处理采用指数积分法,这种数值方法在保证精度的同时计算量小。soc计算时要注意电压窗口的限制,这里用2.7V作为参考点。
DCDC转换器是能量调度的关键。用状态空间平均法建模更贴近实际控制:
typedef struct { double L; // 电感量 double C; // 输出电容 double R_load; // 负载电阻 double fs; // 开关频率 } DCDC_Params; void dcdc_update(DCDC_Params *p, double *iL, double *vC, double d, double Vin, double dt) { double A[2][2] = { {-p->R_load/p->L, -1.0/p->L}, {1.0/p->C, -1.0/(p->R_load*p->C)} }; double B[2] = { d*Vin/p->L, 0 }; // 前向欧拉法迭代 double diL = A[0][0]*(*iL) + A[0][1]*(*vC) + B[0]; double dvC = A[1][0]*(*iL) + A[1][1]*(*vC) + B[1]; *iL += diL * dt; *vC += dvC * dt; }占空比d在这里作为控制输入,实际应用中需要加入PID闭环控制。注意电感电流和电容电压的状态更新要同步进行。
当三大模块联立仿真时,功率分配策略才是灵魂所在。这里有个典型的规则策略实现:
def power_management(power_demand, bat_soc, sc_soc): if power_demand > bat_max_power * 0.8: # 峰值功率需求时启用超级电容 bat_power = bat_max_power * 0.7 sc_power = power_demand - bat_power dcdc_mode = 'boost' elif sc_soc > 0.9 and power_demand < 0: # 回馈制动时优先给超级电容充电 sc_power = min(abs(power_demand), sc_max_charge) bat_power = power_demand + sc_power dcdc_mode = 'buck' else: # 常规工况电池主导 sc_power = 0 bat_power = power_demand dcdc_mode = 'standby' return bat_power, sc_power, dcdc_mode这个策略考虑了功率需求强度、soc状态和能量流向。实际调试时阈值需要结合具体车型参数调整,比如超级电容的soc死区设置会影响循环寿命。
搭建完整仿真平台时要注意各模块的时序耦合问题。建议采用变步长求解器,在电流突变时自动缩小步长。某次实测中发现,当DCDC开关频率设为20kHz时,仿真步长超过5us会导致输出电压振荡,这提醒我们模型的时间分辨率要与实际物理过程匹配。
最终得到的复合电源系统在NEDC工况下测试,电池电流波动幅值降低了约62%,超级电容承担了87%的瞬态功率需求。不过这种规则策略在复杂路况下仍有优化空间,下次可以聊聊怎么用动态规划算法做全局优化。