|
|
@@ -319,7 +319,7 @@ static int _soc_update_by_ocv(uint8_t prev_charge_status){
|
|
|
ocv_full_count = 0;
|
|
|
return changed;
|
|
|
}*/
|
|
|
- if (bms_health()->sigle_cell_over_voltage) { //单电芯过压强制充满
|
|
|
+ if (chargering && bms_health()->sigle_cell_over_voltage && (_soc.charger_coulomb >= (0.1f * 3600.0f))) { //单电芯过压强制充满
|
|
|
_force_capacity_full();
|
|
|
if (bms_state_get()->pack_voltage < SIGAL_CELL_OV_MAX_PACK_VOL) {
|
|
|
force_full_ts = 0; //单电芯过压,总电压小于SIGAL_CELL_OV_MAX_PACK_VOL, 放电欠压后不校准最小容量
|
|
|
@@ -338,7 +338,7 @@ static int _soc_update_by_ocv(uint8_t prev_charge_status){
|
|
|
ocv_full_count = 0;
|
|
|
}
|
|
|
}else if (!chargering && prev_charge_status && (_soc.capacity != 100)){
|
|
|
- if ((bms_state_get()->pack_voltage >= FULL_MAX_VOLTAGE) && (((_soc.coulomb_now - _soc.coulomb_min)/(_soc.coulomb_max - _soc.coulomb_min)) >= 0.998f)){//充电容量几乎接近最大容量
|
|
|
+ if ((bms_state_get()->pack_voltage >= FULL_MAX_VOLTAGE) && (_soc.charger_coulomb >= (0.1f * 3600.0f))){//充电容量几乎接近最大容量
|
|
|
_force_capacity_full();
|
|
|
changed = 1;
|
|
|
}
|