Browse Source

[monitor module]rewrite

balbekova 5 years ago
parent
commit
a44857b52c

+ 23 - 0
config/board_bt6703.h

@@ -217,6 +217,29 @@ typedef enum {
 	LOG_NONE,
 } log_type_t;
 
+#define TEST_AKB_FINISH_MONITOR
+#define LINE_FAIL_MONITOR
+#define LOW_BAT_MONITOR
+#define LOAD_MONITOR
+#define TEMP_AKB_MONITOR
+#define TEMP_CABINET_MONITOR
+#define BAT_CONNECT_MONITOR
+#define UPS_CONNECT_MONITOR
+#define DIN_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_ConnectMonitor,                    1) \
+  XMONITOR(UPS_DI0Monitor,                        1) \
+  XMONITOR(UPS_CriticalAlarmMonitor,              1) \
+  XMONITOR(UPS_NonCriticalAlarmMonitor,           1) \
+
 #define LED_INIT_OK               LED_INIT_G
 #define LED_INIT_ERR              LED_INIT_R
 #define LED_ALARM                 LED_MAJOR_R

+ 23 - 0
config/board_bt6707.h

@@ -240,6 +240,29 @@ typedef enum {
 	LOG_NONE,
 } log_type_t;
 
+#define TEST_AKB_FINISH_MONITOR
+#define LINE_FAIL_MONITOR
+#define VAC_OUT_MONITOR
+#define LOW_BAT_MONITOR
+#define LOAD_MONITOR
+#define TEMP_AKB_MONITOR
+#define BAT_CONNECT_MONITOR
+#define UPS_CONNECT_MONITOR
+#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_ConnectMonitor,                      1) \
+  XMONITOR(UPS_DI0Monitor,                          1) \
+
 #define LED_INIT_OK               LED_INIT_G
 #define LED_INIT_ERR              LED_INIT_R
 #define LED_ALARM                 LED_MAJOR_R

+ 23 - 0
config/board_bt6709.h

@@ -223,6 +223,29 @@ typedef enum {
 	LOG_NONE,
 } log_type_t;
 
+#define TEST_AKB_FINISH_MONITOR
+#define LINE_FAIL_MONITOR
+#define VAC_OUT_MONITOR
+#define LOW_BAT_MONITOR
+#define LOAD_MONITOR
+#define TEMP_AKB_MONITOR
+#define BAT_CONNECT_MONITOR
+#define UPS_CONNECT_MONITOR
+#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_ConnectMonitor,                  1) \
+  XMONITOR(AKB_Change_Monitor,                  1) \
+
 #define LED_INIT_OK               LED_INIT_G
 #define LED_INIT_ERR              LED_INIT_R
 #define LED_ALARM                 LED_MAJOR_R

+ 22 - 0
config/board_bt6710.h

@@ -235,6 +235,28 @@ typedef enum {
 	LOG_NONE,
 } log_type_t;
 
+#define TEST_AKB_FINISH_MONITOR
+#define LINE_FAIL_MONITOR
+#define VAC_OUT_MONITOR
+#define LOW_BAT_MONITOR
+#define TEMP_AKB_MONITOR
+#define TEMP_CABINET_MONITOR
+#define BAT_CONNECT_MONITOR
+#define UPS_CONNECT_MONITOR
+#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_TemperatureHighRangeMonitor, UPS.Present) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,  UPS.Present) \
+  XMONITOR(UPS_BatteryConnectMonitor,       UPS.Present) \
+  XMONITOR(UPS_ConnectMonitor,              1) \
+  XMONITOR(UPS_DI0Monitor,                  1) \
+
 #define T_SENSOR_TABLE \
   XTSENSOR(T_SENSOR_1,     WDATA1,      DALLAS_SENSOR_1_USART) \
   XTSENSOR(T_SENSOR_2,     WDATA2,      DALLAS_SENSOR_2_USART) \

