Parcourir la source

双火线每一项阈值配置,及告警产生,超限动作。

liyi il y a 1 an
Parent
commit
39abc1f6d9
5 fichiers modifiés avec 317 ajouts et 37 suppressions
  1. 154 17
      pro/src/app.c
  2. 20 2
      pro/src/appweb_handle.c
  3. 3 0
      pro/src/common.h
  4. 73 1
      pro/src/json_handle.c
  5. 67 17
      pro/src/sqlite_handle.c

+ 154 - 17
pro/src/app.c

@@ -1229,6 +1229,12 @@ static void* power_thread(void* arg)
 
                 if (_globalDeviceManager->triphasic_mmap)
                 {
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.consumption =  _pTreeACPowerMangerTemp->_PowerInfo.consumption;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.power       =  _pTreeACPowerMangerTemp->_PowerInfo.power;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.current     =  _pTreeACPowerMangerTemp->_PowerInfo.current;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.voltage     = _pTreeACPowerMangerTemp->_PowerInfo.voltage;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.freq = _pTreeACPowerMangerTemp->_PowerInfo.freq;
+
                     _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
                     _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_power = _pTreeACPowerMangerTemp->_PowerInfo.power * 1000;
                     _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage * 1000;
@@ -1306,6 +1312,12 @@ static void* power_thread(void* arg)
                 }
                 if (_globalDeviceManager->triphasic_mmap)
                 {
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.consumption =  _pTreeACPowerMangerTemp->_PowerInfo.consumption;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.power       =  _pTreeACPowerMangerTemp->_PowerInfo.power;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.current     =  _pTreeACPowerMangerTemp->_PowerInfo.current;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.voltage     = _pTreeACPowerMangerTemp->_PowerInfo.voltage;
+                    _globalDeviceManager->_globalPowerManger_Ph[nTreeACType]._PowerInfo.freq = _pTreeACPowerMangerTemp->_PowerInfo.freq;
+
                     _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
                     _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_power = _pTreeACPowerMangerTemp->_PowerInfo.power * 1000;
                     _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage * 1000;
@@ -1363,6 +1375,94 @@ 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
+            )
+        {
+            bool ph_Vup = false;
+            bool ph_Vdown = false;
+            bool ph_Aup = false;
+            bool ph_Power = false;
+            bool ph_Consumption = false;
+            for(int i = 0; i < 3;i++)
+            {
+                ph_Vup                  = _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_up;
+                ph_Vdown                = _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_down;
+                ph_Aup                  = _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_current;
+                ph_Power                = _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_power;
+                ph_Consumption          = _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_consumption;
+
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerInfo.voltage >= _globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_vol_upper_threshold &&
+                    (_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_vol_upper_threshold) >= 0.05)
+                {
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_up = true;
+                }
+                else
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_up = false;               
+
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerInfo.voltage <= _globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_vol_lower_threshold &&
+                    (_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_vol_lower_threshold) >= 0.05)
+                {
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_down = true;
+                }
+                else
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_down = false;       
+
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerInfo.current >= _globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_cur_upper_threshold &&
+                    (_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_cur_upper_threshold) >= 0.05)
+                {
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_current = true;
+                }
+                else
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_current = false;
+
+
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerInfo.power >= _globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_pwr_upper_threshold &&
+                    (_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_pwr_upper_threshold) >= 0.05)
+                {
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_power = true;
+                }
+                else
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_power = false;
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerInfo.consumption >= _globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_pwrcon_upper_threshold &&
+                    (_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_pwrcon_upper_threshold) >= 0.05)
+                {
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_consumption = true;
+
+                }
+                else
+                    _globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_consumption = false;
+
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_up && !ph_Vup)
+                {
+                    dev_Alarm_send_message(_globalDeviceManager,  &_globalDeviceManager->_globalPowerManger_Ph[i], WARNING_V_UP);
+                }
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_voltage_down && !ph_Vdown)
+                {
+                    dev_Alarm_send_message(_globalDeviceManager,  &_globalDeviceManager->_globalPowerManger_Ph[i], WARNING_V_DOWN);
+                }
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_current && !ph_Aup)
+                {
+                    dev_Alarm_send_message(_globalDeviceManager, &_globalDeviceManager->_globalPowerManger_Ph[i], WARNING_A_UP);
+                }
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_power && !ph_Power)
+                {
+                    dev_Alarm_send_message(_globalDeviceManager,  &_globalDeviceManager->_globalPowerManger_Ph[i], WARNING_W_UP);
+                }
+                if (_globalDeviceManager->_globalPowerManger_Ph[i]._PowerWarninginfo.w_consumption && !ph_Consumption)
+                {
+                    dev_Alarm_send_message(_globalDeviceManager,  &_globalDeviceManager->_globalPowerManger_Ph[i], WARNING_P_UP);
+                }
+                
+            }
+
+        }
+
+
+
         //判断总电源超限状态及动作防护
         {
             bool nTotalVup = _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_up;
@@ -1723,7 +1823,6 @@ static void* breaker_thread(void *arg)
     uint16_t value = 0;
     breaker_scanner_t* breaker_scann = get_breaker_scanner(); 
     uint32_t        pre_breaker_status;
-
     while (h->quit==0)
     {
         lock_s_hold(LOCK_ID_BREAKER);
@@ -1733,19 +1832,6 @@ static void* breaker_thread(void *arg)
                 break;
             }
             pre_breaker_status=temp->breaker_status ;
-            // if(temp->breaker_gather_addr != 0)
-            // {
-            //     value = 0;
-            //     r = breaker_485_get_chn_status((void*)&_globalDeviceManager->_globalRelaySampManger,
-            //     temp->breaker_gather_addr,BREADER_485_ADDR_CHN_REG+temp->breaker_chn,&value);
-            //     if(r==0) {
-            //         temp->breaker_status = value;
-            //     }
-            //   //  printf("temp->breaker_gather_addr = %d temp->breaker_chn=%d getchn value = %d\n",temp->breaker_gather_addr,temp->breaker_chn,value);
-            // }else
-            // {
-            //     //DI
-            // }
             if( temp->breaker_gather_addr>=BREADER_485_ADDR && temp->breaker_gather_addr<BREADER_485_ADDR+BREAKER_BOARD_MAX)
             {
                 if( breaker_scann->breaker_flag[temp->breaker_gather_addr-BREADER_485_ADDR] == 1)
@@ -3300,9 +3386,58 @@ int app_init(void)
         else
         {
             log_i("all chn data inserted ok.\n");
-        }        
-    } 
-    
+        }     
+        
+        
+    }
+#if 1
+    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
+        )
+    {
+        for(int i=1;i <= 3;i++)
+        {
+            ret = dev_get_power_manage_info(_globalDeviceManager->db,_globalDeviceManager->_globalDevInfo.product.id,
+                    0,
+                    i,
+                    &_globalDeviceManager->_globalPowerManger_Ph[i-1]);
+
+            if(ret==-1)
+            {
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_id = _globalDeviceManager->_globalDevInfo.product.id;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_saddr = 0;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_id = 0;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_addr = i;
+                sprintf(_globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_name,"ALL_L%d",(i));
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_type = type;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_status = 0;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_NF_status = 0;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_start_delay = 1000;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].product_ch_stop_delay = 1000;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].global_over_manager.product_cur_over_upper_threshold_ctrl =ALARM_CTRL_ALARM_ONLY;//默认超限只报警
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].global_over_manager.product_pwr_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].global_over_manager.product_pwrcon_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].global_over_manager.product_vol_over_lower_threshold_ctrl= ALARM_CTRL_ALARM_ONLY;
+                _globalDeviceManager->_globalPowerManger_Ph[i-1].global_over_manager.product_vol_over_upper_threshold_ctrl = ALARM_CTRL_ALARM_ONLY;
+                if(dev_insert_power_manage_info(_globalDeviceManager->db,
+                                _globalDeviceManager->_globalDevInfo.product.id,
+                                0,&_globalDeviceManager->_globalPowerManger_Ph[i-1])!=0)
+                {
+                    log_e("all chn data inserted error.\n");
+                    return 0;
+                }else
+                {
+                    log_i("all chn data inserted ok.\n");
+                } 
+            }
+            INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger_Ph[i-1].list);
+            INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger_Ph[i-1].list_DS);
+            INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger_Ph[i-1].list_Tree_AC);
+        }
+    }
+#endif
     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 
