|
|
@@ -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;
|
|
|
}
|
|
|
}
|
|
|
|