소스 검색

when powerdown, only is capacity changed, we should save soc

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 년 전
부모
커밋
601119acde
3개의 변경된 파일11개의 추가작업 그리고 7개의 파일을 삭제
  1. 7 3
      Application/app/sox/soc.c
  2. 1 1
      Application/app/sox/soc.h
  3. 3 3
      Application/app/sox/state.c

+ 7 - 3
Application/app/sox/soc.c

@@ -93,18 +93,20 @@ static __inline__ float _delta_time(void){
 	return soc_delta_time; //秒
 }
 
-void soc_update_by_ocv(void){
+int soc_update_by_ocv(void){
 	static int cali_full_count = 0;
+	int changed = 0;
 	if (_soc.flags & SOC_FLAG_CALIBRATED){
 		if (!chargering && bms_health()->powerdown_lower_voltage){
 			_soc.coulomb_min = _soc.coulomb_now; //已经校准过了,而且电池进入powerdown,最小容量修正为当前容量
 			_soc.capacity = 0;
 			soc_warning("current coulomb %f\n", _soc.coulomb_now);
-			return;
+			changed = 1;
 		}
 		if (chargering){
 			if (bms_state_get()->pack_voltage >= (54000)){
 				_soc.capacity = 100;
+				changed = 1;
 			}
 		}
 	}else {
@@ -116,13 +118,15 @@ void soc_update_by_ocv(void){
 					if (cali_full_count == 10) {
 						soc_debug("measure_value()->load_current %d\n", measure_value()->load_current);
 						_soc.capacity = 100;
+						changed = 1;
 					}
-					return;
+					return changed;
 				}
 			}
 		}
 		cali_full_count = 0;
 	}
+	return changed;
 }
 
 static void soc_update_charger_remain_time(void){

+ 1 - 1
Application/app/sox/soc.h

@@ -23,7 +23,7 @@ typedef struct {
 
 void soc_init(void);
 void soc_update(void);
-void soc_update_by_ocv(void);
+int soc_update_by_ocv(void);
 uint32_t soc_get_cycle(void);
 uint32_t soc_get_charger_remain_time(void);
 soc_t *get_soc(void);

+ 3 - 3
Application/app/sox/state.c

@@ -220,9 +220,9 @@ static void _process_power_down(void){
 	if (bms_health()->powerdown_lower_voltage){
 		state_debug("BMS System PowerDown!!\n");
 
-		soc_update_by_ocv();
-		
-		nv_save_soc();
+		if (soc_update_by_ocv()) {
+			nv_save_soc();
+		}
 		
 		shark_uart_flush();
 		if (io_state()->charger_detect_irq || io_state()->charger_detect){//have charger, do'nt power down