Преглед изворни кода

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

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui пре 4 година
родитељ
комит
0fe55bc2bd
1 измењених фајлова са 8 додато и 6 уклоњено
  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);
 		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;
-	}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;
-	}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;
 	}else {
 		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);
 		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;
-	}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;
-	}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;
 	}else {
 		bms_health()->b_flags |= B_FLAGS_PACK_LARGER_CURRENT;