Prechádzať zdrojové kódy

[BT-6709/11/11-v1]add EPO detection

balbekova 2 rokov pred
rodič
commit
ad496daf64

+ 14 - 0
config/board_bt6709.h

@@ -173,6 +173,10 @@ XSETTING( uint8_t, sFlagNotification[ALL_TRAPS], SETTINGS_SetFlagNotificationDef
   XTRAP(BATTERY_LOW_TEMPERATURE_ALARM,     9,      true,      GetInternalTempStr) \
   XTRAP(BATTERY_CHANGE_ALARM,              49,     true,      GetDataNextChangeAKBStr) \
   XTRAP(BATTERY_CHANGE_MORM,               49,     true,      GetDataNextChangeAKBStr) \
+  XTRAP(PHASE_FAIL,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(PHASE_NORM,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_FAIL,                          11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_NORM,                          11,     true,      GetInputVoltageStr) \
 
 typedef enum
 {
@@ -196,6 +200,10 @@ typedef enum
   BATTERY_LOW_TEMPERATURE_ALARM,
   BATTERY_CHANGE_ALARM,
   BATTERY_CHANGE_MORM,
+  PHASE_FAIL,
+  PHASE_NORM,
+  EPO_FAIL,
+  EPO_NORM,
   ALL_TRAPS
 } TRAP_LIST_t;
 
@@ -221,6 +229,8 @@ typedef enum {
 	LOG_ALARM_UPS,
 	LOG_ALARM_AKB,
 	LOG_ALARM_CHANGE_AKB,
+  LOG_PHASE_FAIL,
+  LOG_EPO_FAIL,
 	LOG_VALUE,
 	LOG_NONE,
 } log_type_t;
@@ -233,6 +243,8 @@ typedef enum {
 #define TEMP_AKB_MONITOR
 #define BAT_CONNECT_MONITOR
 #define UPS_CONNECT_MONITOR
+#define PHASE_FAIL_MONITOR
+#define EPO_MONITOR
 
 #define MONITOR_TABLE \
   XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
@@ -244,6 +256,8 @@ typedef enum {
   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_EPOMonitor,                      (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1)
 
 #define LED_INIT_OK               LED_INIT_G

+ 9 - 2
config/board_bt6711.h

@@ -52,7 +52,7 @@ WDG_PIN(X)
 /**
   * @brief  Версия прошивки
   */
-#define VERSION                         "1.1"
+#define VERSION                         "1.2"
 
 /**
   * brief  Текст сообщения при запуске CLI
@@ -188,7 +188,7 @@ XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
   XTRAP(TEST_BAT_RUN,                      14,     true,      GetBatCapacityStr) \
   XTRAP(TEST_BAT_STOP,                     14,     true,      GetBatCapacityStr) \
   XTRAP(BATTERY_FAIL,                      14,     true,      GetBatCapacityStr) \
-  XTRAP(BATTERY_NORM,                      14,     true,      GetBatCapacityStr) \  
+  XTRAP(BATTERY_NORM,                      14,     true,      GetBatCapacityStr) \
   XTRAP(LOW_BAT_ALARM,                     14,     true,      GetBatCapacityStr) \
   XTRAP(LOW_BAT_NORM,                      14,     true,      GetBatCapacityStr) \
   XTRAP(BATTERY_CONNECT_ALARM,             14,     true,      GetBatCapacityStr) \
@@ -199,6 +199,8 @@ XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
   XTRAP(CONNECT_MONITOR_NORM,              16,     true,      GetConnectMonitorStr) \
   XTRAP(PHASE_FAIL,                        11,     true,      GetInputVoltageStr) \
   XTRAP(PHASE_NORM,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_FAIL,                          11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_NORM,                          11,     true,      GetInputVoltageStr) \
 
 typedef enum
 {
@@ -231,6 +233,8 @@ typedef enum
   CONNECT_MONITOR_NORM,
   PHASE_FAIL,
   PHASE_NORM,
+  EPO_FAIL,
+  EPO_NORM,
   ALL_TRAPS
 } TRAP_LIST_t;
 
@@ -257,6 +261,7 @@ typedef enum {
 	LOG_ALARM_AKB,
   LOG_TEST_ALARM_AKB,
   LOG_PHASE_FAIL,
+  LOG_EPO_FAIL,
 	LOG_VALUE,
 	LOG_NONE,
 } log_type_t;
@@ -273,6 +278,7 @@ typedef enum {
 #define UPS_CONNECT_MONITOR
 #define TEST_ALARM_AKB_MONITOR
 #define PHASE_FAIL_MONITOR
+#define EPO_MONITOR
 
 #define MONITOR_TABLE \
   XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
@@ -285,6 +291,7 @@ typedef enum {
   XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_PhaseFailMonitor,                (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_EPOMonitor,                      (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1)
 
 #define LED_INIT_OK               LED_INIT_G

+ 8 - 1
config/board_bt6711_v1.h

@@ -188,7 +188,7 @@ XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
   XTRAP(TEST_BAT_RUN,                      14,     true,      GetBatCapacityStr) \
   XTRAP(TEST_BAT_STOP,                     14,     true,      GetBatCapacityStr) \
   XTRAP(BATTERY_FAIL,                      14,     true,      GetBatCapacityStr) \
-  XTRAP(BATTERY_NORM,                      14,     true,      GetBatCapacityStr) \  
+  XTRAP(BATTERY_NORM,                      14,     true,      GetBatCapacityStr) \
   XTRAP(LOW_BAT_ALARM,                     14,     true,      GetBatCapacityStr) \
   XTRAP(LOW_BAT_NORM,                      14,     true,      GetBatCapacityStr) \
   XTRAP(BATTERY_CONNECT_ALARM,             14,     true,      GetBatCapacityStr) \
@@ -199,6 +199,8 @@ XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
   XTRAP(CONNECT_MONITOR_NORM,              16,     true,      GetConnectMonitorStr) \
   XTRAP(PHASE_FAIL,                        11,     true,      GetInputVoltageStr) \
   XTRAP(PHASE_NORM,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_FAIL,                          11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_NORM,                          11,     true,      GetInputVoltageStr) \
 
 typedef enum
 {
@@ -231,6 +233,8 @@ typedef enum
   CONNECT_MONITOR_NORM,
   PHASE_FAIL,
   PHASE_NORM,
+  EPO_FAIL,
+  EPO_NORM,
   ALL_TRAPS
 } TRAP_LIST_t;
 
@@ -257,6 +261,7 @@ typedef enum {
 	LOG_ALARM_AKB,
   LOG_TEST_ALARM_AKB,
   LOG_PHASE_FAIL,
+  LOG_EPO_FAIL,
 	LOG_VALUE,
 	LOG_NONE,
 } log_type_t;
@@ -273,6 +278,7 @@ typedef enum {
 #define UPS_CONNECT_MONITOR
 #define TEST_ALARM_AKB_MONITOR
 #define PHASE_FAIL_MONITOR
+#define EPO_MONITOR
 
 #define MONITOR_TABLE \
   XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
@@ -285,6 +291,7 @@ typedef enum {
   XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_PhaseFailMonitor,                (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_EPOMonitor,                      (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1)
 
 #define LED_INIT_OK               LED_INIT_G

+ 24 - 0
docs/bt6709/BT6709.MIB

@@ -552,6 +552,30 @@ IMPORTS
      STATUS               current
      DESCRIPTION ""
      ::= { traps 20 }
+
+    phaseAlarm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 21 }
+	 
+    phaseNorm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 22 }
+    
+	epoAlarm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 23 }
+	 
+    epoNorm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 24 }
 	
 END
 

+ 12 - 0
docs/bt6711/BT6711.MIB

@@ -715,5 +715,17 @@ IMPORTS
      DESCRIPTION ""
      ::= { traps 29 }
 
+	epoAlarm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 30 }
+	 
+    epoNorm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 31 }
+
 END
 

+ 12 - 0
docs/bt6711_v1/BT6711_v1.MIB

@@ -714,5 +714,17 @@ IMPORTS
      DESCRIPTION ""
      ::= { traps 29 }
 
+	epoAlarm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 30 }
+	 
+    epoNorm  NOTIFICATION-TYPE
+    OBJECTS              { connectMonitor }
+    STATUS               current
+    DESCRIPTION ""
+    ::= { traps 31 }
+
 END
 

+ 2 - 2
modules/MegaTec/megatec.c

@@ -874,8 +874,8 @@ void ups_warn_status_response(char *data)
 
     data++;
     sync_data = false;
-    UPS.warn_status = BIT_OFFSET(data[0], 0) + + BIT_OFFSET(data[2], 1) + BIT_OFFSET(data[5], 2) + BIT_OFFSET(data[6], 3) 
-                        + BIT_OFFSET(data[7], 4) + BIT_OFFSET(data[8], 5) + BIT_OFFSET(data[12], 6) + BIT_OFFSET(data[13], 7); 
+    UPS.warn_status = BIT_OFFSET(data[0], 0) + BIT_OFFSET(data[2], 1) + BIT_OFFSET(data[5], 2) + BIT_OFFSET(data[6], 3) 
+                        + BIT_OFFSET(data[7], 4) + BIT_OFFSET(data[8], 5) + BIT_OFFSET(data[12], 6) + BIT_OFFSET(data[13], 7) + BIT_OFFSET(data[10], 8); 
 }
 
 void ups_get_ack(char *data)

+ 1 - 1
modules/MegaTec/megatec.h

@@ -78,7 +78,7 @@ typedef struct{
 	uint8_t Status;
 	uint8_t Mode;
 	uint8_t Test_Status;
-	uint8_t warn_status;
+	uint32_t warn_status;
 	char model[16];
 	char vertion[22];
 	char serial[15];

+ 66 - 0
modules/monitor/ups_monitor.c

@@ -1665,4 +1665,70 @@ void UPS_PhaseFailMonitor(void)
 }
 #endif
 
+#ifdef EPO_MONITOR
+void UPS_EPOMonitor(void)
+{
+  static bool isValueRecv = false;
+  uint8_t EPOStatusCurrent;
+  static uint8_t EPOStatusOld = 0;
+
+  EPOStatusCurrent = ((UPS.warn_status >> 10) & 0x01);
+
+  if (EPOStatusCurrent != 0){
+    flCriticalAlarm = true;
+    flLedAlarm = true;
+    UPS.Alarm = (UPS.Alarm & 0xfffffdff) | (1 << 9);
+  } else {
+    UPS.Alarm = (UPS.Alarm & 0xfffffdff);
+  }
+
+  if (!isValueRecv) {
+    isValueRecv = true;
+    EPOStatusOld = EPOStatusCurrent;
+
+    if (EPOStatusCurrent != 0){
+      log_event_data(LOG_EPO_FAIL, "Авария");
+      // Отправка трапа о завышении 
+      SNMP_SendUserTrap(EPO_FAIL);
+      syslog(SYSLOG_ERROR, "Срабатывание EPO");
+      flUpdateLog = true;
+    }
+    else{
+      log_event_data(LOG_EPO_FAIL, "Норма");
+      // Отправка трапа о нормализации 
+      SNMP_SendUserTrap(EPO_NORM);
+      syslog(SYSLOG_NOTICE, "EPO в норме");
+      flUpdateLog = true;
+    }
+
+    return;
+  }
+
+  if (EPOStatusCurrent)
+  {
+    if (EPOStatusCurrent != EPOStatusOld)
+    {
+      log_event_data(LOG_EPO_FAIL, "Авария");
+      // Отправка трапа о завышении 
+      SNMP_SendUserTrap(EPO_FAIL);
+      syslog(SYSLOG_ERROR, "Ошибка EPO");
+      flUpdateLog = true;
+    }
+  }
+  /* Отслеживается нормализация */
+  else {
+    if (EPOStatusCurrent != EPOStatusOld)
+    {
+      log_event_data(LOG_EPO_FAIL, "Норма");
+      // Отправка трапа о нормализации 
+      SNMP_SendUserTrap(EPO_NORM);
+      syslog(SYSLOG_NOTICE, "EPO в норме");
+      flUpdateLog = true;
+    }
+  }
+
+  EPOStatusOld = EPOStatusCurrent;
+}
+#endif
+
 /********************************* (C) РОТЕК **********************************/

+ 4 - 0
modules/monitor/ups_monitor.h

@@ -135,6 +135,10 @@ void UPS_Failed_Monitor(void);
 void UPS_PhaseFailMonitor(void);
 #endif
 
+#ifdef EPO_MONITOR
+void UPS_EPOMonitor(void);
+#endif
+
 #endif /* #ifndef UPS_MONITOR_H */
 
 /********************************* (C) РОТЕК **********************************/

+ 6 - 0
modules/settings_api_bt6709.c

@@ -56,6 +56,8 @@ const char* logsStrShortRu[] =
     "Авария нагрузки",
     "Авария связи с ИБП",
     "Авария отключения АКБ",
+    "Ош. подкл. вх. напряжения",
+    "Срабатывание EPO",
 };
 
 const char* name_traps[] =
@@ -81,6 +83,10 @@ const char* name_traps[] =
   "Авария темп. АКБ по ниж. границы",
   "Предупр. о замене АКБ",
   "Норм. предупрежд. о замене АКБ",
+  "Ош. подкл. вх. напряжения",
+  "Норм. подкл. вх. напряжения",
+  "Срабатывание EPO",
+  "EPO норма",
 };
 
 /**

+ 5 - 0
modules/settings_api_bt6711.c

@@ -58,6 +58,7 @@ const char* logsStrShortRu[] =
     "Авария отключения АКБ",
     "Ёмкость АКБ",
     "Ош. подкл. вх. напряжения",
+    "Срабатывание EPO",
 };
 
 const char* name_traps[] =
@@ -90,6 +91,10 @@ const char* name_traps[] =
   "Нагрузка в норме",
   "Авария соединения с ИБП",
   "Норм. соединения с ИБП",
+  "Ош. подкл. вх. напряжения",
+  "Норм. подкл. вх. напряжения",
+  "Срабатывание EPO",
+  "EPO норма",
 };
 
 /**