Kaynağa Gözat

fix detect ups connection alarm

balbekova 3 yıl önce
ebeveyn
işleme
162f821f17

+ 7 - 7
config/board_bt6703.h

@@ -237,13 +237,13 @@ typedef enum {
 #define TYPE_CRITICAL_ALARM_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,                 UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                   UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                     UPS.Present) \
-  XMONITOR(UPS_PowerMonitor,                      UPS.Present) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,       UPS.Present) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,        UPS.Present) \
-  XMONITOR(UPS_BatteryConnectMonitor,             UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,             (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                    1) \
   XMONITOR(UPS_DI0Monitor,                        1) \
   XMONITOR(UPS_CriticalAlarmMonitor,              1) \

+ 8 - 8
config/board_bt6703_rt.h

@@ -246,16 +246,16 @@ typedef enum {
 #define TEST_ALARM_AKB_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,                 UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                   UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                     UPS.Present) \
-  XMONITOR(UPS_PowerMonitor,                      UPS.Present) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,       UPS.Present) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,        UPS.Present) \
-  XMONITOR(UPS_BatteryConnectMonitor,             UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,             (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                    1) \
   XMONITOR(UPS_DI0Monitor,                        1) \
-  XMONITOR(UPS_Failed_Monitor,                    UPS.Present) \
+  XMONITOR(UPS_Failed_Monitor,                    (UPS.Present == UPS_CONNECTED)) \
 
 #define RELAY_AC_PRESENT
 #define RELAY_ALARM_AKB

+ 9 - 9
config/board_bt6707.h

@@ -252,15 +252,15 @@ typedef enum {
 #define DIN_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,                   UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                     UPS.Present) \
-  XMONITOR(UPS_VACoutputLowRangeMonitor,            UPS.Present) \
-  XMONITOR(UPS_VACoutputHighRangeMonitor,           UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                       UPS.Present) \
-  XMONITOR(UPS_PowerMonitor,                        UPS.Present) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,         UPS.Present) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,          UPS.Present) \
-  XMONITOR(UPS_BatteryConnectMonitor,               UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputLowRangeMonitor,            (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputHighRangeMonitor,           (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,         (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,          (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,               (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                      1) \
   XMONITOR(UPS_DI0Monitor,                          1) \
 

+ 9 - 9
config/board_bt6709.h

@@ -234,15 +234,15 @@ typedef enum {
 #define UPS_CONNECT_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,               UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                 UPS.Present) \
-  XMONITOR(UPS_VACoutputLowRangeMonitor,        UPS.Present) \
-  XMONITOR(UPS_VACoutputHighRangeMonitor,       UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                   UPS.Present) \
-  XMONITOR(UPS_PowerMonitor,                    UPS.Present) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,     UPS.Present) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,      UPS.Present) \
-  XMONITOR(UPS_BatteryConnectMonitor,           UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                    (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1)
 
 #define LED_INIT_OK               LED_INIT_G

+ 9 - 9
config/board_bt6709_mts.h

@@ -235,15 +235,15 @@ typedef enum {
 #define AKB_CHANGE_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,               UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                 UPS.Present) \
-  XMONITOR(UPS_VACoutputLowRangeMonitor,        UPS.Present) \
-  XMONITOR(UPS_VACoutputHighRangeMonitor,       UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                   UPS.Present) \
-  XMONITOR(UPS_PowerMonitor,                    UPS.Present) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,     UPS.Present) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,      UPS.Present) \
-  XMONITOR(UPS_BatteryConnectMonitor,           UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                    (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1) \
   XMONITOR(AKB_Change_Monitor,                  1)
 

+ 8 - 8
config/board_bt6710.h

@@ -256,17 +256,17 @@ typedef enum {
 #define DIN_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,               UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                 UPS.Present) \
-  XMONITOR(UPS_VACoutputLowRangeMonitor,        UPS.Present) \
-  XMONITOR(UPS_VACoutputHighRangeMonitor,       UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                   UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                   (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(sensorTemperatureMonitor,            1) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,     (UPS.Present || sSettings.sTempControl[0].type_sensor == TS_AKB || sSettings.sTempControl[1].type_sensor == TS_AKB)) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present || sSettings.sTempControl[0].type_sensor == TS_AKB || sSettings.sTempControl[1].type_sensor == TS_AKB)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,     (UPS.Present == UPS_CONNECTED || sSettings.sTempControl[0].type_sensor == TS_AKB || sSettings.sTempControl[1].type_sensor == TS_AKB)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED || sSettings.sTempControl[0].type_sensor == TS_AKB || sSettings.sTempControl[1].type_sensor == TS_AKB)) \
   XMONITOR(Cabinet_TemperatureHighRangeMonitor, 1) \
   XMONITOR(Cabinet_TemperatureLowRangeMonitor,  1) \
-  XMONITOR(UPS_BatteryConnectMonitor,           UPS.Present) \
+  XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1) \
   XMONITOR(UPS_DI0Monitor,                      1) \
 

+ 10 - 10
config/board_bt6711.h

@@ -275,16 +275,16 @@ typedef enum {
 #define PHASE_FAIL_MONITOR
 
 #define MONITOR_TABLE \
-  XMONITOR(UPS_TestFinishMonitor,               UPS.Present) \
-  XMONITOR(UPS_LineFailMonitor,                 UPS.Present) \
-  XMONITOR(UPS_VACoutputLowRangeMonitor,        UPS.Present) \
-  XMONITOR(UPS_VACoutputHighRangeMonitor,       UPS.Present) \
-  XMONITOR(UPS_LowBatMonitor,                   UPS.Present) \
-  XMONITOR(UPS_PowerMonitor,                    UPS.Present) \
-  XMONITOR(UPS_TemperatureHighRangeMonitor,     UPS.Present) \
-  XMONITOR(UPS_TemperatureLowRangeMonitor,      UPS.Present) \
-  XMONITOR(UPS_BatteryConnectMonitor,           UPS.Present) \
-  XMONITOR(UPS_PhaseFailMonitor,                UPS.Present) \
+  XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                    (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PhaseFailMonitor,                (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1)
 
 #define LED_INIT_OK               LED_INIT_G

+ 20 - 21
modules/MegaTec/megatec.c

@@ -113,7 +113,7 @@ void init_UPS_value(void)
     UPS.Test_Status = 0;
     UPS.cnt_err_ups = 0;
     UPS.Flag_Present = false;
-    UPS.Present = false;
+    UPS.Present = UPS_WAIT_CONNECT;
 
     memset(UPS.model, 0,  sizeof(UPS.model));
     memset(UPS.vertion, 0, sizeof(UPS.vertion));
@@ -256,7 +256,7 @@ void ups_status_response(char *data)
         return;
     }
     DBG printf("ups_status_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -352,7 +352,7 @@ void ups_general_status_response(char *data)
         return;
     }
     DBG printf("ups_status_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -458,7 +458,7 @@ void ups_info_response(char *data)
 
     DBG printf("ups_info_response_startr: %s\r\n", data);
 
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -506,7 +506,7 @@ void ups_remain_time_response(char *data)
 
     DBG printf("ups_remain_time_response: %s\r\n", data);
 
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -533,7 +533,7 @@ void ups_akb_info_response(char *data)
         return;
     }
     DBG printf("ups_akb_info_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -584,7 +584,7 @@ void ups_model_response(char *data)
         return;
     }
     DBG printf("ups_akb_info_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -635,7 +635,7 @@ void ups_version_response(char *data)
         return;
     }
     DBG printf("ups_akb_info_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -670,7 +670,7 @@ void ups_version_part2_response(char *data)
         return;
     }
     DBG printf("ups_akb_info_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -706,7 +706,7 @@ void ups_serial_response(char *data)
         return;
     }
     DBG printf("ups_serial_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -723,7 +723,7 @@ void ups_protocol_id_response(char *data)
 
     DBG printf("ups_protocol_id_response: %s\r\n", data);
 
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -746,7 +746,7 @@ void ups_protocol_id_response(char *data)
 
 void ups_buzzer_cntrl_response(char *data)
 {
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -769,7 +769,7 @@ void ups_mode_response(char *data)
         return;
     }
     DBG printf("ups_serial_parser_start\r\n");
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -795,7 +795,7 @@ char ups_warn_status_response(char *data)
     if (data[0] != '(') {
         return;
     }
-    UPS.Present = true;
+    UPS.Present = UPS_CONNECTED;
     UPS.Flag_Present = true;
     UPS.cnt_err_ups = 0;
 
@@ -858,7 +858,7 @@ void ups_megatec_process_pdu(cmdMegaTecEnums_t command)
 int ups_metac_service_pdu(cmdMegaTecEnums_t command)
 {
     uint8_t UPS_Status_prev;
-    if (UPS.Present) {
+    if (UPS.Present == UPS_CONNECTED) {
         while (!megatec_send) {
             vTaskDelay(50);
         }
@@ -973,7 +973,7 @@ void request_task(void *params)
 
     ups_megatec_rx_pdu();
     for (;;) {
-        if (UPS.Present == true) {
+        if (UPS.Present != UPS_FAIL_CONNECT) {
             if (UPS.Flag_Present == false) {
                 if (UPS.cnt_err_ups != 2) {
                     UPS.cnt_err_ups++;
@@ -990,7 +990,7 @@ void request_task(void *params)
                     UPS.Test_Status = 0;
                     UPS.Alarm = 0;
                     UPS.warn_status = 0;
-                    UPS.Present = false;
+                    UPS.Present = UPS_FAIL_CONNECT;
 
                     //memset(UPS.model, 0, 11);
                     memset(UPS.vertion, 0, sizeof(UPS.vertion));
@@ -1064,7 +1064,7 @@ void akb_time_work_task(void *params)
 {
     static uint32_t tick_prev = 0;
     for (;;) {
-        if (UPS.Present && ((UPS.Status >> 7) & 0x01)) {
+        if (UPS.Present == UPS_CONNECTED && ((UPS.Status >> 7) & 0x01)) {
             if (tick_prev == 0) {
                 tick_prev = xTaskGetTickCount();
             }
@@ -1081,7 +1081,7 @@ void akb_time_work_task(void *params)
 
 void UPSRestoreCallback(TimerHandle_t pxTimer)
 {
-    if (UPS.Present) {
+    if (UPS.Present == UPS_CONNECTED) {
         while (!megatec_send) {
             vTaskDelay(50);
         }
@@ -1102,7 +1102,7 @@ void UPSReadTestStatus(void)
         || sSettings.UPS_Setting.type_ups == ups_offline) {
             return;
     }
-    if (UPS.Present) {
+    if (UPS.Present == UPS_CONNECTED) {
         while (!megatec_send) {
             vTaskDelay(50);
         }
@@ -1120,7 +1120,6 @@ void UPSReadTestStatus(void)
 void ups_megatec_init(void)
 {
     init_UPS_value();
-    UPS.Present = true;
     xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 3, NULL, tskIDLE_PRIORITY, NULL);
     xTaskCreate(akb_time_work_task, ( char * ) "akb_time_work_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY,
         NULL);

+ 7 - 1
modules/MegaTec/megatec.h

@@ -53,6 +53,12 @@ typedef enum{
 	MegaTec_cmd_max
 } cmdMegaTecEnums_t;
 
+typedef enum{
+	UPS_CONNECTED = 1,
+	UPS_FAIL_CONNECT,
+	UPS_WAIT_CONNECT
+} ups_state_connection_t;
+
 typedef struct{
 	float Freq_in;
 	float VAC_in;
@@ -73,7 +79,7 @@ typedef struct{
 	char vertion[22];
 	char serial[15];
 	uint8_t cnt_err_ups;
-	bool Present;
+	ups_state_connection_t Present;
 	bool Flag_Present;
 }UPS_value_t;
 

+ 10 - 6
modules/monitor/ups_monitor.c

@@ -70,7 +70,7 @@ void UPS_Monitor(void *params)
 
 #ifdef LED_ALARM
       if(flLedAlarm){
-    	  if (UPS.Present)
+    	  if (UPS.Present == UPS_CONNECTED)
     		  LED_On(LED_ALARM);
     	  else
     		  LED_Toggle(LED_ALARM);
@@ -1307,17 +1307,21 @@ void UPS_ConnectMonitor(void)
 {
 #ifdef UPS_CONNECT_MONITOR
   static bool isValueRecv = false;
-  static uint8_t connectOldState = 0;
-  uint8_t connectCurrent;
+  static ups_state_connection_t connectOldState;
+  ups_state_connection_t connectCurrent;
   
   connectCurrent = UPS.Present;
+
+  if(connectCurrent == UPS_WAIT_CONNECT) {
+    return;
+  }
   
   UPS.Alarm = (UPS.Alarm & 0xfffffffb) | ((connectCurrent^1) << 2);
 
   if (!isValueRecv) {
     isValueRecv = true;
     connectOldState = connectCurrent;
-    if (!connectCurrent){
+    if (connectCurrent == UPS_FAIL_CONNECT){
     	log_event_data(LOG_ALARM_UPS, "Авария");
     	SNMP_SendUserTrap(CONNECT_MONITOR_ALARM);
 	syslog_str(SYSLOG_ERROR, "Потеряна связь с ИБП");
@@ -1330,14 +1334,14 @@ void UPS_ConnectMonitor(void)
     }
     return;
   }
-  if (!connectCurrent){
+  if (connectCurrent == UPS_FAIL_CONNECT){
     flCriticalAlarm = true;
     flLedAlarm = true;
   }
   // Значение параметра изменилось
   if (connectCurrent != connectOldState)
   {
-    if (connectCurrent){
+    if (connectCurrent == UPS_CONNECTED){
       log_event_data(LOG_ALARM_UPS, "Норма");
       SNMP_SendUserTrap(CONNECT_MONITOR_NORM);
       syslog_str(SYSLOG_NOTICE, "Восстановлена связь с ИБП");

+ 1 - 1
modules/parameters.c

@@ -286,7 +286,7 @@ void GetAlarmMonitorStr(char *str, uint8_t *len)
   */
 void GetConnectMonitorStr(char *str, uint8_t *len)
 {
-    if (UPS.Present) {
+    if (UPS.Present != UPS_FAIL_CONNECT) {
         strcpy(str, "0");
     } else {
         strcpy(str, "1");