فهرست منبع

老化模式,只有电流大于2A,才开始记录温度和时间

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 4 سال پیش
والد
کامیت
4eec77a10c
1فایلهای تغییر یافته به همراه16 افزوده شده و 9 حذف شده
  1. 16 9
      Application/app/sox/state.c

+ 16 - 9
Application/app/sox/state.c

@@ -111,12 +111,6 @@ int bms_work_mode_set(int mode, int start){
 		return 1;
 	}
 	if (start){
-		if ((_bms_state.work_mode != WORK_MODE_AGING_TEST) && (mode == WORK_MODE_AGING_TEST)) {
-			memcpy(_bms_state.aging_start_temp, measure_value()->pack_temp, PACK_TEMPS_NUM * sizeof(int));
-			memcpy(_bms_state.aging_max_temp, measure_value()->pack_temp, PACK_TEMPS_NUM * sizeof(int));
-			_bms_state.aging_real_start = 0;
-			_bms_state.agint_cost_time = 0;
-		}
 		_bms_state.work_mode = mode;
 	}else {
 		_bms_state.work_mode = WORK_MODE_NORMAL;
@@ -704,6 +698,7 @@ static void _voltage_notify(void){
 }
 
 static void _temperature_notify(void){
+	static uint8_t _bms_aging_test = 0;
 	int pcb_current_temp = measure_value()->pack_temp[PCB_TEMP_INDEX];
 	if (abs(pcb_temp - pcb_current_temp) >= 5){//pcb温度变化超过5度,需要重新校准ML5238
 		if (pcb_temp_count ++ >= 5) {
@@ -718,7 +713,14 @@ static void _temperature_notify(void){
 	}
 	check_temp_state(); //check health of cell/pcb temperature
 	if (bms_work_is_aging_test()) {
-		if ((measure_value()->load_current <= -2000)) {
+		if (abs(measure_value()->load_current) >= 2000) {
+			if (_bms_aging_test == 0) {
+				memcpy(_bms_state.aging_start_temp, measure_value()->pack_temp, PACK_TEMPS_NUM * sizeof(int));
+				memcpy(_bms_state.aging_max_temp, measure_value()->pack_temp, PACK_TEMPS_NUM * sizeof(int));
+				_bms_state.aging_real_start = 0;
+				_bms_state.agint_cost_time = 0;
+				_bms_aging_test = 1;
+			}
 			if (_bms_state.aging_real_start == 0) {
 				_bms_state.aging_real_start = shark_get_seconds();
 			}
@@ -727,9 +729,14 @@ static void _temperature_notify(void){
 					_bms_state.aging_max_temp[i] = measure_value()->pack_temp[i];
 				}
 			}
-		}else if((_bms_state.agint_cost_time == 0) && (_bms_state.aging_real_start > 0)){
-			_bms_state.agint_cost_time = shark_get_seconds() - _bms_state.aging_real_start;
+		}else {
+			if(_bms_state.aging_real_start > 0){
+				_bms_state.agint_cost_time += (shark_get_seconds() - _bms_state.aging_real_start);
+				_bms_state.aging_real_start = 0;
+			}
 		}
+	}else {
+		_bms_aging_test = 0;
 	}
 }