+ 53 - 47
modules/monitor/ups_monitor.c

@@ -49,56 +49,38 @@ void UPS_Monitor(void *params)
   {
 		flCriticalAlarm = false;
 	  flNonCriticalAlarm = false;
-    // Проверяем флаг подключения UPS
-   if (UPS.Present)
-    {
-	  UPS_TestFinishMonitor();
-      UPS_LineFailMonitor();
-#if	defined HARDWARE_BT6707 || HARDWARE_BT6709
-      UPS_VACoutputLowRangeMonitor();
-      UPS_VACoutputHighRangeMonitor();
-#endif
-      UPS_LowBatMonitor();  
-      UPS_PowerMonitor();
-      UPS_TemperatureHighRangeMonitor();
-      UPS_TemperatureLowRangeMonitor();
-      UPS_BatteryConnectMonitor();
-    }
-    UPS_ConnectMonitor();
-#ifdef INOUTS_ENABLE
-    UPS_DI0Monitor();
-#endif
-#ifdef HARDWARE_BT6709
-    AKB_Change_Monitor();
-#endif
-#ifdef HARDWARE_BT6703
-    UPS_CriticalAlarmMonitor();
-    UPS_NonCriticalAlarmMonitor();
-#endif
+
+#define XMONITOR(monitor_func, present) if (present) { monitor_func(); }
+        MONITOR_TABLE
+#undef XMONITOR
+
+#ifdef LED_ALARM
       if(flCriticalAlarm){
     	  if (UPS.Present)
-    		  LED_On(LED_MAJOR_R);
+    		  LED_On(LED_ALARM);
     	  else
-    		  LED_Toggle(LED_MAJOR_R);
+    		  LED_Toggle(LED_ALARM);
       }
       else{
-    	  LED_Off(LED_MAJOR_R);
+    	  LED_Off(LED_ALARM);
       }
-
+#endif
     vTaskDelay(1000);
   }
 }
-#ifdef INOUTS_ENABLE
+
+#ifdef DINS_ENABLE
 /**
   * @brief  Мониторинг бита DI0 state
   */
 void UPS_DI0Monitor(void)
 {
+#ifdef DIN_MONITOR
   static bool isValueRecv = false;
   static uint8_t DI0OldState = 0;
   uint8_t DI0StateCurrent;
 
-  DI0StateCurrent = get_state_din_outs(DIN1) ^ sSettings.sInOuts.din_type_act[0];
+  DI0StateCurrent = get_state_din_outs(DIN1) ^ sSettings.sDINs[0].din_type_act;
 
   UPS.Alarm = (UPS.Alarm & 0xef) | (DI0StateCurrent << 4);
 
@@ -139,8 +121,11 @@ void UPS_DI0Monitor(void)
 	}
 
 	DI0OldState = DI0StateCurrent;
+#endif
 }
+#endif
 
