Bläddra i källkod

[BT-6703-RT]1. remove new relay active and VAC out alarm 2. add VACin alarm detect

balbekova 4 år sedan
förälder
incheckning
bb58cc47e7

+ 3 - 9
config/board_bt6703_rt.h

@@ -130,9 +130,9 @@ XSETTING( char, our_srv_crt[1705], SETTINGS_SetSSLcrtDef, PART_DEFAULT_1 ) \
   XJSON_SETTINGS_TAG("ups_cell_max",       GetUPSVoltCellMaxStr,                    SetUPSVoltCellMaxStr) \
   XJSON_SETTINGS_TAG("ups_batcap",         GetCapacityNominalAKBStr,                SetCapacityNominalAKBStr) \
   XJSON_SETTINGS_TAG("ups_max_power",      GetUPSPowerEnumStr,                      SetUPSPowerEnumStr) \
-  XJSON_SETTINGS_TAG("mainvolt_high",      GetVACAlarmHighRangeStr,                 SetVACAlarmHighRangeStr) \
-  XJSON_SETTINGS_TAG("mainvolt_low",       GetVACAlarmLowRangeStr,                  SetVACAlarmLowRangeStr) \
-  XJSON_SETTINGS_TAG("mainvolt_hist",      GetVACAlarmHisteStr,                     SetVACAlarmHisteStr) \
+  XJSON_SETTINGS_TAG("mainvolt_in_high",   GetVACInputAlarmHighRangeStr,            SetVACInputAlarmHighRangeStr) \
+  XJSON_SETTINGS_TAG("mainvolt_in_low",    GetVACInputAlarmLowRangeStr,             SetVACInputAlarmLowRangeStr) \
+  XJSON_SETTINGS_TAG("mainvolt_in_hist",   GetVACinputAlarmHisteStr,                SetVACinputAlarmHisteStr) \
   XJSON_SETTINGS_TAG("temp_high",          GetTemperatureAlarmHighRangeStr,         SetTemperatureAlarmHighRangeStr) \
   XJSON_SETTINGS_TAG("temp_low",           GetTemperatureAlarmLowRangeStr,          SetTemperatureAlarmLowRangeStr) \
   XJSON_SETTINGS_TAG("temp_hist",          GetTemperatureAlarmHisteStr,             SetTemperatureAlarmHisteStr) \
