Browse Source

[BT-6703-RT] 1)add in log test time
2)add Status test in log

balbekova 4 years ago
parent
commit
8151856a69
3 changed files with 70 additions and 8 deletions
  1. 47 7
      modules/MegaTec/megatec.c
  2. 2 0
      modules/MegaTec/megatec.h
  3. 21 1
      modules/monitor/ups_monitor.c

+ 47 - 7
modules/MegaTec/megatec.c

@@ -32,13 +32,14 @@ TimerHandle_t UPSRestoreTimer;
   */
   */
 extern SETTINGS_t sSettings;
 extern SETTINGS_t sSettings;
 
 
-#define UPS_PDU_MAX_LEN 50
+#define UPS_PDU_MAX_LEN 80
 
 
 float TimeParamFloat = 0;
 float TimeParamFloat = 0;
 uint16_t TimeParam = 0;
 uint16_t TimeParam = 0;
 uint16_t TimeParam2 = 0;
 uint16_t TimeParam2 = 0;
 bool megatec_send = true;
 bool megatec_send = true;
 UPS_value_t UPS;
 UPS_value_t UPS;
+int test_time = 0;
 
 
 static bool flag_buzzer_on = false;
 static bool flag_buzzer_on = false;
 
 
@@ -102,6 +103,7 @@ void init_UPS_value(void)
     UPS.Status = 0;
     UPS.Status = 0;
     UPS.Mode = 0;
     UPS.Mode = 0;
     UPS.Alarm = 0;
     UPS.Alarm = 0;
+    UPS.Test_Status = 0;
     UPS.cnt_err_ups = 0;
     UPS.cnt_err_ups = 0;
     UPS.Flag_Present = false;
     UPS.Flag_Present = false;
     UPS.Present = false;
     UPS.Present = false;
@@ -335,15 +337,17 @@ void ups_general_status_response(char *data)
     UPS.Flag_Present = true;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
     UPS.cnt_err_ups = 0;
 
 
-    if (flUpdateLog) {
-        flUpdateLog = false;
-        log_add(data);
-    }
-
     data++;
     data++;
 
 
     DBG printf("UPS ups_status_parser_startr: %s\r\n", data);
     DBG printf("UPS ups_status_parser_startr: %s\r\n", data);
-
+    
+    data = data + 72;
+    uint8_t stat = 0;
+    UPS.Test_Status = 0;
+    for (i = 0; i < 2; i ++) {
+        UPS.Test_Status |= (data[i] - 0x30) << (1 - i);
+    }
+/* 
     len = get_ups_param(data, " ", value);
     len = get_ups_param(data, " ", value);
     data += (len + 1);
     data += (len + 1);
     if (len > 0) {
     if (len > 0) {
@@ -413,6 +417,15 @@ void ups_general_status_response(char *data)
         }
         }
         UPS.Status = stat;
         UPS.Status = stat;
     }
     }
+    value[len - 2] = 0;
+
+    if (flUpdateLog) {
+        flUpdateLog = false;
+        memset(data, 0, UPS_PDU_MAX_LEN);
+        sprintf(data, "(%0.1f n/a %0.1f %d %0.1f %0.2f %0.1f %s", UPS.VAC_in, UPS.VAC_out, UPS.Load, UPS.Freq_in, UPS.Vakb_curr, UPS.Temp, &value[2]);
+        log_add(data);
+    }
+*/
 }
 }
 
 
 void ups_info_response(char *data)
 void ups_info_response(char *data)
@@ -791,6 +804,11 @@ int ups_metac_service_pdu(cmdMegaTecEnums_t command)
             send_MegaTec_cmd(ups_shutdown_restore);
             send_MegaTec_cmd(ups_shutdown_restore);
         } else {
         } else {
             UPS.SOC_test = UPS.SOC;
             UPS.SOC_test = UPS.SOC;
+            if (command == ups_test_low_bat) { 
+                test_time = 0;
+            } else {
+                test_time = (int)TimeParam;
+            }
             send_MegaTec_cmd(command);
             send_MegaTec_cmd(command);
         }
         }
         if (ups_megatec_rx_pdu()) {
         if (ups_megatec_rx_pdu()) {
@@ -891,6 +909,7 @@ void request_task(void *params)
                     UPS.work_time = 0;
                     UPS.work_time = 0;
                     UPS.Status = 0;
                     UPS.Status = 0;
                     UPS.Mode = 0;
                     UPS.Mode = 0;
+                    UPS.Test_Status = 0;
                     UPS.Alarm = 0;
                     UPS.Alarm = 0;
                     UPS.Present = false;
                     UPS.Present = false;
 
 
@@ -998,6 +1017,27 @@ void UPSRestoreCallback(TimerHandle_t pxTimer)
     }
     }
 }
 }
 
 