@@ -3459,7 +3594,9 @@ int app_init(void)
     thread_start(THREAD_ID_RECV_MESSAGE_QUEUE, recv_handler, _globalDeviceManager);
 #endif
 
+
     thread_start(THREAD_ID_BREAKER_SCANNER, breaker_scanner_thread, _globalDeviceManager);
+
     thread_start(THREAD_ID_BREAKER, breaker_thread, _globalDeviceManager);
     
 #if (CHIP_TYPE != CHIP_T113s)

+ 20 - 2
pro/src/appweb_handle.c

@@ -3030,7 +3030,17 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
     int g_pwr_ch_id = nChID;
     if (g_pwr_ch_id == 0)
     {
-        _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger;
+    //    _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger;
+#if 1
+        if(strncmp(_alarm_request_info->_pwr_info.productChName,"ALL_CH",6)== 0)
+            _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger;
+        else if(strncmp(_alarm_request_info->_pwr_info.productChName,"ALL_L1",6)== 0)
+            _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger_Ph[0];
+        else if(strncmp(_alarm_request_info->_pwr_info.productChName,"ALL_L2",6)== 0)
+            _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger_Ph[1];
+        else if(strncmp(_alarm_request_info->_pwr_info.productChName,"ALL_L3",6)== 0)
+            _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger_Ph[2];
+#endif
     }
     else
     {
@@ -3384,7 +3394,15 @@ static void alarmProtect(void *conn)
         char log_buff[256];
         if (0==g_pwr_ch_id)
         {
-            sprintf(log_buff, "Update power threshold ALL_CH!");
+            if(strncmp(_alarm_request_info._pwr_info.productChName,"ALL_CH",6)== 0)
+                sprintf(log_buff, "Update power threshold ALL_CH!");
+            else if(strncmp(_alarm_request_info._pwr_info.productChName,"ALL_L1",6)== 0)
+                sprintf(log_buff, "Update power threshold ALL_L1!");
+            else if(strncmp(_alarm_request_info._pwr_info.productChName,"ALL_L2",6)== 0)
+                sprintf(log_buff, "Update power threshold ALL_L2!");
+            else if(strncmp(_alarm_request_info._pwr_info.productChName,"ALL_L3",6)== 0)
+                sprintf(log_buff, "Update power threshold ALL_L3!");
+
         }
         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);

