Forráskód Böngészése

1、三相类PDU增加每相总阈值报警功能

liyuezong 1 éve%!(EXTRA string=óta)
szülő
commit
7c435838d5
4 módosított fájl, 288 hozzáadás és 279 törlés
  1. 90 1
      pro/src/app.c
  2. 65 222
      pro/src/appweb_handle.c
  3. 130 53
      pro/src/json_handle.c
  4. 3 3
      pro/src/sqlite_handle.c

+ 90 - 1
pro/src/app.c

@@ -1073,7 +1073,6 @@ static void* power_thread(void* arg)
             }   
 #endif
 
-
 #ifdef PRJ_2405_AC_I1_O1_OLED
             if (_globalPowerMangerTemp->product_ch_id==4 )
             {
@@ -1363,6 +1362,96 @@ static void* power_thread(void* arg)
                 log_d("ch%d insert data error.\n", _globalTotalPowerInfo.product_ch_id);
             }
         }
+
+        // 判断三相每相总电源超限动作以及防护
+        if (_globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree 
+        || _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One
+        || _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two 
+        || _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
+        {
+            _pTreeACPowerMangerTemp = NULL;
+            list_for_each_entry(_pTreeACPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list_Tree_AC, list_Tree_AC)
+            {
+                int nTreeACType = _pTreeACPowerMangerTemp->product_ph_type;
+                if (nTreeACType < 0 || nTreeACType > 3) // 不是ABC相的情况直接跳过
+                {
+                    continue;
+                }
+
+                bool ph_Vup = false;
+                bool ph_Vdown = false;
+                bool ph_Aup = false;
+                bool ph_Power = false;
+                bool ph_Consumption = false;
+
+                ph_Vup = _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_up;
+                ph_Vdown = _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_down;
+                ph_Aup = _pTreeACPowerMangerTemp->_PowerWarninginfo.w_current;
+                ph_Power = _pTreeACPowerMangerTemp->_PowerWarninginfo.w_power;
+                ph_Consumption = _pTreeACPowerMangerTemp->_PowerWarninginfo.w_consumption;
+
+                if (_pTreeACPowerMangerTemp->_PowerInfo.voltage >= _pTreeACPowerMangerTemp->global_over_manager.product_vol_upper_threshold &&
+                    (_pTreeACPowerMangerTemp->global_over_manager.product_vol_upper_threshold) >= 0.05)
+                {
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_up = true;
+                }
+                else
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_up = false;
+
+                if (_pTreeACPowerMangerTemp->_PowerInfo.voltage <= _pTreeACPowerMangerTemp->global_over_manager.product_vol_lower_threshold &&
+                    (_pTreeACPowerMangerTemp->global_over_manager.product_vol_lower_threshold) >= 0.05)
+                {
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_down = true;
+                }
+                else
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_down = false;
+
+                if (_pTreeACPowerMangerTemp->_PowerInfo.current >= _pTreeACPowerMangerTemp->global_over_manager.product_cur_upper_threshold &&
+                    (_pTreeACPowerMangerTemp->global_over_manager.product_cur_upper_threshold) >= 0.05)
+                {
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_current = true;
+                }
+                else
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_current = false;
+
+                if (_pTreeACPowerMangerTemp->_PowerInfo.power >= _pTreeACPowerMangerTemp->global_over_manager.product_pwr_upper_threshold &&
+                    (_pTreeACPowerMangerTemp->global_over_manager.product_pwr_upper_threshold) >= 0.05)
+                {
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_power = true;
+                }
+                else
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_power = false;
+                if (_pTreeACPowerMangerTemp->_PowerInfo.consumption >= _pTreeACPowerMangerTemp->global_over_manager.product_pwrcon_upper_threshold &&
+                    (_pTreeACPowerMangerTemp->global_over_manager.product_pwrcon_upper_threshold) >= 0.05)
+                {
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_consumption = true;
+                }
+                else
+                    _pTreeACPowerMangerTemp->_PowerWarninginfo.w_consumption = false;
+
+                if (_pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_up && !ph_Vup)
+                {
+                    dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_V_UP);
+                }
+                if (_pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_down && !ph_Vdown)
+                {
+                    dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_V_DOWN);
+                }
+                if (_pTreeACPowerMangerTemp->_PowerWarninginfo.w_current && !ph_Aup)
+                {
+                    dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_A_UP);
+                }
+                if (_pTreeACPowerMangerTemp->_PowerWarninginfo.w_power && !ph_Power)
+                {
+                    dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_P_UP);
+                }
+                if (_pTreeACPowerMangerTemp->_PowerWarninginfo.w_consumption && !ph_Consumption)
+                {
+                    dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_W_UP);
+                }
+            }
+        }
+
         //判断总电源超限状态及动作防护
         {
             bool nTotalVup = _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_up;

+ 65 - 222
pro/src/appweb_handle.c

@@ -3023,14 +3023,31 @@ static void sensorStatusMonitoring(void* conn)
  */
 char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
 {
-        int ret = -1 ;
+    int ret = -1;
     char *ack_str = NULL;
-    GlobalPowerManger *_globalPowerMangerSaveTemp;
+    GlobalPowerManger *_globalPowerMangerSaveTemp=NULL;
+    GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
     // int g_pwr_ch_id = atoi(_alarm_request_info->_pwr_info.productChId);
     int g_pwr_ch_id = nChID;
     if (g_pwr_ch_id == 0)
     {
         _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger;
+
+        int nTreeACType = -1;
+        if (strncmp(_alarm_request_info->_pwr_info.productChName, "ALL_L1", 6) == 0)
+            nTreeACType=0;
+        else if (strncmp(_alarm_request_info->_pwr_info.productChName, "ALL_L2", 6) == 0)
+             nTreeACType=1;
+        else if (strncmp(_alarm_request_info->_pwr_info.productChName, "ALL_L3", 6) == 0)
+             nTreeACType=2;
+
+        if (nTreeACType != -1)
+        {
+            list_for_each_entry(_pTreeACPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list_Tree_AC, list_Tree_AC)
+            {
+                if (nTreeACType == _pTreeACPowerMangerTemp->product_ph_type) break;
+            }
+        }
     }
     else
     {
@@ -3044,77 +3061,50 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
         }
     }
 
-    // 更新参数,使能全部放在控制板上判断,表头不做判断,统一发1
-    if (_alarm_request_info->_pwr_info.voltageUpperValue)
+    if (_globalPowerMangerSaveTemp == NULL)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_threshold = atof(_alarm_request_info->_pwr_info.voltageUpperValue);
+        ack_str = ctrl_breaker_err_ack_to_json("Set Threshold Failed! No Such Channel!");
+        return ack_str;
     }