+#ifdef  DOUTS_ENABLE 
 void relay_setup_log(uint8_t *curr_source, ro_type_source_t src_act_ro, uint8_t state_relay)
 {
 	uint8_t i = 0;
@@ -211,7 +196,7 @@ void relay_setup_log_change(uint8_t *curr_source, uint8_t *prev_source, ro_type_
 #endif
 
 
-#ifdef HARDWARE_BT6703
+#ifdef TYPE_CRITICAL_ALARM_MONITOR
 /**
   * @brief  Мониторинг бита CriticalAlarm
   */
@@ -225,7 +210,7 @@ void UPS_CriticalAlarmMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 
   CriticalAlarmCurrent = flCriticalAlarm;
 
@@ -279,7 +264,7 @@ void UPS_NonCriticalAlarmMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 
   NonCriticalAlarmCurrent = flNonCriticalAlarm;
 
@@ -324,6 +309,7 @@ void UPS_NonCriticalAlarmMonitor(void)
   */
 void UPS_TestFinishMonitor(void)
 {
+#ifdef TEST_AKB_FINISH_MONITOR
   static uint8_t TestFinishState = 0;
   uint8_t TestFinishStateCurrent;
   char log_string[50];
@@ -361,13 +347,14 @@ void UPS_TestFinishMonitor(void)
   }
 
   TestFinishState = TestFinishStateCurrent;
+#endif
 }
 /**
   * @brief  Мониторинг бита LainFail
   */
 void UPS_LineFailMonitor(void)
 {
-
+#ifdef LINE_FAIL_MONITOR
   static bool isValueRecv = false;
   static uint8_t lineFailOldState = 0;
   uint8_t lineFailCurrent;
@@ -378,7 +365,7 @@ void UPS_LineFailMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 #endif
 
   lineFailCurrent = (UPS.Status >> 7) & 0x01;
@@ -451,9 +438,10 @@ void UPS_LineFailMonitor(void)
 #endif
 
   lineFailOldState = lineFailCurrent;
+#endif
 }
 
-#if defined HARDWARE_BT6707 || HARDWARE_BT6709
+#ifdef VAC_OUT_MONITOR
 /**
   * @brief  Мониторинг аварии выходного напряжения по нижней границе
   */
@@ -469,7 +457,7 @@ void UPS_VACoutputLowRangeMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++){
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 	  if(!isValueRecv)
 		  OldROtype_Sourse[i] = CurrROtype_Sourse[i];
   }
@@ -536,7 +524,7 @@ void UPS_VACoutputHighRangeMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++){
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 	  if(!isValueRecv)
 		  OldROtype_Sourse[i] = CurrROtype_Sourse[i];
   }
@@ -593,6 +581,7 @@ void UPS_VACoutputHighRangeMonitor(void)
   */
 void UPS_LowBatMonitor(void)
 {
+#ifdef LOW_BAT_MONITOR
   static bool isValueRecv = false;
   static uint8_t lowBatOldState = 0;
   static bool flag_alarm_time = false;
@@ -604,7 +593,7 @@ void UPS_LowBatMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 #endif
 
   if((UPS.Status >> 7) & 0x01)
@@ -682,6 +671,7 @@ void UPS_LowBatMonitor(void)
 		  flNonCriticalAlarm = true;
 	  }
   }
+#endif
 }
 
 /**
@@ -689,6 +679,7 @@ void UPS_LowBatMonitor(void)
   */
 void UPS_PowerMonitor(void)
 {
+#ifdef LOAD_MONITOR
   float load;
   static uint8_t stateCurrent = HYST_IDLE;
     
@@ -701,8 +692,12 @@ void UPS_PowerMonitor(void)
 	UPS.Alarm = (UPS.Alarm & 0xfe) | (1 << 0);
     if (stateCurrent == HYST_IDLE)
 	{
-      LED_On(LED_MINOR_R);
-      LED_On(LED_MINOR_G);
+#ifdef LED_RED_MINOR
+      LED_On(LED_RED_MINOR);
+#endif
+#ifdef LED_GREEN_MINOR
+      LED_On(LED_GREEN_MINOR);
+#endif
 	  stateCurrent = HYST_UP;
       
 	  log_event_data(LOG_ALARM_POWER, "Авария");
@@ -717,8 +712,12 @@ void UPS_PowerMonitor(void)
 	UPS.Alarm = (UPS.Alarm & 0xfe);
     if (stateCurrent == HYST_UP)
 	{
-    	LED_Off(LED_MINOR_R);
-    	LED_Off(LED_MINOR_G);
+#ifdef LED_RED_MINOR
+    	LED_Off(LED_RED_MINOR);
+#endif
+#ifdef LED_GREEN_MINOR
+    	LED_Off(LED_GREEN_MINOR);
+#endif
 	  stateCurrent = HYST_IDLE;
       
 	  log_event_data(LOG_ALARM_POWER, "Норма");
@@ -727,8 +726,10 @@ void UPS_PowerMonitor(void)
 	  flUpdateLog = true;
 	}
   }
+#endif
 }
 