+void UPSReadTestStatus(void)
+{
+    if(sSettings.UPS_Setting.type_ups == ups_kestar 
+        || sSettings.UPS_Setting.type_ups == ups_offline) {
+            return;
+    }
+    if (UPS.Present) {
+        while (!megatec_send) {
+            vTaskDelay(50);
+        }
+        memset(ups_pdu.data, 0, UPS_PDU_MAX_LEN);
+        megatec_send = false;
+        //UPS.Flag_Present = false;
+        send_MegaTec_cmd(ups_general_status_req);
+        if (ups_megatec_rx_pdu()) {
+            ups_megatec_process_pdu(ups_general_status_req);
+        }
+        megatec_send = true;
+    }
+}
+
 void ups_megatec_init(void)
 void ups_megatec_init(void)
 {
 {
     init_UPS_value();
     init_UPS_value();

+ 2 - 0
modules/MegaTec/megatec.h

@@ -68,6 +68,7 @@ typedef struct{
 	uint32_t Alarm;
 	uint32_t Alarm;
 	uint8_t Status;
 	uint8_t Status;
 	uint8_t Mode;
 	uint8_t Mode;
+	uint8_t Test_Status;
 	char model[16];
 	char model[16];
 	char vertion[22];
 	char vertion[22];
 	char serial[15];
 	char serial[15];
@@ -86,5 +87,6 @@ int ups_metac_service_pdu(cmdMegaTecEnums_t command);
 
 
 void ups_megatec_init(void);
 void ups_megatec_init(void);
 
 
+void UPSReadTestStatus(void);
 
 
 #endif /* MEGATEC_H_ */
 #endif /* MEGATEC_H_ */

+ 21 - 1
modules/monitor/ups_monitor.c

@@ -47,6 +47,8 @@ extern SETTINGS_t sSettings;
 
 
 extern bool flUpdateLog;
 extern bool flUpdateLog;
 
 
+extern int test_time;
+
 /**
 /**
   * @brief  Задача мониторинга параметров UPS
   * @brief  Задача мониторинга параметров UPS
   */
   */
@@ -338,7 +340,16 @@ void UPS_TestFinishMonitor(void)
     if (!TestFinishStateCurrent){
     if (!TestFinishStateCurrent){
       test_flag = 1;
       test_flag = 1;
       printf("Test finish\r\n");
       printf("Test finish\r\n");
+#ifdef HARDWARE_BT6703_RT
+      UPSReadTestStatus();
+      if(UPS.Test_Status == 2){
+        log_event_data(LOG_TEST_UPS, "Ошибка");
+      } else {
+        log_event_data(LOG_TEST_UPS, "Завершен");
+      }
+#else
       log_event_data(LOG_TEST_UPS, "Завершен");
       log_event_data(LOG_TEST_UPS, "Завершен");
+#endif
       flUpdateLog = true;
       flUpdateLog = true;
     } else {
     } else {
       memset(log_string, 0, sizeof(log_string));
       memset(log_string, 0, sizeof(log_string));
@@ -358,7 +369,16 @@ void UPS_TestFinishMonitor(void)
         default:
         default:
             break;
             break;
       }
       }
-      strcat(log_string, " (Запущен)");
+#ifdef HARDWARE_BT6703_RT
+     if (test_time != 0) {
+       uint8_t len = strlen(log_string);
+       sprintf(&log_string[len], "(%i мин)", test_time);
+     } else {
+       strcat(log_string, " (до разряда)");
+     }
+#else
+       strcat(log_string, " (Запущен)");
+#endif
       test_flag = 1;
       test_flag = 1;
       printf("Test start\r\n");
       printf("Test start\r\n");
       log_event_data(LOG_TEST_UPS, log_string);
       log_event_data(LOG_TEST_UPS, log_string);