瀏覽代碼

[ups_monitor]fix alarm trigger for temperature

balbekova 5 年之前
父節點
當前提交
33e617e636
共有 3 個文件被更改,包括 78 次插入11 次删除
  1. 29 10
      modules/monitor/ups_monitor.c
  2. 44 1
      modules/parameters.c
  3. 5 0
      modules/parameters.h

+ 29 - 10
modules/monitor/ups_monitor.c

@@ -742,7 +742,12 @@ void UPS_TemperatureHighRangeMonitor(void)
   float temperature;
   static uint8_t stateCurrent = HYST_IDLE;
     
-  temperature = UPS.Temp;
+  GetInternalTempInt(&temperature);
+
+  if(temperature == 85) {
+    UPS.Alarm = (UPS.Alarm & 0xfffffffd) | (1 << 1);
+    return;
+  }
 
   /* Отслеживается переход через верхнюю границу */
   if (temperature > sSettings.sAlarmManager.Temprature_range.high)
@@ -784,13 +789,18 @@ void UPS_TemperatureLowRangeMonitor(void)
   float temperature;
   static uint8_t stateCurrent = HYST_IDLE;
 
-  temperature = UPS.Temp;
+  GetInternalTempInt(&temperature);
+
+  if(temperature == 85) {
+    UPS.Alarm = (UPS.Alarm & 0xfffffeff) | (1 << 8);
+    return;
+  }
 
   /* Отслеживается переход через нипжнюю границу */
   if (temperature < sSettings.sAlarmManager.Temprature_range.low)
   {
 	flCriticalAlarm = true;
-	UPS.Alarm = (UPS.Alarm & 0xfffffffd) | (1 << 1);
+	UPS.Alarm = (UPS.Alarm & 0xfffffeff) | (1 << 8);
     if (stateCurrent == HYST_IDLE)
 	{
 	  stateCurrent = HYST_DOWN;
@@ -805,7 +815,7 @@ void UPS_TemperatureLowRangeMonitor(void)
   /* Отслеживается нормализация */
   else if (temperature > (sSettings.sAlarmManager.Temprature_range.low + sSettings.sAlarmManager.Temprature_range.hyst))
   {
-	  UPS.Alarm = (UPS.Alarm & 0xfffffffd);
+	  UPS.Alarm = (UPS.Alarm & 0xfffffeff);
     if (stateCurrent == HYST_DOWN)
 	{
 	  stateCurrent = HYST_IDLE;
@@ -828,13 +838,17 @@ void Cabinet_TemperatureHighRangeMonitor(void)
   float temperature;
   static uint8_t stateCurrent = HYST_IDLE;
     
-  temperature = UPS.Temp;
+  GetTempCaseInt(&temperature);
 
+  if(temperature == 85) {
+    UPS.Alarm = (UPS.Alarm & 0xfffffdff) | (1 << 9);
+    return;
+  }
   /* Отслеживается переход через верхнюю границу */
   if (temperature > sSettings.sAlarmManager.Temprature_cabinet_range.high)
   {
 	flCriticalAlarm = true;
-	UPS.Alarm = (UPS.Alarm & 0xfffdffff) | (1 << 8);
+	UPS.Alarm = (UPS.Alarm & 0xfffffdff) | (1 << 9);
     if (stateCurrent == HYST_IDLE)
 	{
 	  stateCurrent = HYST_UP;
@@ -849,7 +863,7 @@ void Cabinet_TemperatureHighRangeMonitor(void)
   /* Отслеживается нормализация */
   else if (temperature < (sSettings.sAlarmManager.Temprature_cabinet_range.high - sSettings.sAlarmManager.Temprature_cabinet_range.hyst))
   {
-	  UPS.Alarm = (UPS.Alarm & 0xfffdffff);
+	  UPS.Alarm = (UPS.Alarm & 0xfffffdff);
     if (stateCurrent == HYST_UP)
 	{
 	  stateCurrent = HYST_IDLE;
@@ -870,13 +884,18 @@ void Cabinet_TemperatureLowRangeMonitor(void)
   float temperature;
   static uint8_t stateCurrent = HYST_IDLE;
 
-  temperature = UPS.Temp;
+  GetTempCaseInt(&temperature);
+
+  if(temperature == 85) {
+    UPS.Alarm = (UPS.Alarm & 0xfffffbff) | (1 << 10);
+    return;
+  }
 
   /* Отслеживается переход через нипжнюю границу */
   if (temperature < sSettings.sAlarmManager.Temprature_cabinet_range.low)
   {
 	flCriticalAlarm = true;
-	UPS.Alarm = (UPS.Alarm & 0xfffdffff) | (1 << 8);
+	UPS.Alarm = (UPS.Alarm & 0xfffffbff) | (1 << 10);
     if (stateCurrent == HYST_IDLE)
 	{
 	  stateCurrent = HYST_DOWN;
@@ -891,7 +910,7 @@ void Cabinet_TemperatureLowRangeMonitor(void)
   /* Отслеживается нормализация */
   else if (temperature > (sSettings.sAlarmManager.Temprature_cabinet_range.low + sSettings.sAlarmManager.Temprature_cabinet_range.hyst))
   {
-	  UPS.Alarm = (UPS.Alarm & 0xfffdffff);
+	  UPS.Alarm = (UPS.Alarm & 0xfffffbff);
     if (stateCurrent == HYST_DOWN)
 	{
 	  stateCurrent = HYST_IDLE;

+ 44 - 1
modules/parameters.c

@@ -233,7 +233,25 @@ void GetInternalTempStr(char *str, uint8_t *len)
   */
 void GetInternalTempInt(float *value)
 {
-    *value = UPS.Temp;
+    #ifdef DALLAS_SENSOR_ENABLE
+    if(sSettings.sTempControl[0].type_sensor == TS_AKB) {
+      if (sTemperSensors[0].SensorState == 1){
+        *value = 85;
+      } else {
+        *value = sTemperSensors[0].Temperature;
+      }
+    } else if (sSettings.sTempControl[1].type_sensor == TS_AKB) {
+        if (sTemperSensors[1].SensorState == 1){
+        *value = 85;
+      } else {
+        *value = sTemperSensors[1].Temperature;
+      }
+    }
+    else
+#endif
+      {
+        *value = UPS.Temp;
+      }
 }
 
 /**
@@ -546,6 +564,31 @@ void GetTempCaseStr(char *str, uint8_t *len)
 
     *len = strlen(str);
 }
+
+/**
+  * @brief
+  */
+void GetTempCaseInt(float *value)
+{
+    if(sSettings.sTempControl[0].type_sensor == TS_CABINET) {
+      if (sTemperSensors[0].SensorState == 1){
+        *value = 85;
+      } else {
+        *value = sTemperSensors[0].Temperature;
+      }
+    } else if (sSettings.sTempControl[1].type_sensor == TS_CABINET) {
+        if (sTemperSensors[1].SensorState == 1){
+        *value = 85;
+      } else {
+        *value = sTemperSensors[1].Temperature;
+      }
+    }
+    else
+      {
+        *value = 85;
+      }
+}
+
 #endif
 #endif
 // ************************************************************************** //

+ 5 - 0
modules/parameters.h

@@ -462,6 +462,11 @@ void GetAuthEnableStateStr(char *str, uint8_t *len);
   * @brief
   */
 void GetTempCaseStr(char *str, uint8_t *len);
+
+/**
+  * @brief
+  */
+void GetTempCaseInt(float *value);
 #endif
 #endif
 // ************************************************************************** //