+#ifdef TEMP_AKB_MONITOR
 /**
   * @brief  Мониторинг температуры по верхней границе
   */
@@ -812,12 +813,14 @@ void UPS_TemperatureLowRangeMonitor(void)
 	}
   }
 }
+#endif
 
 /**
   * @brief  Мониторинг параметра upsParams.connect
   */
 void UPS_ConnectMonitor(void)
 {
+#ifdef UPS_CONNECT_MONITOR
   static bool isValueRecv = false;
   static uint8_t connectOldState = 0;
   uint8_t connectCurrent;
@@ -859,6 +862,7 @@ void UPS_ConnectMonitor(void)
   }
   
   connectOldState = connectCurrent;
+#endif
 }
 
 /**
@@ -866,6 +870,7 @@ void UPS_ConnectMonitor(void)
   */
 void UPS_BatteryConnectMonitor(void)
 {
+#ifdef BAT_CONNECT_MONITOR
   static bool isValueRecv = false;
   static bool flag_alarm_time = false;
   static uint8_t AKBconnectOldState = 0;
@@ -877,7 +882,7 @@ void UPS_BatteryConnectMonitor(void)
   uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
-	  CurrROtype_Sourse[i] = sSettings.sInOuts.ro_type_source[i];
+	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 #endif
 
   if(((UPS.Status >> 7) & 0x01) == 0)
@@ -958,9 +963,10 @@ void UPS_BatteryConnectMonitor(void)
 		  flCriticalAlarm = true;
 	  }
   }
+#endif
 }
 
-#ifdef HARDWARE_BT6709
+#ifdef AKB_CHANGE_MONITOR
 /**
   * @brief  Мониторинг параметра замены АКБ
   */

+ 9 - 3
modules/monitor/ups_monitor.h

@@ -14,6 +14,8 @@
 #ifndef UPS_MONITOR_H
 #define UPS_MONITOR_H
    
+#include "common_config.h"
+
 /**
   * @brief  Состояния для реализации алгоритма гистерезиса
   */
@@ -34,6 +36,8 @@ void UPS_TestFinishMonitor(void);
   * @brief  Мониторинг бита DI0 state
   */
 void UPS_DI0Monitor(void);
+
+#ifdef TYPE_CRITICAL_ALARM_MONITOR
 /**
   * @brief  Мониторинг бита NonCriticalAlarm
   */
@@ -42,12 +46,13 @@ void UPS_CriticalAlarmMonitor(void);
   * @brief  Мониторинг бита NonCriticalAlarm
   */
 void UPS_NonCriticalAlarmMonitor(void);
+#endif
 /**
   * @brief  Мониторинг LainFail бита 
   */
 void UPS_LineFailMonitor(void);
 
-#if defined HARDWARE_BT6707 || HARDWARE_BT6709
+#ifdef VAC_OUT_MONITOR
 /**
   * @brief  Мониторинг аварии выходного напряжения по нижней границе
   */
@@ -74,6 +79,7 @@ void UPS_Monitor(void *params);
   */
 void UPS_PowerMonitor(void);
 
+#ifdef TEMP_AKB_MONITOR
 /**
   * @brief  Мониторинг температуры по верхней границе
   */
@@ -83,7 +89,7 @@ void UPS_TemperatureHighRangeMonitor(void);
   * @brief  Мониторинг температуры по нижней границе
   */
 void UPS_TemperatureLowRangeMonitor(void);
-    
+#endif    
 /**
   * @brief  Мониторинг параметра upsParams.connect
   */
@@ -94,7 +100,7 @@ void UPS_ConnectMonitor(void);
   */
 void UPS_BatteryConnectMonitor(void);
 
-#ifdef HARDWARE_BT6709
+#ifdef AKB_CHANGE_MONITOR
 /**
   * @brief  Мониторинг параметра замены АКБ
   */