Browse Source

Merge branch 'new_mbed_tls' of https://192.168.14.200:3000/dtelenkov/bt-670x into new_mbed_tls

Avetisyan Karen 6 years ago
parent
commit
19e730db17

+ 24 - 6
modules/MegaTec/megatec.c

@@ -10,6 +10,7 @@
 #include "megatec.h"
 #include "log.h"
 #include "snmp_api.h"
+#include "settings_api.h"
 #ifdef PRINTF_STDLIB
 #include <stdio.h>
 #endif
@@ -20,7 +21,10 @@
 #include <string.h>
 #include <math.h>
 
-
+/**
+  * @brief  Общая структура настроек
+  */
+extern SETTINGS_t sSettings;
 
 #define UPS_PDU_MAX_LEN 50
 
@@ -179,6 +183,7 @@ void ups_status_response(char *data)
 {
 	uint8_t i;
 	char value[10];
+	float tmp;
 	uint8_t len = 0;
 	DBG printf("ups_status_response: %s\r\n", data);
 	if(data[0] != '(')
@@ -199,8 +204,13 @@ void ups_status_response(char *data)
 
 	len = get_ups_param(data, " ", value);
 	data += (len + 1);
-	if(len > 0)
-		UPS.VAC_in = atof(value);
+	if(len > 0){
+		tmp  =atof(value);
+		if(tmp > 20)
+			UPS.VAC_in = tmp;
+		else
+			UPS.VAC_in = 0;
+	}
 
 	//TODO
 	len = get_ups_param(data, " ", value);
@@ -224,9 +234,17 @@ void ups_status_response(char *data)
 	//TODO
 	len = get_ups_param(data, " ", value);
 	data += (len + 1);
-	if(len > 0)
-		UPS.SOC = 100*((atof(value)) - 1.6)/0.7;
-
+	if(len > 0){
+		//UPS.SOC = round(100*(((atof(value))/6) - 1.85)/0.4166666667); // 1.85 - минимальное напряжение на ячейки АКБ; 2.266666667 - максимальное напряжение на ячейки АКБ; (2.266666667 - 1.85) = 0.4166666667
+		//UPS.SOC = round(100*((atof(value)) - 1.67)/0.58); // 1.667 - минимальное напряжение на ячейки АКБ; 2.267 - максимальное напряжение на ячейки АКБ; (2.267 - 1.667) = 0.6
+		tmp = atof(value);
+		if(tmp < 10){
+			UPS.SOC = round(100*(tmp - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
+		}
+		else{
+			UPS.SOC = round(100*(tmp/6 - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
+		}
+	}
 	len = get_ups_param(data, " ", value);
 	data += (len + 1);
 	if(len > 0)

+ 25 - 2
modules/monitor/ups_monitor.c

@@ -46,7 +46,6 @@ extern SETTINGS_t sSettings;
 
 extern bool flUpdateLog;
 
-
 /**
   * @brief  Задача мониторинга параметров UPS
   */
@@ -60,6 +59,7 @@ void UPS_Monitor(void *params)
     // Проверяем флаг подключения UPS
    if (UPS.Present)
     {
+	  UPS_TestFinishMonitor();
       UPS_LineFailMonitor();
 #if	defined HARDWARE_BT6706 || HARDWARE_BT6708
       UPS_VACoutputMonitor();
@@ -75,7 +75,7 @@ void UPS_Monitor(void *params)
     UPS_CriticalAlarmMonitor();
     UPS_NonCriticalAlarmMonitor();
 #endif
-      
+
     vTaskDelay(1000);
   }
 }
@@ -317,6 +317,27 @@ void UPS_NonCriticalAlarmMonitor(void)
 }
 #endif
 
+/**
+  * @brief  Мониторинг бита Test in progress
+  */
+void UPS_TestFinishMonitor(void)
+{
+  static uint8_t TestFinishState = 0;
+  uint8_t TestFinishStateCurrent;
+
+  TestFinishStateCurrent = (UPS.Status >> 2) & 0x01;
+
+  // Значение параметра изменилось
+  if (TestFinishStateCurrent != TestFinishState)
+  {
+    if (!TestFinishStateCurrent){
+      log_event_data(LOG_TEST_UPS, "Завершен");
+      flUpdateLog = true;
+    }
+  }
+
+  TestFinishState = TestFinishStateCurrent;
+}
 /**
   * @brief  Мониторинг бита LainFail
   */
@@ -770,4 +791,6 @@ void UPS_BatteryConnectMonitor(void)
 }
 
 
+
+
 /********************************* (C) РОТЕК **********************************/

+ 5 - 0
modules/monitor/ups_monitor.h

@@ -25,6 +25,11 @@ typedef enum
   
 } HYST_STATE_t;
 
+/**
+  * @brief  Мониторинг бита Test in progress
+  */
+void UPS_TestFinishMonitor(void);
+
 /**
   * @brief  Мониторинг бита DI0 state
   */

+ 13 - 0
modules/settings_api.c

@@ -131,6 +131,15 @@ void SETTINGS_SetInfoDef(void)
   strcpy(sSettings.sInfo.comments, "");
 }  
 
