Forráskód Böngészése

[megatec]add control condition for choose model, fix count some parameters

balbekova 5 éve
szülő
commit
cbd3034301
2 módosított fájl, 18 hozzáadás és 14 törlés
  1. 17 13
      modules/MegaTec/megatec.c
  2. 1 1
      modules/parameters.c

+ 17 - 13
modules/MegaTec/megatec.c

@@ -259,17 +259,17 @@ void ups_status_response(char *data)
 	//TODO
 	len = get_ups_param(data, " ", value);
 	data += (len + 1);
+	if(len > 0){
+		UPS.Vakb_curr = atof(value);
+	}
 	if(sSettings.UPS_Setting.type_ups == ups_kestar){
-		if(len > 0){
-			//UPS.SOC = round(100*(((atof(value))/6) - 1.85)/0.4166666667); // 1.85 - минимальное напряжение на ячейки АКБ; 2.266666667 - максимальное напряжение на ячейки АКБ; (2.266666667 - 1.85) = 0.4166666667
-			//UPS.SOC = round(100*((atof(value)) - 1.67)/0.58); // 1.667 - минимальное напряжение на ячейки АКБ; 2.267 - максимальное напряжение на ячейки АКБ; (2.267 - 1.667) = 0.6
-			UPS.Vakb_curr = atof(value);
-			if(UPS.Vakb_curr < 7){
-				UPS.SOC = round(100*(UPS.Vakb_curr - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
-			}
-			else{
-				UPS.SOC = round(100*(UPS.Vakb_curr/AKB_NUM_CELL - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
-			}
+		//UPS.SOC = round(100*(((atof(value))/6) - 1.85)/0.4166666667); // 1.85 - минимальное напряжение на ячейки АКБ; 2.266666667 - максимальное напряжение на ячейки АКБ; (2.266666667 - 1.85) = 0.4166666667
+		//UPS.SOC = round(100*((atof(value)) - 1.67)/0.58); // 1.667 - минимальное напряжение на ячейки АКБ; 2.267 - максимальное напряжение на ячейки АКБ; (2.267 - 1.667) = 0.6
+		if(UPS.Vakb_curr < 7){
+			UPS.SOC = round(100*(UPS.Vakb_curr - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
+		}
+		else{
+			UPS.SOC = round(100*(UPS.Vakb_curr/AKB_NUM_CELL - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
 		}
 	}
 	len = get_ups_param(data, " ", value);
@@ -557,7 +557,6 @@ void ups_version_response(char *data)
 
 	len = get_ups_param(data, "\r", value);
 	strncpy(UPS.vertion, value, 8);
-	strncat(UPS.vertion, "/", 1);
 }
 
 void ups_version_part2_response(char *data)
@@ -572,9 +571,13 @@ void ups_version_part2_response(char *data)
 	UPS.Flag_Present = true;
 	UPS.cnt_err_ups = 0;
 
+	if (strncmp(ups_pdu.data, "(NAK", 4) == 0) {
+		return;
+	}
+
 	data++;
 
-	if(UPS.vertion[9] != 0){
+	if(UPS.vertion[8] != 0){
 		return;
 	}
 
@@ -584,6 +587,7 @@ void ups_version_part2_response(char *data)
 	data += (len + 1);
 
 	len = get_ups_param(data, "\r", value);
+	strncat(UPS.vertion, "/", 1);
 	strncpy(&UPS.vertion[9], value, 8);
 }
 
@@ -619,7 +623,7 @@ void ups_protocol_id_response(char *data)
 	UPS.cnt_err_ups = 0;
 
 	if(data[0] != '('){
-		if(strncmp(data, "NAK", 3) == 0){
+		if(strncmp(data, "NAK", 3) == 0 || strncmp(data, "QPI", 3) == 0 || strncmp(data, " \r", 2) == 0){
 			sSettings.UPS_Setting.type_ups = ups_kestar;
 		}
 		return;

+ 1 - 1
modules/parameters.c

@@ -213,7 +213,7 @@ void GetVoltageAKBtStr(char *str, uint8_t *len)
     if (UPS.Vakb_curr < 7) {
         value = AKB_NUM_CELL * (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
     } else {
-        value = sSettings.UPS_Setting.Uakb * UPS.Vakb_curr;
+        value = (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
     }
     sprintf(str, "%0.1f", roundto(value, 1));
     *len = strlen(str);