-     _globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_enable = 1;
-    /*if (_globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_threshold != 0)
+
+    GlobalOverManager *_globalOverManagerTemp = NULL;
+    if (_pTreeACPowerMangerTemp == NULL)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_enable = 1;
+        _globalOverManagerTemp = &_globalPowerMangerSaveTemp->global_over_manager;
     }
     else
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_enable = 0;
-    }*/
+        _globalOverManagerTemp = &_pTreeACPowerMangerTemp->global_over_manager;
 
-    if (_alarm_request_info->_pwr_info.voltageDownValue)
+    // 更新参数,使能全部放在控制板上判断,表头不做判断,统一发1
+    if (_alarm_request_info->_pwr_info.voltageUpperValue)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_threshold = atof(_alarm_request_info->_pwr_info.voltageDownValue);
+        _globalOverManagerTemp->product_vol_upper_threshold = atof(_alarm_request_info->_pwr_info.voltageUpperValue);
     }
-    _globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_enable = 1;
-    /*if (_globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_threshold != 0)
+    _globalOverManagerTemp->product_vol_upper_enable = 1;
+
+    if (_alarm_request_info->_pwr_info.voltageDownValue)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_enable = 1;
+        _globalOverManagerTemp->product_vol_lower_threshold = atof(_alarm_request_info->_pwr_info.voltageDownValue);
     }
-    else
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_enable = 0;
-    }*/
+     _globalOverManagerTemp->product_vol_lower_enable = 1;
 
     if (_alarm_request_info->_pwr_info.currentUpperValue)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_threshold = atof(_alarm_request_info->_pwr_info.currentUpperValue);
