4. OCV-SOC曲线标定
OCV-SOC曲线是BMS中所有SOC估算算法的“地基”。无论是安时积分修正、EKF观测、还是查表插值,最终都要回到“当前开路电压对应多少SOC”这一映射关系上。如果这条曲线本身不准,后续算法再精细也只是在错误基准上做修正。本节围绕OCV-SOC曲线的标定全流程展开:从测试方案设计、小电流充放电与弛豫测试,到滞回修正、温度修正,最后落到分段插值与查表实现。
一、OCV-SOC曲线的物理含义与标定目标
OCV(Open Circuit Voltage,开路电压)是电池在静置足够长时间、内部电化学反应达到平衡后的端电压。它与SOC之间存在单调但非线性的映射关系,典型磷酸铁锂电池在SOC 20%~80%区间电压平台极平,而三元锂电池平台相对倾斜。标定的目标就是获得一组“SOC→OCV”的离散数据点,并保证在目标温度范围内、充放电两个方向上都能准确复现。
需要特别说明的是:OCV-SOC曲线并非单值函数。同一SOC下,充电方向得到的OCV通常高于放电方向,这就是滞回现象。因此标定输出应至少包含充电OCV曲线和放电OCV曲线两条,或给出滞回修正量。
二、小电流充放电与弛豫测试方案
标准做法是采用“小电流阶梯充放电+静置弛豫”组合。小电流用于减小极化,弛豫用于让电压回落到接近平衡态。以某三元锂电池(标称容量50Ah,电压范围3.0~4.2V)为例,示例测试流程如下:
- 以0.05C(2.5A)恒流放电至截止电压3.0V,静置2小时,记录为SOC=0%的OCV。
- 以0.05C恒流充电,每充入5%SOC(2.5Ah)后停止,静置1小时,记录端电压作为该SOC点的充电OCV。
- 充电至4.2V后静置2小时,记录SOC=100%的OCV。
- 再以0.05C恒流放电,每放出5%SOC后静置1小时,记录放电OCV。
- 放电至3.0V结束,完成一个完整循环。
静置时间的判断依据是电压变化率:当|dV/dt|小于0.5mV/min时,可认为基本达到平衡。若静置1小时后仍不满足,应延长至2小时。测试环境温度控制在25±2℃,作为基准温度曲线。
三、滞回修正
充放电两条OCV曲线之间的差值即为滞回电压。在SOC 30%~70%区间,三元锂电池滞回可达20~50mV,磷酸铁锂可达30~80mV。修正方法有两种:
- 双曲线法:分别保存充电OCV和放电OCV两条查表曲线,根据当前电流方向选择对应曲线。充电时用充电曲线,放电时用放电曲线,静置时取两者平均值。
- 滞回补偿法:以放电曲线为基准,定义滞回修正量ΔV_hys(SOC),充电时OCV = OCV_discharge + ΔV_hys。ΔV_hys可通过两条曲线逐点相减得到。
实际BMS中更常用双曲线法,因为实现简单、无需额外状态判断。但需注意在充放电切换瞬间,应加入过渡处理,避免SOC跳变。
四、温度修正
温度对OCV的影响主要体现在低温下极化增大、平台区电压整体下移。标定温度点通常取-20℃、-10℃、0℃、10℃、25℃、40℃、55℃。每个温度点重复上述小电流充放电测试,得到该温度下的OCV-SOC曲线。
温度修正的实现方式有两种:一是建立二维查表OCV(SOC, T),二是以25℃曲线为基准,定义温度修正系数k(T),OCV(SOC,T) = OCV(SOC,25℃) + k(T)·f(SOC)。前者精度高但存储量大,后者节省空间但需要拟合修正函数。对于嵌入式BMS,推荐采用二维查表+线性插值,在SOC和温度两个维度上同时插值。
五、分段插值与查表实现
标定得到的离散点通常按5%或10%SOC间隔存储。查表时需要在两个相邻点之间插值。线性插值公式为:
OCV(SOC) = OCV[i] + (OCV[i+1] - OCV[i]) * (SOC - SOC[i]) / (SOC[i+1] - SOC[i])
其中 SOC[i] <= SOC < SOC[i+1]
对于平台区(如磷酸铁锂SOC 30%~70%),线性插值误差较大,建议加密标定点至2%或采用三次样条插值。工程折中方案是:平台区用5%间隔+线性插值,两端用10%间隔。查表实现时,先通过二分查找或直接计算定位区间索引,再执行插值。
下面给出一个典型的查表实现示例(C语言伪代码):
float ocv_lookup(float soc, const float *soc_table, const float *ocv_table, int n)
{
if (soc <= soc_table[0]) return ocv_table[0];
if (soc >= soc_table[n-1]) return ocv_table[n-1];
int i = 0;
while (i < n-1 && soc > soc_table[i+1]) i++;
float ratio = (soc - soc_table[i]) / (soc_table[i+1] - soc_table[i]);
return ocv_table[i] + ratio * (ocv_table[i+1] - ocv_table[i]);
}
若需二维温度插值,则先按温度定位两个相邻温度曲线,分别做SOC插值得到OCV1和OCV2,再按温度线性插值得到最终OCV。
六、标定结果验证与常见问题
标定完成后,需用独立测试数据验证。验证方法:以0.3C进行动态工况放电,用安时积分得到参考SOC,再用标定曲线反查OCV对应的SOC,比较两者偏差。若偏差在±3%以内,认为曲线可用;若平台区偏差超过5%,需加密标定点或检查静置时间是否足够。
常见问题包括:静置时间不足导致OCV偏高或偏低;温度补偿未覆盖实际工作范围;滞回修正方向判断错误导致SOC在充放电切换时跳变。排查时应先确认测试数据本身是否满足平衡条件,再检查查表索引和插值边界处理。
总结来说,OCV-SOC曲线标定是一项“测试—处理—实现—验证”闭环工作。测试阶段要保证小电流和充分弛豫;处理阶段要分别保留充放电曲线并完成温度维度扩展;实现阶段要合理选择插值方式和查表结构;验证阶段要用独立工况数据检验偏差。只有这四个环节都做到位,OCV-SOC曲线才能真正成为BMS SOC估算的可靠基准。