+ 3 - 0
pro/src/common.h

@@ -1329,6 +1329,9 @@ typedef struct
     bool                dev_samp_flag ; //电源采集线程标志
     GlobalDeviceInfo    _globalDevInfo;    //设备管理信息
     GlobalPowerManger   _globalPowerManger;      //电源管理表
+#if 1
+    GlobalPowerManger   _globalPowerManger_Ph[3]; 
+#endif
     GlobalSensorManger  _globalSensorManger;     //传感器管理表  
     Modbus_Manger       sensor_modbus_manager;  //通信接口管理
     unsigned int        useSlaveCount ;         //有效地址

+ 73 - 1
pro/src/json_handle.c

@@ -3834,6 +3834,77 @@ char* alarm_power_threshold_to_json(GlobalPowerManger* _globalPowerManger)
 
         cJSON_AddItemToObject(data_root_array, "data", data_filed);       
     }
+#if 1
+    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
+        )
+    {
+        
+
+        for(int i = 0; i < 3;i++)
+        {
+            cJSON* data_filed = cJSON_CreateObject();
+            cJSON_AddStringToObject(data_filed,"productChName",_globalDeviceManager->_globalPowerManger_Ph[i].product_ch_name);
+            sprintf(temp,"%d",_globalDeviceManager->_globalPowerManger_Ph[i].product_ch_id);
+            cJSON_AddStringToObject(data_filed,"productChId",temp);  
+
+            sprintf(temp,"L%d",_globalDeviceManager->_globalPowerManger_Ph[i].product_ch_addr);
+            cJSON_AddStringToObject(data_filed,"productPhOrder",temp);  
+            
+            cJSON_AddNumberToObject(data_filed,"dyType",_globalDeviceManager->_globalPowerManger_Ph[i].product_ch_id);
+            //sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
+            cJSON_AddStringToObject(data_filed,"productChStatus","-1");//总通道状态不显示
+            sprintf(temp,"%0.2f",_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_cur_upper_threshold);
+            cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
+            sprintf(temp,"%0.2f",_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_vol_upper_threshold);
+            cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
+            sprintf(temp,"%0.2f",_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_vol_lower_threshold);
+            cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
+            sprintf(temp,"%0.2f",_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_pwr_upper_threshold);
+            cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
+            sprintf(temp,"%0.2f",_globalDeviceManager->_globalPowerManger_Ph[i].global_over_manager.product_pwrcon_upper_threshold);
+            cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp); 
+            if (_globalDeviceManager->_globalPowerManger_Ph[i].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 (_globalDeviceManager->_globalPowerManger_Ph[i].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 (_globalDeviceManager->_globalPowerManger_Ph[i].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 (_globalDeviceManager->_globalPowerManger_Ph[i].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 (_globalDeviceManager->_globalPowerManger_Ph[i].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); 
+        }
+    }
+#endif
 
         cJSON* data_filed = cJSON_CreateObject();
         cJSON_AddStringToObject(data_filed,"productChName",_globalPowerManger->product_ch_name);
@@ -3888,9 +3959,10 @@ char* alarm_power_threshold_to_json(GlobalPowerManger* _globalPowerManger)
         else
             cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
 
-
         cJSON_AddItemToObject(data_root_array, "data", data_filed);   
 
+        
+
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果

+ 67 - 17
pro/src/sqlite_handle.c

@@ -1515,7 +1515,6 @@ int dev_get_power_info(sqlite3 *db,GlobalPowerManger* pm)
     return 0;
 }
 
-
 /// @brief 查询电源通道管理信息
 /// @param db 
 /// @param product_id 
@@ -2212,7 +2211,8 @@ int dev_update_power_manage_over_info(sqlite3 *db,int product_id,int product_ch_
                                                      "product_cur_u_threshold=%0.2f,product_cur_over_u_threshold_ctrl=%d,product_cur_over_u_threshold_para=%d,"
                                                      "product_pwr_u_enable=%d,product_pwr_u_threshold=%0.2f,product_pwr_over_u_threshold_ctrl=%d,"
                                                      "product_pwr_over_u_threshold_para=%d,product_pwrcon_u_enable=%d,product_pwrcon_u_threshold=%0.2f,"
-                                                     "product_pwrcon_over_u_threshold_ctrl=%d,product_pwrcon_over_u_threshold_para=%d WHERE product_ch_id=%d;",
+                                                     "product_pwrcon_over_u_threshold_ctrl=%d,product_pwrcon_over_u_threshold_para=%d WHERE product_ch_id=%d "
+                                                     "AND  product_ch_addr_ch_id=%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,
@@ -2233,7 +2233,7 @@ int dev_update_power_manage_over_info(sqlite3 *db,int product_id,int product_ch_
                         _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,  
-                        product_ch_id);
+                        product_ch_id,_globalPowerChnManger->product_ch_addr);
     //log_d("%s\n",select_sql);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK) {
@@ -4100,22 +4100,72 @@ int dev_Alarm_send_message(GlobalDeviceManager* globalDeviceManger,GlobalPowerMa
         || (_AlarmType==WARNING_W_UP && __globalPowerTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
         || (_AlarmType==WARNING_P_UP && __globalPowerTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH) )
         {
-                // 总关
-                int nSendAddr = 0;
-                char buff[256];
-                GlobalPowerManger *_globalPowerMangerTemp = NULL;
-                list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
+            GlobalPowerManger* _globalPowerMangerTemp = NULL ;
+            list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
+            {
+                GlobalTreeACManager* pTreeAPowerInfo = NULL;
+                if (globalDeviceManger->_globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_Tree
+                    ||globalDeviceManger->_globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_One
+                    ||globalDeviceManger->_globalDevInfo.product.pwr_type== SmartPDU_Tree_AC_Two 
+                    ||globalDeviceManger->_globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_One_B
+                    )
+                {
+                    list_for_each_entry(pTreeAPowerInfo, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
+                    {
+                        if(strncmp(pwr->product_ch_name,"ALL_L1",6) == 0)
+                        {
+                            if(pTreeAPowerInfo->product_ph_type == 0)
+                            {
+                                g_switch_set_all_chn_ctrl(&globalDeviceManger->_globalRelaySampManger,_globalPowerMangerTemp, _globalPowerMangerTemp->product_saddr,
+                                    _globalPowerMangerTemp->product_ch_addr,0,0);
+                                break;
+                            }
+                        }else if(strncmp(pwr->product_ch_name,"ALL_L2",6) == 0)
+                        {
+                            if(pTreeAPowerInfo->product_ph_type == 1)
+                            {
+                                g_switch_set_all_chn_ctrl(&globalDeviceManger->_globalRelaySampManger,_globalPowerMangerTemp, _globalPowerMangerTemp->product_saddr,
+                                    _globalPowerMangerTemp->product_ch_addr,0,0);
+                                break;
+                            }       
+                        }else if(strncmp(pwr->product_ch_name,"ALL_L3",6) == 0)
+                        {
+                            if(pTreeAPowerInfo->product_ph_type == 2)
+                            {
+                                g_switch_set_all_chn_ctrl(&globalDeviceManger->_globalRelaySampManger,_globalPowerMangerTemp ,_globalPowerMangerTemp->product_saddr,
+                                    _globalPowerMangerTemp->product_ch_addr,0,0);
+                                break;
+                            }          
+                        }
+                    }
+                    if(strncmp(pwr->product_ch_name,"ALL_CH",6) == 0)
+                    {
+                        g_switch_set_all_ctrl(&globalDeviceManger->_globalRelaySampManger, _globalPowerMangerTemp->product_ch_type, 
+                            _globalPowerMangerTemp->product_saddr, 0);
+                    }
+                }else
                 {
-                    if (_globalPowerMangerTemp == NULL)
-                        break;
-                    if (_globalPowerMangerTemp->product_saddr == nSendAddr)
-                        continue;
-                    nSendAddr = _globalPowerMangerTemp->product_saddr;
-                    log_i("Close All address Start");
-                    int rec = g_switch_set_all_ctrl(&globalDeviceManger->_globalRelaySampManger, _globalPowerMangerTemp->product_ch_type, _globalPowerMangerTemp->product_saddr, 0);
-                    if (rec < 0)
-                        log_i("Close All address:%d rec:%d:%s", nSendAddr, rec, modbus_strerror(errno));
+                    // 总关
+                    int nSendAddr = 0;
+                    char buff[256];
+                    GlobalPowerManger *_globalPowerMangerTemp = NULL;
+                    list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
+                    {
+                        if (_globalPowerMangerTemp == NULL)
+                            break;
+                        if (_globalPowerMangerTemp->product_saddr == nSendAddr)
+                            continue;
+                        nSendAddr = _globalPowerMangerTemp->product_saddr;
+                        log_i("Close All address Start");
+                        int rec = g_switch_set_all_ctrl(&globalDeviceManger->_globalRelaySampManger, _globalPowerMangerTemp->product_ch_type, _globalPowerMangerTemp->product_saddr, 0);
+                        if (rec < 0)
+                            log_i("Close All address:%d rec:%d:%s", nSendAddr, rec, modbus_strerror(errno));
+                    }
                 }
+
+            }
+
+
         }
     }