|
@@ -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)
|