@@ -225,8 +225,6 @@ typedef enum {
 	LOG_ALARM_DIO,
 	LOG_DO0_STATE,
 	LOG_DO1_STATE,
-  LOG_ALARM_VAC_LOW_OUTPUT,
-	LOG_ALARM_VAC_HIGH_OUTPUT,
 	LOG_ALARM_HIGH_TEMP,
 	LOG_ALARM_LOW_TEMP,
 	LOG_ALARM_LINE,
@@ -242,7 +240,6 @@ typedef enum {
 
 #define TEST_AKB_FINISH_MONITOR
 #define LINE_FAIL_MONITOR
-#define VAC_OUT_MONITOR
 #define LOW_BAT_MONITOR
 #define LOAD_MONITOR
 #define TEMP_AKB_MONITOR
@@ -254,8 +251,6 @@ typedef enum {
 #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) \
@@ -266,7 +261,6 @@ typedef enum {
   XMONITOR(UPS_Failed_Monitor,                    UPS.Present) \
 
 #define RELAY_AC_PRESENT
-#define RELAY_DC_PRESENT
 #define RELAY_ALARM_AKB
 #define RELAY_CHARGE_AKB
 #define RELAY_OFF_AKB

+ 46 - 3
modules/monitor/ups_monitor.c

@@ -433,6 +433,46 @@ void UPS_TestFinishMonitor(void)
 #endif
 }
 
+bool UPS_VACinputRangeAlarm(void)
+{
+  bool flag = false;
+  static uint8_t stateCurrentVACinput = HYST_IDLE;
+  float VACinputCurrent = UPS.VAC_in;
+
+  /* Отслеживается переход через нижнию границу */
+  if (VACinputCurrent < sSettings.sAlarmManager.ac_input_range.low)
+  {
+      if (stateCurrentVACinput == HYST_IDLE) {
+        stateCurrentVACinput = HYST_DOWN;
+        flag = true;
+      }
+  } else  if (VACinputCurrent > (sSettings.sAlarmManager.ac_input_range.low + sSettings.sAlarmManager.ac_input_range.hyst))
+  {
+      if (stateCurrentVACinput == HYST_DOWN)
+	    {
+        stateCurrentVACinput = HYST_IDLE;
+        flag = false;
+      }
+  }
+
+  /* Отслеживается переход через верхнюю границу */
+  if (VACinputCurrent > sSettings.sAlarmManager.ac_input_range.high)
+  {
+      if (stateCurrentVACinput == HYST_IDLE) {
+        stateCurrentVACinput = HYST_UP;
+        flag = true;
+      }
+  } else  if (VACinputCurrent < (sSettings.sAlarmManager.ac_input_range.high - sSettings.sAlarmManager.ac_input_range.hyst))
+  {
+      if (stateCurrentVACinput == HYST_UP)
+	    {
+        stateCurrentVACinput = HYST_IDLE;
+        flag = false;
+      }
+  }
+  return flag;
+}
+
 /**
   * @brief  Мониторинг бита LainFail
   */
@@ -451,8 +491,11 @@ void UPS_LineFailMonitor(void)
   for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
 	  CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
 #endif
-
+#ifdef HARDWARE_BT6703_RT
+  lineFailCurrent = (((UPS.Status >> 7) & 0x01) || UPS_VACinputRangeAlarm()) ? 1 : 0;
+#else 
   lineFailCurrent = (UPS.Status >> 7) & 0x01;
+#endif
   
   if (!isValueRecv) {
     isValueRecv = true;
@@ -534,7 +577,7 @@ void UPS_VACoutputLowRangeMonitor(void)
 {
 
   static uint8_t stateCurrentVACoutput = HYST_IDLE;
-  uint8_t VACoutputCurrent;
+  float VACoutputCurrent;
 #if	defined RELAY_DC_PRESENT
   uint8_t i = 0;
   static bool isValueRecv = false;
@@ -603,7 +646,7 @@ void UPS_VACoutputHighRangeMonitor(void)
 {
 
   static uint8_t stateCurrentVACoutput = HYST_IDLE;
-  uint8_t VACoutputCurrent;
+  float VACoutputCurrent;
 #if	defined RELAY_DC_PRESENT
   uint8_t i = 0;
   static bool isValueRecv = false;

+ 102 - 0
modules/parameters.c

@@ -1858,6 +1858,60 @@ void GetVACAlarmHisteInt(float *value)
     *value = sSettings.sAlarmManager.ac_output_range.hyst;
 }
 
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void GetVACInputAlarmHighRangeStr(char *str, uint8_t *len)
+{
+    sprintf(str, "%d", (int)sSettings.sAlarmManager.ac_input_range.high);
+
+    *len = strlen(str);
+}
+
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void GetVACInputAlarmHighRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.ac_input_range.high;
+}
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void GetVACInputAlarmLowRangeStr(char *str, uint8_t *len)
+{
+    sprintf(str, "%d", (int)sSettings.sAlarmManager.ac_input_range.low);
+
+    *len = strlen(str);
+}
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void GetVACInputAlarmLowRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.ac_input_range.low;
+}
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void GetVACinputAlarmHisteStr(char *str, uint8_t *len)
+{
+    sprintf(str, "%0.1f", sSettings.sAlarmManager.ac_input_range.hyst);
+
+    *len = strlen(str);
+}
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void GetVACinputAlarmHisteInt(float *value)
+{
+    *value = sSettings.sAlarmManager.ac_input_range.hyst;
+}
+
 /**
   * @brief Верхняя граница температуры
   */
@@ -2941,6 +2995,54 @@ void SetVACAlarmHisteInt(float value)
     sSettings.sAlarmManager.ac_output_range.hyst = value;
 }
 
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void SetVACInputAlarmHighRangeStr(char *str)
+{
+    sSettings.sAlarmManager.ac_input_range.high = atof(str);
+}
+
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void SetVACInputAlarmHighRangeInt(float value)
+{
+    sSettings.sAlarmManager.ac_input_range.high = value;
+}
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void SetVACInputAlarmLowRangeStr(char *str)
+{
+    sSettings.sAlarmManager.ac_input_range.low = atof(str);
+}
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void SetVACInputAlarmLowRangeInt(float value)
+{
+    sSettings.sAlarmManager.ac_input_range.low = value;
+}
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void SetVACinputAlarmHisteStr(char *str)
+{
+    sSettings.sAlarmManager.ac_input_range.hyst = atof(str);
+}
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void SetVACinputAlarmHisteInt(float value)
+{
+    sSettings.sAlarmManager.ac_input_range.hyst = value;
+}
+
 /**
   * @brief  Верхняя граница температуры
   */

+ 60 - 0
modules/parameters.h

@@ -720,6 +720,36 @@ void GetVACAlarmHisteStr(char *str, uint8_t *len);
   */
 void GetVACAlarmHisteInt(float *value);
 
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void GetVACInputAlarmHighRangeStr(char *str, uint8_t *len);
+
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void GetVACInputAlarmHighRangeInt(int32_t *value);
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void GetVACInputAlarmLowRangeStr(char *str, uint8_t *len);
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void GetVACInputAlarmLowRangeInt(int32_t *value);
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void GetVACinputAlarmHisteStr(char *str, uint8_t *len);
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void GetVACinputAlarmHisteInt(float *value);
+
 /**
   * @brief Верхняя граница температуры
   */
@@ -1253,6 +1283,36 @@ void SetVACAlarmHisteStr(char *str);
   */
 void SetVACAlarmHisteInt(float value);
 
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void SetVACInputAlarmHighRangeStr(char *str);
+
+/**
+  * @brief Верхняя граница входящего напряжения
+  */
+void SetVACInputAlarmHighRangeInt(float value);
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void SetVACInputAlarmLowRangeStr(char *str);
+
+/**
+  * @brief Нижняя граница входящего напряжения
+  */
+void SetVACInputAlarmLowRangeInt(float value);
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void SetVACinputAlarmHisteStr(char *str);
+
+/**
+  * @brief Гистерезис входящего напряжения
+  */
+void SetVACinputAlarmHisteInt(float value);
+
 /**
   * @brief  Верхняя граница температуры
   */

+ 3 - 0
modules/settings_api.h

@@ -276,6 +276,9 @@ typedef struct
 typedef struct
 {
     ALARM_LEVEL_RANGE_t load_range;
+#ifdef HARDWARE_BT6703_RT
+    ALARM_LEVEL_RANGE_t ac_input_range;
+#endif
     ALARM_LEVEL_RANGE_t ac_output_range;
     ALARM_LEVEL_RANGE_t Temprature_range;
 #ifndef HARDWARE_BT6709

+ 5 - 2
modules/settings_api_bt6703_rt.c

@@ -50,8 +50,6 @@ const char* logsStrShortRu[] =
     "Авария дискр. входа 1",
     "Состояние выхода 1",
     "Состояние выхода 2",
-    "Низкое вых. напряжение",
-    "Высокое вых. напряжение",
     "Высокая температура",
     "Низкая температура",
     "Авария вх. напряжения",
@@ -120,6 +118,11 @@ void SETTINGS_SetAlarmManagerDef(void)
 	sSettings.sAlarmManager.load_range.low = 0;
 	sSettings.sAlarmManager.load_range.hyst = 1;
 
+  sSettings.sAlarmManager.ac_input_range.high = 250.0;
+	sSettings.sAlarmManager.ac_input_range.low = 150.0;
+	sSettings.sAlarmManager.ac_input_range.hyst = 20.0;
+
+
 	sSettings.sAlarmManager.ac_output_range.high = 250.0;
 	sSettings.sAlarmManager.ac_output_range.low = 150.0;
 	sSettings.sAlarmManager.ac_output_range.hyst = 20.0;