Эх сурвалжийг харах

[BT-6711]1) add alarm phase_fail
2) switch of ups buzzer

balbekova 3 жил өмнө
parent
commit
e503c5ab50

+ 10 - 2
config/board_bt6711.h

@@ -52,7 +52,7 @@ WDG_PIN(X)
 /**
   * @brief  Версия прошивки
   */
-#define VERSION                         "1.0c"
+#define VERSION                         "1.0f"
 
 /**
   * brief  Текст сообщения при запуске CLI
@@ -149,7 +149,6 @@ XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
   XJSON_SETTINGS_TAG("rs_server",          GetRDSIpStr,                         SetRDSIpStr) \
   XJSON_SETTINGS_TAG("rs_port",            GetRDSPortStr,                       SetRDSPortStr) \
   XJSON_SETTINGS_TAG("rs_pwd",             GetRDSPasswordkStr,                  SetRDSPasswordkStr) \
-  XJSON_SETTINGS_TAG("rs_key",             GetRDSKeyAccesstStr,                 SetRDSKeyAccesstStr) \
   XJSON_SETTINGS_TAG("rs_enabled",         GetRDSEnableStateStr,                SetRDSEnableStateStr) \
 
 #define WEB_PARAMS_TAGS_TABLE \
@@ -198,6 +197,8 @@ XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
   XTRAP(POWER_NORM,                        13,     true,      GetPowerStr) \
   XTRAP(CONNECT_MONITOR_ALARM,             20,     true,      GetConnectMonitorStr) \
   XTRAP(CONNECT_MONITOR_NORM,              20,     true,      GetConnectMonitorStr) \
+  XTRAP(PHASE_FAIL,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(PHASE_NORM,                        11,     true,      GetInputVoltageStr) \
 
 typedef enum
 {
@@ -228,6 +229,8 @@ typedef enum
   POWER_NORM,
   CONNECT_MONITOR_ALARM,
   CONNECT_MONITOR_NORM,
+  PHASE_FAIL,
+  PHASE_NORM,
   ALL_TRAPS
 } TRAP_LIST_t;
 
@@ -253,6 +256,7 @@ typedef enum {
 	LOG_ALARM_UPS,
 	LOG_ALARM_AKB,
   LOG_TEST_ALARM_AKB,
+  LOG_PHASE_FAIL,
 	LOG_VALUE,
 	LOG_NONE,
 } log_type_t;
@@ -268,6 +272,7 @@ typedef enum {
 #define BAT_CONNECT_MONITOR
 #define UPS_CONNECT_MONITOR
 #define TEST_ALARM_AKB_MONITOR
+#define PHASE_FAIL_MONITOR
 
 #define MONITOR_TABLE \
   XMONITOR(UPS_TestFinishMonitor,               UPS.Present) \
@@ -279,6 +284,7 @@ typedef enum {
   XMONITOR(UPS_TemperatureHighRangeMonitor,     UPS.Present) \
   XMONITOR(UPS_TemperatureLowRangeMonitor,      UPS.Present) \
   XMONITOR(UPS_BatteryConnectMonitor,           UPS.Present) \
+  XMONITOR(UPS_PhaseFailMonitor,                UPS.Present) \
   XMONITOR(UPS_ConnectMonitor,                  1)
 
 #define LED_INIT_OK               LED_INIT_G
@@ -289,4 +295,6 @@ typedef enum {
 
 #define SERVICE_CONTROLLER_IP  "192.168.0.12"
 
+#define UPS_BUZZER_OFF //выключение звукового сигнала ИБП
+
 #endif /* BOARD_PRS_H */

+ 12 - 0
docs/bt6711/BT6711.MIB

@@ -686,5 +686,17 @@ IMPORTS
      DESCRIPTION ""
      ::= { traps 27 }
 
+	phaseAlarm  NOTIFICATION-TYPE
+     OBJECTS              { connectMonitor }
+     STATUS               current
+     DESCRIPTION ""
+     ::= { traps 28 }
+	 
+     phaseNorm  NOTIFICATION-TYPE
+     OBJECTS              { connectMonitor }
+     STATUS               current
+     DESCRIPTION ""
+     ::= { traps 29 }
+
 END
 

+ 6 - 5
modules/MegaTec/megatec.c

@@ -314,7 +314,7 @@ void ups_status_response(char *data)
     if (len > 0) {
         UPS.Vcell_curr = atof(value);
     }
