Przeglądaj źródła

save battery error to flash

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 lat temu
rodzic
commit
626e304eb5
3 zmienionych plików z 64 dodań i 17 usunięć
  1. 32 8
      Source/app_rs485_1.c
  2. 3 2
      Source/app_rs485_1.h
  3. 29 7
      Source/app_rs485_2.c

+ 32 - 8
Source/app_rs485_1.c

@@ -478,6 +478,14 @@ void  Sub_BMS_1_lt_State(void)
 	
 	
 }
 }
 
 
+void SetBmsErrNum1(uint8_t num)
+{
+	if (test_info.ti_bms_1.bms_err_num != num) {
+		test_info.ti_bms_1.bms_err_num = num;
+		Save_Test_Info();
+	}
+}
+
 uint8_t Is_Sub_BMS_1_Normal(void)
 uint8_t Is_Sub_BMS_1_Normal(void)
 {
 {
 	uint16_t work_sta = sub_bms_info_1.packet_common.work_status;
 	uint16_t work_sta = sub_bms_info_1.packet_common.work_status;
@@ -510,31 +518,47 @@ uint8_t Is_Sub_BMS_1_Normal(void)
 				break;
 				break;
 		}*/
 		}*/
 
 
-		if(update_bat.ub_bat == UPDATE_BAT_1)
+		if(update_bat.ub_bat == UPDATE_BAT_1) {
+			SetBmsErrNum1(1);
 			break;
 			break;
+		}
 		
 		
-		if(define_bms_1_error != D_BMS_ERROR_NO)
+		if(define_bms_1_error != D_BMS_ERROR_NO) {
+			SetBmsErrNum1(2);
 			break;
 			break;
+		}
 		
 		
-		if((cb_operate_state == CB_BAT1_BAT2_SERIES)&&(BAT1_IS_OPEN() == 0))
+		if((cb_operate_state == CB_BAT1_BAT2_SERIES)&&(BAT1_IS_OPEN() == 0)) {
+			SetBmsErrNum1(3);
 				break;
 				break;
-		if(Is_Soak())
+		}
+
+		if(Is_Soak()) {
+			SetBmsErrNum1(4);
 			break;
 			break;
+		}
 		
 		
-		if(SUB_BMS_1_DEC() == 0)
+		if(SUB_BMS_1_DEC() == 0) {			
+			SetBmsErrNum1(5);
 			break;
 			break;
+		}
 		
 		
 		if(work_sta)
 		if(work_sta)
 		{
 		{
-			bms_1_work_status = sub_bms_info_1.packet_common.work_status;
+			bms_1_work_status = sub_bms_info_1.packet_common.work_status;			
+			SetBmsErrNum1(6);
 			break;
 			break;
 		}
 		}
 
 
-		if(sub_bms_1_lt_state != SUB_BMS_CONT_HV485)
+		if(sub_bms_1_lt_state != SUB_BMS_CONT_HV485) {			
+			SetBmsErrNum1(7);
 			break;
 			break;
+		}
 
 
-		if(bms_1_test_define_error != 0)
+		if(bms_1_test_define_error != 0) {			
+			SetBmsErrNum1(8);
 			break;
 			break;
+		}
 		
 		
 		return 1;
 		return 1;
 	}while(0);
 	}while(0);

+ 3 - 2
Source/app_rs485_1.h

@@ -277,10 +277,11 @@ extern uint8_t bms_2_test_define_error;
 typedef struct
 typedef struct
 {
 {
 	uint32_t bms_err_timeout_cnt;
 	uint32_t bms_err_timeout_cnt;
-	uint32_t bms_err_cnt;
+	uint16_t bms_err_cnt;
+	uint8_t bms_err_num;
 }BMS_ERROR;
 }BMS_ERROR;
 
 
-#define TI_VALID_FLAG_KEY   (0x0326)
+#define TI_VALID_FLAG_KEY   (0x0327)
 typedef struct
 typedef struct
 {
 {
 	uint16_t ti_flag;
 	uint16_t ti_flag;

+ 29 - 7
Source/app_rs485_2.c

@@ -473,6 +473,13 @@ void  Sub_BMS_2_lt_State(void)
 	
 	
 }
 }
 
 
+void SetBmsErrNum2(uint8_t num)
+{
+	if (test_info.ti_bms_2.bms_err_num != num) {
+		test_info.ti_bms_2.bms_err_num = num;
+		Save_Test_Info();
+	}
+}
 
 
 uint8_t Is_Sub_BMS_2_Normal(void)
 uint8_t Is_Sub_BMS_2_Normal(void)
 {
 {
@@ -506,31 +513,46 @@ uint8_t Is_Sub_BMS_2_Normal(void)
 				break;
 				break;
 		}*/
 		}*/
 
 
-		if(update_bat.ub_bat == UPDATE_BAT_2)
+		if(update_bat.ub_bat == UPDATE_BAT_2) {
+			SetBmsErrNum2(1);
 			break;
 			break;
+		}
 		
 		
-		if(define_bms_2_error != D_BMS_ERROR_NO)
+		if(define_bms_2_error != D_BMS_ERROR_NO) {			
+			SetBmsErrNum2(2);
 			break;
 			break;
+		}
 		
 		
-		if((cb_operate_state == CB_BAT1_BAT2_SERIES)&&(BAT2_IS_OPEN() == 0))
+		if((cb_operate_state == CB_BAT1_BAT2_SERIES)&&(BAT2_IS_OPEN() == 0)) {			
+			SetBmsErrNum2(3);
 				break;
 				break;
-		if(Is_Soak())
+		}
+		if(Is_Soak()) {
+			SetBmsErrNum2(4);
 			break;
 			break;
+		}
 		
 		
-		if(SUB_BMS_2_DEC() == 0)
+		if(SUB_BMS_2_DEC() == 0) {
+			SetBmsErrNum2(5);
 			break;
 			break;
+		}
 		
 		
 		if(work_sta)
 		if(work_sta)
 		{
 		{
 			bms_2_work_status = sub_bms_info_2.packet_common.work_status;
 			bms_2_work_status = sub_bms_info_2.packet_common.work_status;
+			SetBmsErrNum2(6);
 			break;
 			break;
 		}
 		}
 
 
-		if(sub_bms_2_lt_state != SUB_BMS_CONT_HV485)
+		if(sub_bms_2_lt_state != SUB_BMS_CONT_HV485) {
+			SetBmsErrNum2(7);
 			break;
 			break;
+		}
 
 
-		if(bms_2_test_define_error != 0)
+		if(bms_2_test_define_error != 0) {
+			SetBmsErrNum2(8);
 			break;
 			break;
+		}
 		
 		
 		return 1;
 		return 1;
 	}while(0);
 	}while(0);