+/**
+  * @brief  Настройки ИБП по умолчанию
+  */
+void SETTINGS_SetUPSSettingsDef(void)
+{
+  sSettings.UPS_Setting.Ucellmin = 1.67;
+  sSettings.UPS_Setting.Ucellmax = 2.27;
+}
+
 /**
   * @brief  Установить флаги по умолчанию
   */
@@ -268,6 +277,7 @@ void SETTINGS_SetDefault(void)
   SETTINGS_SetServiceDef();
   SETTINGS_SetSntpDef();
   SETTINGS_SetINOUTSDef();
+  SETTINGS_SetUPSSettingsDef();
 #ifdef HARDWARE_BT6702
   SETTINGS_SetRADIUSDef();
   SETTINGS_SetSSLcrtDef();
@@ -290,6 +300,7 @@ void SETTINGS_SetPartDefault(void)
   SETTINGS_SetBootParamsDef();
   SETTINGS_SetSnmpDef();
   SETTINGS_SetFlagsDef();
+  SETTINGS_SetUPSSettingsDef();
  // SETTINGS_SetServiceDef();
   SETTINGS_SetSntpDef();
   SETTINGS_SetINOUTSDef();
@@ -316,6 +327,7 @@ void SETTINGS_SetAllDefault(void)
   SETTINGS_SetFlagsDef();
   SETTINGS_SetServiceDef();
   SETTINGS_SetSntpDef();
+  SETTINGS_SetUPSSettingsDef();
   SETTINGS_SetINOUTSDef();
 #ifdef HARDWARE_BT6702
   SETTINGS_SetRADIUSDef();
@@ -347,6 +359,7 @@ void SETTINGS_SetDefaultDebug(void)
   //SETTINGS_SetServiceDef();
   SETTINGS_SetSntpDef();
   SETTINGS_SetINOUTSDef();
+  SETTINGS_SetUPSSettingsDef();
   //SETTINGS_SetInfoDef();
 #ifdef HARDWARE_BT6702
   SETTINGS_SetRADIUSDef();

+ 10 - 0
modules/settings_api.h

@@ -166,6 +166,15 @@ typedef enum
     DI_MAX_ACT
 } din_type_act_t;
 
+/**
+  * @brief  Настройки ИБП.
+  */
+typedef struct
+{
+	float Ucellmin;
+	float Ucellmax;
+} UPS_Setting_t;
+
 /**
   * @brief  Настройки входов/выходов.
   */
@@ -220,6 +229,7 @@ typedef struct
   AUTH_t		sAuth[MAX_WEB_USERS];
   SNTP_t        sSNTP;
   INOUTS_t		sInOuts;
+  UPS_Setting_t UPS_Setting;
 #ifdef HARDWARE_BT6702
   RADIUS_t		sRADIUS;
   //char			our_srv_crt[1205];