Parcourir la source

fix: 判断电流大小需要取绝对值

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui il y a 4 ans
Parent
commit
0fe55bc2bd
1 fichiers modifiés avec 8 ajouts et 6 suppressions
  1. 8 6
      Application/app/sox/health.c

+ 8 - 6
Application/app/sox/health.c

@@ -237,11 +237,12 @@ static void _single_low_judge_current(bool set) {
 		bms_health()->b_flags &= ~(B_FLAGS_SINGLE_LOW_CURRENT | B_FLAGS_SINGLE_MID_CURRENT | B_FLAGS_SINGLE_BIG_CURRENT | B_FLAGS_SINGLE_LARGER_CURRENT);
 		bms_health()->b_flags &= ~(B_FLAGS_SINGLE_LOW_CURRENT | B_FLAGS_SINGLE_MID_CURRENT | B_FLAGS_SINGLE_BIG_CURRENT | B_FLAGS_SINGLE_LARGER_CURRENT);
 		return;
 		return;
 	}
 	}
-	if (measure_value()->load_current < MAX_HA*1000/2) { // 0.5C ???
+	int load_current = abs(measure_value()->load_current);
+	if (load_current < MAX_HA*1000/2) { // 0.5C ???
 		bms_health()->b_flags |= B_FLAGS_SINGLE_LOW_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_SINGLE_LOW_CURRENT;
-	}else if (measure_value()->load_current < MAX_HA*1000) { // 1C ???
+	}else if (load_current < MAX_HA*1000) { // 1C ???
 		bms_health()->b_flags |= B_FLAGS_SINGLE_MID_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_SINGLE_MID_CURRENT;
-	}else if (measure_value()->load_current < MAX_HA * 1000 * 3/2) { // 1.5C ???
+	}else if (load_current < MAX_HA * 1000 * 3/2) { // 1.5C ???
 		bms_health()->b_flags |= B_FLAGS_SINGLE_BIG_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_SINGLE_BIG_CURRENT;
 	}else {
 	}else {
 		bms_health()->b_flags |= B_FLAGS_SINGLE_LARGER_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_SINGLE_LARGER_CURRENT;
@@ -252,11 +253,12 @@ static void _pack_low_judge_current(bool set) {
 		bms_health()->b_flags &= ~(B_FLAGS_PACK_LOW_CURRENT | B_FLAGS_PACK_MID_CURRENT | B_FLAGS_PACK_BIG_CURRENT | B_FLAGS_PACK_LARGER_CURRENT);
 		bms_health()->b_flags &= ~(B_FLAGS_PACK_LOW_CURRENT | B_FLAGS_PACK_MID_CURRENT | B_FLAGS_PACK_BIG_CURRENT | B_FLAGS_PACK_LARGER_CURRENT);
 		return;
 		return;
 	}
 	}
-	if (measure_value()->load_current < MAX_HA*1000/2) {
+	int load_current = abs(measure_value()->load_current);
+	if (load_current < MAX_HA*1000/2) {
 		bms_health()->b_flags |= B_FLAGS_PACK_LOW_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_PACK_LOW_CURRENT;
-	}else if (measure_value()->load_current < MAX_HA*1000) {
+	}else if (load_current < MAX_HA*1000) {
 		bms_health()->b_flags |= B_FLAGS_PACK_MID_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_PACK_MID_CURRENT;
-	}else if (measure_value()->load_current < MAX_HA * 1000 * 3/2){
+	}else if (load_current < MAX_HA * 1000 * 3/2){
 		bms_health()->b_flags |= B_FLAGS_PACK_BIG_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_PACK_BIG_CURRENT;
 	}else {
 	}else {
 		bms_health()->b_flags |= B_FLAGS_PACK_LARGER_CURRENT;
 		bms_health()->b_flags |= B_FLAGS_PACK_LARGER_CURRENT;