|
|
@@ -410,6 +410,12 @@ static void soc_update_by_current_and_time(float current_now, float delta_time,
|
|
|
double delta_q = current * delta_time;
|
|
|
uint8_t est_capaticy = _soc.capacity;
|
|
|
int update_capticy = 0;
|
|
|
+
|
|
|
+ if (!chargering) {
|
|
|
+ soc_update_discharger_coeff();
|
|
|
+ delta_q = delta_q * _discharger_coefficient;
|
|
|
+ }
|
|
|
+
|
|
|
double est_coulomb = _soc.coulomb_now + delta_q;//计算当前容量,充电加, 放电减
|
|
|
|
|
|
if (est_coulomb < 0){
|
|
|
@@ -427,9 +433,10 @@ static void soc_update_by_current_and_time(float current_now, float delta_time,
|
|
|
update_capticy = 1;
|
|
|
}
|
|
|
}else {
|
|
|
- soc_update_discharger_coeff();
|
|
|
- delta_q = delta_q * _discharger_coefficient;
|
|
|
_soc.dischrger_coulomb += abs(delta_q);
|
|
|
+ if (est_coulomb < _soc.coulomb_min) {
|
|
|
+ _soc.coulomb_min = est_coulomb;
|
|
|
+ }
|
|
|
if ((est_capaticy > 0) && (est_capaticy <= _soc.capacity)) { //放电,容量不能等于0,需要靠欠压或者PowerDown 矫正到0
|
|
|
update_capticy = 1;
|
|
|
}
|