-    if (sSettings.UPS_Setting.type_ups == ups_kestar || sSettings.UPS_Setting.type_ups == ups_offline) {
+ //   if (sSettings.UPS_Setting.type_ups == ups_kestar || sSettings.UPS_Setting.type_ups == ups_offline) {
         if (UPS.Vcell_curr < 7) {
             UPS.SOC = round(100 * (UPS.Vcell_curr - sSettings.UPS_Setting.Ucellmin) / (sSettings.UPS_Setting.Ucellmax -
                         sSettings.UPS_Setting.Ucellmin));
@@ -322,7 +322,7 @@ void ups_status_response(char *data)
             UPS.SOC = round(100 * (UPS.Vcell_curr / AKB_NUM_CELL - sSettings.UPS_Setting.Ucellmin) /
                     (sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
         }
-    }
+ //   }
     len = get_ups_param(data, " ", value);
     data += (len + 1);
     if (len > 0) {
@@ -563,9 +563,9 @@ void ups_akb_info_response(char *data)
 
     len = get_ups_param(data, " ", value);
     data += (len + 1);
-    if (len > 0) {
+/*    if (len > 0) {
         UPS.SOC = atoi(value);
-    }
+    }*/
 
     len = get_ups_param(data, "\r", value);
     data += (len + 1);
@@ -801,7 +801,8 @@ char ups_warn_status_response(char *data)
 
     data++;
 
-    UPS.warn_status = BIT_OFFSET(data[0], 0) + BIT_OFFSET(data[5], 1) + BIT_OFFSET(data[6], 2) + BIT_OFFSET(data[7], 3) + BIT_OFFSET(data[8], 4) + BIT_OFFSET(data[12], 5) + BIT_OFFSET(data[13], 6); 
+    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); 
 }
 
 void ups_megatec_process_pdu(cmdMegaTecEnums_t command)

+ 0 - 3
modules/MegaTec/megatec.h

@@ -13,9 +13,6 @@
 #include <stdlib.h>
 
 
-//#define UPS_BUZZER_OFF
-
-
 #define K_EFFICIENCY		0.9
 #define AKB_VOLTAGE			12
 #define AKB_NUM_CELL		6

+ 67 - 2
modules/monitor/ups_monitor.c

@@ -916,7 +916,7 @@ void UPS_PowerMonitor(void)
   uint8_t powerStatusCurrent;
   static uint8_t powerStatusOld = 0;
 
-  powerStatusCurrent = ((UPS.warn_status >> 4) & 0x01);
+  powerStatusCurrent = ((UPS.warn_status >> 5) & 0x01);
   powerStatusCurrent |= UPS_LoadRangeAlarm();
 
   if (powerStatusCurrent)
@@ -1084,7 +1084,7 @@ void UPS_TemperatureHighRangeMonitor(void)
     
   GetInternalTempInt(&temperature);
 
-  tempStatusCurrent = ((UPS.warn_status >> 5) & 0x01);
+  tempStatusCurrent = ((UPS.warn_status >> 6) & 0x01);
   tempStatusCurrent |= UPS_TempHighRangeAlarm();
 
   if (tempStatusCurrent)
@@ -1570,5 +1570,70 @@ void UPS_Failed_Monitor(void)
 }
 #endif
 
+#ifdef PHASE_FAIL_MONITOR
+void UPS_PhaseFailMonitor(void)
+{
+  static bool isValueRecv = false;
+  uint8_t phaseStatusCurrent;
+  static uint8_t phaseStatusOld = 0;
+
+  phaseStatusCurrent = ((UPS.warn_status >> 1) & 0x01);
+
+  if (phaseStatusCurrent != 0){
+    flCriticalAlarm = true;
+    flLedAlarm = true;
+    UPS.Alarm = (UPS.Alarm & 0xfffffeff) | (1 << 8);
+  } else {
+    UPS.Alarm = (UPS.Alarm & 0xfffffeff);
+  }
+
+  if (!isValueRecv) {
+    isValueRecv = true;
+    phaseStatusOld = phaseStatusCurrent;
+
+    if (phaseStatusCurrent != 0){
+      log_event_data(LOG_PHASE_FAIL, "Авария");
+      // Отправка трапа о завышении 
+      SNMP_SendUserTrap(PHASE_FAIL);
+      syslog(SYSLOG_ERROR, "Ошибка подкл. вх. напряжения");
+      flUpdateLog = true;
+    }
+    else{
+      log_event_data(LOG_PHASE_FAIL, "Норма");
+      // Отправка трапа о нормализации 
+      SNMP_SendUserTrap(PHASE_NORM);
+      syslog(SYSLOG_NOTICE, "Подкл. вх. напряжения в норме");
+      flUpdateLog = true;
+    }
+
+    return;
+  }
+
+  if (phaseStatusCurrent)
+  {
+    if (phaseStatusCurrent != phaseStatusOld)
+    {
+      log_event_data(LOG_PHASE_FAIL, "Авария");
+      // Отправка трапа о завышении 
+      SNMP_SendUserTrap(PHASE_FAIL);
+      syslog(SYSLOG_ERROR, "Ошибка подкл. вх. напряжения");
+      flUpdateLog = true;
+    }
+  }
+  /* Отслеживается нормализация */
+  else {
+    if (phaseStatusCurrent != phaseStatusOld)
+    {
+      log_event_data(LOG_PHASE_FAIL, "Норма");
+      // Отправка трапа о нормализации 
+      SNMP_SendUserTrap(PHASE_NORM);
+      syslog(SYSLOG_NOTICE, "Подкл. вх. напряжения в норме");
+      flUpdateLog = true;
+    }
+  }
+
+  phaseStatusOld = phaseStatusCurrent;
+}
+#endif
 
 /********************************* (C) РОТЕК **********************************/

+ 4 - 0
modules/monitor/ups_monitor.h

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

+ 1 - 0
modules/settings_api_bt6711.c

@@ -57,6 +57,7 @@ const char* logsStrShortRu[] =
     "Авария связи с ИБП",
     "Авария отключения АКБ",
     "Ёмкость АКБ",
+    "Ош. подкл. вх. напряжения",
 };
 
 const char* name_traps[] =