+        _globalOverManagerTemp->product_cur_upper_threshold = atof(_alarm_request_info->_pwr_info.currentUpperValue);
     }
-    _globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_enable = 1;
-    /*if (_globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_threshold != 0)
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_enable = 1;
-    }
-    else
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_enable = 0;
-    }*/
+     _globalOverManagerTemp->product_cur_upper_enable = 1;
 
     if (_alarm_request_info->_pwr_info.powerUpperValue)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_threshold = atof(_alarm_request_info->_pwr_info.powerUpperValue);
-    }
-    _globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_enable = 1;
-    /*if (_globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_threshold != 0)
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_enable = 1;
+         _globalOverManagerTemp->product_pwr_upper_threshold = atof(_alarm_request_info->_pwr_info.powerUpperValue);
     }
-    else
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_enable = 0;
-    }*/
+     _globalOverManagerTemp->product_pwr_upper_enable = 1;
 
     if (_alarm_request_info->_pwr_info.alarmContentUpperValue)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_threshold = atof(_alarm_request_info->_pwr_info.alarmContentUpperValue);
+         _globalOverManagerTemp->product_pwrcon_upper_threshold = atof(_alarm_request_info->_pwr_info.alarmContentUpperValue);
     }
-    _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 1;
-   /* if (_globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_threshold != 0)
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 1;
-    }
-    else
-    {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 0;
-    }*/
-    //_globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 1 ;
+     _globalOverManagerTemp->product_pwrcon_upper_enable = 1;
 
     char Alarm_Ctrl_type[16];
     memset(Alarm_Ctrl_type, 0, sizeof(Alarm_Ctrl_type));
@@ -3122,50 +3112,49 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
 
     if (_alarm_request_info->_pwr_info.currentUpperAction && strcmp(_alarm_request_info->_pwr_info.currentUpperAction, Alarm_Ctrl_type) == 0)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_cur_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
+         _globalOverManagerTemp->product_cur_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
     }
     else
-        _globalPowerMangerSaveTemp->global_over_manager.product_cur_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+         _globalOverManagerTemp->product_cur_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
 
     if (_alarm_request_info->_pwr_info.voltageUpperAction && strcmp(_alarm_request_info->_pwr_info.voltageUpperAction, Alarm_Ctrl_type) == 0)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
+         _globalOverManagerTemp->product_vol_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
     }
     else
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+        _globalOverManagerTemp->product_vol_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
 
     if (_alarm_request_info->_pwr_info.voltageDownAction && strcmp(_alarm_request_info->_pwr_info.voltageDownAction, Alarm_Ctrl_type) == 0)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_lower_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
+         _globalOverManagerTemp->product_vol_over_lower_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
     }
     else
-        _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_lower_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+         _globalOverManagerTemp->product_vol_over_lower_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
 
     if (_alarm_request_info->_pwr_info.powerUpperAction && strcmp(_alarm_request_info->_pwr_info.powerUpperAction, Alarm_Ctrl_type) == 0)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
+         _globalOverManagerTemp->product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
     }
     else
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+         _globalOverManagerTemp->product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
 
     if (_alarm_request_info->_pwr_info.alarmContentUpperAction && strcmp(_alarm_request_info->_pwr_info.alarmContentUpperAction, Alarm_Ctrl_type) == 0)
     {
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
+         _globalOverManagerTemp->product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
     }
     else
-        _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+        _globalOverManagerTemp->product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
 
     if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One|| __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two)
     {
-
-        GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
-        list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
+        GlobalTreeACManager *_pTreeACPowerMangerTemp1 = NULL;
+        list_for_each_entry(_pTreeACPowerMangerTemp1, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
         {
-            _pTreeACPowerMangerTemp->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;
+            _pTreeACPowerMangerTemp1->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;
             ret = g_switch_set_all_single_threshold(&__globalDeviceManage._globalRelaySampManger,
                                                     _globalPowerMangerSaveTemp->product_ch_type,
-                                                    _pTreeACPowerMangerTemp->product_saddr,
-                                                    _pTreeACPowerMangerTemp->product_ch_addr,
+                                                    _pTreeACPowerMangerTemp1->product_saddr,
+                                                    _pTreeACPowerMangerTemp1->product_ch_addr,
                                                     _globalPowerMangerSaveTemp, 1);
         }
     }
@@ -3183,7 +3172,10 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
         log_e("power threshold update error.ret:%d,%s", ret, modbus_strerror(errno));
         /* code */
     }
