Bladeren bron

放电系数需要通过充满电压进行二次校准

Signed-off-by: kevin <huhui@sharkgulf.com>
kevin 2 jaren geleden
bovenliggende
commit
098a237bae
1 gewijzigde bestanden met toevoegingen van 9 en 1 verwijderingen
  1. 9 1
      Application/app/sox/soc.c

+ 9 - 1
Application/app/sox/soc.c

@@ -343,7 +343,6 @@ static void _force_capacity_full(void){
 		_discharger_no_full_coef = 1.0f + delta_min/(_soc.coulomb_max - _soc.coulomb_min);
 	}
 
-	push_event(Charger_no_full_ceof, (u32)(_discharger_no_full_coef * 10000));
 	u32 cap_x10 = (u32)(_soc.current_real_coulomb / 3600.0f * 10);
 	u32 min_x10 = (u32)(curr_min_cap / 3600.0f * 10);
 	push_event(Charger_Full_cap2, ((min_x10 & 0xFFFF) << 16) | (cap_x10 & 0xFFFF));
@@ -351,7 +350,16 @@ static void _force_capacity_full(void){
 	if (bms_state_get()->pack_voltage >= 53000) {
 		_soc.current_real_coulomb = _soc.coulomb_max - _soc.coulomb_min;
 		_discharger_no_full_coef = 1.0f;
+	}else if (bms_state_get()->pack_voltage >= (53000 - 200)) {
+		_discharger_no_full_coef = MIN(_discharger_no_full_coef, 1.05f);
+	}else if (bms_state_get()->pack_voltage >= (53000 - 400)) {
+		_discharger_no_full_coef = MIN(_discharger_no_full_coef, 1.1f);
+	}else if (bms_state_get()->pack_voltage >= (53000 - 800)) {
+		_discharger_no_full_coef = MIN(_discharger_no_full_coef, 1.15f);
+	}else if (bms_state_get()->pack_voltage >= (53000 - 1000)) {
+		_discharger_no_full_coef = MIN(_discharger_no_full_coef, 1.2f);
 	}
+	push_event(Charger_no_full_ceof, (u32)(_discharger_no_full_coef * 10000));
 
 	//充满后,当前容量设置为最大容量
 	_soc.capacity = 100;