-    if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One|| __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two)
+    if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree
+     || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One
+     || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two
+    || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
     {
         // 写入数据库
         ret = dev_update_power_manage_over_info(__globalDeviceManage.db,
@@ -3192,11 +3184,12 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
                                                 _globalPowerMangerSaveTemp);
         if (ret != 0)
             log_e("power threshold update error.");
-        GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
-        list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
+        
+        GlobalTreeACManager *_pTreeACPowerMangerTemp2 = NULL;
+        list_for_each_entry(_pTreeACPowerMangerTemp2, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
         {
-            _pTreeACPowerMangerTemp->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;
-            ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db, _pTreeACPowerMangerTemp);
+           if(_globalPowerMangerSaveTemp->product_ch_id!=0) _pTreeACPowerMangerTemp2->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;//通道相阈值直接取通道阈值,总体的相阈值分别取各自阈值
+            ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db, _pTreeACPowerMangerTemp2);
         }
     }
     else
@@ -3388,156 +3381,6 @@ static void alarmProtect(void *conn)
         }
         else sprintf(log_buff, "Update power threshold CH%d!",g_pwr_ch_id);
         dev_insert_alarm_ctrl(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, log_buff);
-        /*
-        if (g_pwr_ch_id ==0)
-        {
-           _globalPowerMangerSaveTemp=&__globalDeviceManage._globalPowerManger;
-        }
-        else
-        {
-            list_for_each_entry(_globalPowerMangerSaveTemp, &__globalDeviceManage._globalPowerManger.list, list)
-            {
-                // ID相等 记录信息
-                if (_globalPowerMangerSaveTemp->product_ch_id == g_pwr_ch_id)
-                {
-                    break;
-                }
-            }
-        }
-
-        //更新参数
-        if (_alarm_request_info._pwr_info.voltageUpperValue)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_threshold =atof(_alarm_request_info._pwr_info.voltageUpperValue);
-        }     
-        if (_globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_threshold!=0){_globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_enable = 1 ;
-        }else{_globalPowerMangerSaveTemp->global_over_manager.product_vol_upper_enable = 0;} 
-
-        if (_alarm_request_info._pwr_info.voltageDownValue)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_threshold =atof(_alarm_request_info._pwr_info.voltageDownValue);
-        }     
-        if (_globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_threshold!=0){_globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_enable  = 1 ;
-        }else{_globalPowerMangerSaveTemp->global_over_manager.product_vol_lower_enable  = 0 ;} 
-
-        if (_alarm_request_info._pwr_info.currentUpperValue)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_threshold = atof(_alarm_request_info._pwr_info.currentUpperValue);
-        }     
-
-        if (_globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_threshold!=0){_globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_enable = 1 ;
-        }else{_globalPowerMangerSaveTemp->global_over_manager.product_cur_upper_enable = 0 ;} 
-
-        if (_alarm_request_info._pwr_info.powerUpperValue)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_threshold = atof(_alarm_request_info._pwr_info.powerUpperValue);
-        }     
-        if (_globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_threshold!=0){_globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_enable = 1 ;
-        }else{_globalPowerMangerSaveTemp->global_over_manager.product_pwr_upper_enable = 0 ;} 
-
-        if (_alarm_request_info._pwr_info.alarmContentUpperValue)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_threshold = atof(_alarm_request_info._pwr_info.alarmContentUpperValue);
-        }      
-        if (_globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_threshold!=0){_globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 1 ;
-        }else{_globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 0 ;} 
-        //_globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_upper_enable = 1 ;
-
-        char Alarm_Ctrl_type[16];
-        memset(Alarm_Ctrl_type, 0, sizeof(Alarm_Ctrl_type));
-        sprintf(Alarm_Ctrl_type, "%d", ALARM_CTRL_CLOSE_CH);
-
-        if (_alarm_request_info._pwr_info.currentUpperAction && strcmp(_alarm_request_info._pwr_info.currentUpperAction,Alarm_Ctrl_type) == 0)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_cur_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
-        }
-        else
-            _globalPowerMangerSaveTemp->global_over_manager.product_cur_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
-
-        if (_alarm_request_info._pwr_info.voltageUpperAction && strcmp(_alarm_request_info._pwr_info.voltageUpperAction, Alarm_Ctrl_type) == 0)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
-        }
-        else
-            _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
-
-        if (_alarm_request_info._pwr_info.voltageDownAction && strcmp(_alarm_request_info._pwr_info.voltageDownAction, Alarm_Ctrl_type) == 0)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_lower_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
-        }
-        else
-            _globalPowerMangerSaveTemp->global_over_manager.product_vol_over_lower_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
-
-        if (_alarm_request_info._pwr_info.powerUpperAction && strcmp(_alarm_request_info._pwr_info.powerUpperAction, Alarm_Ctrl_type) == 0)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
-        }
-        else
-            _globalPowerMangerSaveTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
-
-        if (_alarm_request_info._pwr_info.alarmContentUpperAction && strcmp(_alarm_request_info._pwr_info.alarmContentUpperAction, Alarm_Ctrl_type) == 0)
-        {
-            _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_CLOSE_CH;
-        }
-        else
-            _globalPowerMangerSaveTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
-
-
-        if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One)
-        {
-            
-            GlobalTreeACManager* _pTreeACPowerMangerTemp = NULL ;     
-            list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
-            {
-                memcpy(_pTreeACPowerMangerTemp->global_over_manager,_globalPowerMangerSaveTemp->global_over_manager,sizeof(GlobalOverManager));
-                ret = g_switch_set_all_single_threshold(&__globalDeviceManage._globalRelaySampManger,
-                                                        _globalPowerMangerSaveTemp->product_ch_type,
-                                                        _pTreeACPowerMangerTemp->product_saddr,
-                                                        _pTreeACPowerMangerTemp->product_ch_addr,
-                                                        _globalPowerMangerSaveTemp, 1);
-            }
-        }
-        else
-        {
-            ret = g_switch_set_all_single_threshold(&__globalDeviceManage._globalRelaySampManger, 
-            _globalPowerMangerSaveTemp->product_ch_type, 
-            _globalPowerMangerSaveTemp->product_saddr, 
-            _globalPowerMangerSaveTemp->product_ch_addr,
-            _globalPowerMangerSaveTemp, 0);
-        }
-
-        if (ret<0)
-        {
-            log_e("power threshold update error.ret:%d,%s",ret,modbus_strerror(errno));
-        }
-        if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One)
-        {
-            // 写入数据库
-            ret = dev_update_power_manage_over_info(__globalDeviceManage.db,
-                                                    __globalDeviceManage._globalDevInfo.product.id,
-                                                    _globalPowerMangerSaveTemp->product_ch_id,
-                                                    _globalPowerMangerSaveTemp);
-            if (ret != 0)
-                log_e("power threshold update error.");
-            GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
-            list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
-            {
-                memcpy(_pTreeACPowerMangerTemp->global_over_manager, _globalPowerMangerSaveTemp->global_over_manager, sizeof(GlobalOverManager));
-                ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db,_pTreeACPowerMangerTemp);
-            }            
-        }
-        else
-        {
-            // 写入数据库
-            ret = dev_update_power_manage_over_info(__globalDeviceManage.db,
-                                                    __globalDeviceManage._globalDevInfo.product.id,
-                                                    _globalPowerMangerSaveTemp->product_ch_id,
-                                                    _globalPowerMangerSaveTemp);
-            if (ret != 0)
-                log_e("power threshold update error.");
-        }
-        //返回数据
-        ack_str = ctrl_sts_ack_to_json();*/
     }
     else if (strcmp(_alarm_request_info.type, "batchSave") == 0) // 批量设置
     {

+ 130 - 53
pro/src/json_handle.c

@@ -3835,70 +3835,147 @@ char* alarm_power_threshold_to_json(GlobalPowerManger* _globalPowerManger)
         cJSON_AddItemToObject(data_root_array, "data", data_filed);       
     }
 
-        cJSON* data_filed = cJSON_CreateObject();
-        cJSON_AddStringToObject(data_filed,"productChName",_globalPowerManger->product_ch_name);
-        sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
-        cJSON_AddStringToObject(data_filed,"productChId",temp);   
-        cJSON_AddNumberToObject(data_filed,"dyType",_globalPowerManger->product_ch_id);
-        //sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
-        cJSON_AddStringToObject(data_filed,"productChStatus","-1");//总通道状态不显示
-        sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_cur_upper_threshold);
-        cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
-        sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_vol_upper_threshold);
-        cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
-        sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_vol_lower_threshold);
-        cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
-        sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_pwr_upper_threshold);
-        cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
-        sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_pwrcon_upper_threshold);
-        cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
-
-        if (_globalPowerManger->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+    GlobalTreeACManager* _pTreeACPowerMangerTemp = NULL ;         
+    GlobalDeviceManager *_globalDeviceManager = &__globalDeviceManage;
+    if (_globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree
+    || _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One 
+    || _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two 
+    || _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
+    {
+        _pTreeACPowerMangerTemp = NULL;
+        int nTreeACType = -1;
+        list_for_each_entry(_pTreeACPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list_Tree_AC, list_Tree_AC)
         {
-            cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
-        }
-        else
-            cJSON_AddStringToObject(data_filed, "currentUpperAction",Alarmtemp);
+            nTreeACType = _pTreeACPowerMangerTemp->product_ph_type;
+            if (nTreeACType < 0 || nTreeACType > 3) // 不是ABC相的情况直接跳过
+            {
+                continue;
+            }
 
-        if (_globalPowerManger->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
-        {
-            cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
-        }
-        else
-            cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
+            cJSON *data_filed = cJSON_CreateObject();
+            if (0 == nTreeACType)
+                cJSON_AddStringToObject(data_filed, "productChName", "ALL_L1");
+            else if (1 == nTreeACType)
+                cJSON_AddStringToObject(data_filed, "productChName", "ALL_L2");
+            else if (2 == nTreeACType)
+                cJSON_AddStringToObject(data_filed, "productChName", "ALL_L3");
+
+            sprintf(temp, "%d", _pTreeACPowerMangerTemp->product_ch_id);
+            cJSON_AddStringToObject(data_filed, "productChId", temp);
 
-        if (_globalPowerManger->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
-        {
-            cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
-        }
-        else
-            cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
+            cJSON_AddNumberToObject(data_filed, "dyType", _pTreeACPowerMangerTemp->product_ch_id);
+            // sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
+            cJSON_AddStringToObject(data_filed, "productChStatus", "-1"); // 总通道状态不显示
+            sprintf(temp, "%0.2f", _pTreeACPowerMangerTemp->global_over_manager.product_cur_upper_threshold);
+            cJSON_AddStringToObject(data_filed, "currentUpperValue", temp);
+            sprintf(temp, "%0.2f", _pTreeACPowerMangerTemp->global_over_manager.product_vol_upper_threshold);
+            cJSON_AddStringToObject(data_filed, "voltageUpperValue", temp);
+            sprintf(temp, "%0.2f", _pTreeACPowerMangerTemp->global_over_manager.product_vol_lower_threshold);
+            cJSON_AddStringToObject(data_filed, "voltageDownValue", temp);
+            sprintf(temp, "%0.2f", _pTreeACPowerMangerTemp->global_over_manager.product_pwr_upper_threshold);
+            cJSON_AddStringToObject(data_filed, "powerUpperValue", temp);
+            sprintf(temp, "%0.2f", _pTreeACPowerMangerTemp->global_over_manager.product_pwrcon_upper_threshold);
+            cJSON_AddStringToObject(data_filed, "alarmContentUpperValue", temp);
+            if (_pTreeACPowerMangerTemp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "currentUpperAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "currentUpperAction", Alarmtemp);
 
-        if (_globalPowerManger->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
-        {
-            cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
-        }
-        else
-            cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
+            if (_pTreeACPowerMangerTemp->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
 
-        if (_globalPowerManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
-        {
-            cJSON_AddStringToObject(data_filed, "alarmContentUpperAction",Closetemp);
+            if (_pTreeACPowerMangerTemp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
+
+            if (_pTreeACPowerMangerTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
+
+            if (_pTreeACPowerMangerTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
+            cJSON_AddItemToObject(data_root_array, "data", data_filed);
         }
-        else
-            cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
+    }
 
-        cJSON_AddItemToObject(data_root_array, "data", data_filed);   
+    cJSON *data_filed = cJSON_CreateObject();
+    cJSON_AddStringToObject(data_filed, "productChName", _globalPowerManger->product_ch_name);
+    sprintf(temp, "%d", _globalPowerMangerTemp->product_ch_id);
+    cJSON_AddStringToObject(data_filed, "productChId", temp);
+    cJSON_AddNumberToObject(data_filed, "dyType", _globalPowerManger->product_ch_id);
+    // sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
+    cJSON_AddStringToObject(data_filed, "productChStatus", "-1"); // 总通道状态不显示
+    sprintf(temp, "%0.2f", _globalPowerManger->global_over_manager.product_cur_upper_threshold);
+    cJSON_AddStringToObject(data_filed, "currentUpperValue", temp);
+    sprintf(temp, "%0.2f", _globalPowerManger->global_over_manager.product_vol_upper_threshold);
+    cJSON_AddStringToObject(data_filed, "voltageUpperValue", temp);
+    sprintf(temp, "%0.2f", _globalPowerManger->global_over_manager.product_vol_lower_threshold);
+    cJSON_AddStringToObject(data_filed, "voltageDownValue", temp);
+    sprintf(temp, "%0.2f", _globalPowerManger->global_over_manager.product_pwr_upper_threshold);
+    cJSON_AddStringToObject(data_filed, "powerUpperValue", temp);
+    sprintf(temp, "%0.2f", _globalPowerManger->global_over_manager.product_pwrcon_upper_threshold);
+    cJSON_AddStringToObject(data_filed, "alarmContentUpperValue", temp);
+
+    if (_globalPowerManger->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+    {
+        cJSON_AddStringToObject(data_filed, "currentUpperAction", Closetemp);
+    }
+    else
+        cJSON_AddStringToObject(data_filed, "currentUpperAction", Alarmtemp);
 
-        
+    if (_globalPowerManger->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+    {
+        cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
+    }
+    else
+        cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
 
-    //添加汇总
+    if (_globalPowerManger->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+    {
+        cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
+    }
+    else
+        cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
+
+    if (_globalPowerManger->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+    {
+        cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
+    }
+    else
+        cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
+
+    if (_globalPowerManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+    {
+        cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Closetemp);
+    }
+    else
+        cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
+
+    cJSON_AddItemToObject(data_root_array, "data", data_filed);
+
+    // 添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
-    //添加结果
+    // 添加结果
     cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
-    //转换
-    str = cJSON_Print(root);    
-    //释放资源
+    // 转换
+    str = cJSON_Print(root);
+    // 释放资源
     cJSON_Delete(root);
     return str;
 }

+ 3 - 3
pro/src/sqlite_handle.c

@@ -1993,7 +1993,7 @@ int dev_update_t_ac_power_manage_over_info(sqlite3 *db,GlobalTreeACManager* _glo
             product_ph_pwrcon_upper_threshold =%.2f,\
             product_ph_pwrcon_over_upper_threshold = %d,\
             product_ph_pwrcon_over_upper_threshold_para = %d\
-            where product_ph_outputType=%d and product_ph_outputStatus=%d;",
+            where product_ch_id_belong=%d and product_ph_order=%d;",
               _globalPowerChnManger->global_over_manager.product_vol_upper_enable,
               _globalPowerChnManger->global_over_manager.product_vol_upper_threshold,
               _globalPowerChnManger->global_over_manager.product_vol_over_upper_threshold_ctrl,
@@ -2014,8 +2014,8 @@ int dev_update_t_ac_power_manage_over_info(sqlite3 *db,GlobalTreeACManager* _glo
               _globalPowerChnManger->global_over_manager.product_pwrcon_upper_threshold,
               _globalPowerChnManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl,
               _globalPowerChnManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl_para,
-              _globalPowerChnManger->product_ph_outputType,
-              _globalPowerChnManger->product_ph_outputStatus);
+              _globalPowerChnManger->product_ch_id,
+              _globalPowerChnManger->product_ph_type);
     //printf("select_sql:%s\n", select_sql);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if (res != SQLITE_OK)