Procházet zdrojové kódy

增加了阈值初始化设置功能

chenyj před 1 rokem
rodič
revize
58ac4d90e5
2 změnil soubory, kde provedl 42 přidání a 6 odebrání
  1. 35 2
      pro/src/app.c
  2. 7 4
      pro/src/switch_ctrl.c

+ 35 - 2
pro/src/app.c

@@ -40,6 +40,7 @@
 static void* power_thread(void* arg)
 {
     int ret = 0 ;
+    bool isFirstRun=false;//标记地第一轮运行
     GlobalPowerManger* _globalPowerMangerTemp = NULL ;
     GlobalPowerInfo _globalPowerInfo ;
     GlobalPowerInfo _globalTotalPowerInfo ; //总电源信息
@@ -68,7 +69,8 @@ static void* power_thread(void* arg)
 
     dev_search_last_Index(_globalDeviceManager->db, &lastIndex, tabPower);       // 查询日志最大点
     dev_search_last_Index(_globalDeviceManager->db, &lastIndex3, tabPower3);      // 查询日志最大点
-
+    //初始化启动延时
+    log_d("START_INI_DELAY");
     list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
     {
         ret = g_switch_set_all_start_time_delay(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_ch_type,_globalPowerMangerTemp->product_saddr,_globalPowerMangerTemp->product_ch_addr,_globalPowerMangerTemp->product_ch_start_delay);
@@ -99,7 +101,37 @@ static void* power_thread(void* arg)
             }
         }
     }
-
+    // 初始化阈值信息
+    log_d("START_INI_TRESTHOLD");
+    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)
+    {
+        log_d("TRESTHOLD_TAC_INI");
+        list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
+        {
+            GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
+            list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
+            {
+                _pTreeACPowerMangerTemp->global_over_manager = _globalPowerMangerTemp->global_over_manager;
+                ret = g_switch_set_all_single_threshold(&__globalDeviceManage._globalRelaySampManger,
+                                                        _globalPowerMangerTemp->product_ch_type,
+                                                        _pTreeACPowerMangerTemp->product_saddr,
+                                                        _pTreeACPowerMangerTemp->product_ch_addr,
+                                                        _globalPowerMangerTemp, 0);
+            }
+        }
+    }
+    else
+    {
+        log_d("TRESTHOLD_AC/DC_INI");
+        list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
+        {
+            ret = g_switch_set_all_single_threshold(&__globalDeviceManage._globalRelaySampManger,
+                                                    _globalPowerMangerTemp->product_ch_type,
+                                                    _globalPowerMangerTemp->product_saddr,
+                                                    _globalPowerMangerTemp->product_ch_addr,
+                                                    _globalPowerMangerTemp,0);
+        }
+    }
     //采集线程
     while (h->quit==0)
     {
@@ -1091,6 +1123,7 @@ static void* power_thread(void* arg)
             }
         }
 
+
         //all 
         if(__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_AC
          || __globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_DC)

+ 7 - 4
pro/src/switch_ctrl.c

@@ -566,7 +566,7 @@ int g_switch_set_ac_single_threshold(void* manger,int saddr,char chn,GlobalOverM
 
     int ret= g_modbus_write_x_reg(manger,saddr,offset,16,data_buf);
 
-    //log_d("threshold_Addr:%d OffSet:%d Ret=%d",saddr,offset,ret);
+    log_d("AC_threshold_Addr:%d OffSet:%d Ret=%d",saddr,offset,ret);
     return ret;
 }
 int g_switch_set_ac_reset(void *manger, int saddr)
@@ -1140,6 +1140,7 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
     case AC_SINGLE_B_TYPE:
     {
         ret = g_switch_set_ac_single_threshold(manger, saddr, (chn - 1), _global_over_manager);
+        log_d("AC_threshold_Addr:%d OffSet:%d Ret=%d",saddr,(chn - 1),ret);
         if(setCh)  ret = g_switch_set_ac_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
     }
     break;
@@ -1155,7 +1156,7 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
         ret = g_switch_set_dcpdu_max_cur_threshold(manger, saddr, (chn - 1), _global_over_manager);
         ret = g_switch_set_dcpdu_max_power_threshold(manger, saddr, (chn - 1), _global_over_manager);
         ret = g_switch_set_dcpdu_max_pwrcon_threshold(manger, saddr, (chn - 1), _global_over_manager);
-
+        log_d("DC_threshold_Addr:%d OffSet:%d Ret=%d",saddr,(chn - 1),ret);
         if(setCh)  ret = g_switch_set_dcpdu_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
         
     }
@@ -1166,6 +1167,7 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
         if (chn == 0)
         {
             ret = g_switch_set_t_ac_in_threshold(manger, saddr, _global_over_manager);
+            log_d("TAC_Ch_threshold_Addr:%d OffSet:%d Ret=%d",saddr,(chn - 1),ret);
             if(setCh) {
                 ret = g_switch_set_t_ac_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
                 if (ret < 0)
@@ -1176,6 +1178,7 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
         }
         else
         {
+
             ret = g_switch_set_t_ac_max_vol_threshold(manger, saddr, (chn - 1), _global_over_manager);
             if (ret < 0)
             {
@@ -1201,7 +1204,7 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
             {
                 log_e("Threshold Set Error=%s", modbus_strerror(errno));
             }
-
+            log_d("TAC_Ph_threshold_Addr:%d OffSet:%d Ret=%d",saddr,(chn - 1),ret);
             if(setCh) {
                 ret = g_switch_set_t_ac_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
                 if (ret < 0)
@@ -3520,7 +3523,7 @@ int g_switch_get_ac_breaker_info(void* manger,int saddr,GlobalBreakerManager* _b
     ret = g_modbus_read_x_reg(manger, saddr, offset, 1, data_temp);
     if (ret < 0)
     {
-        log_w("g_switch_get_ac_breaker_info:%d OffSet:%d Ret=%d:%s", saddr, offset, ret, modbus_strerror(errno));
+        //log_w("g_switch_get_ac_breaker_info:%d OffSet:%d Ret=%d:%s", saddr, offset, ret, modbus_strerror(errno));
         // log_d("threshold_Addr:%d OffSet:%d Ret=%d",saddr,offset,ret);
         return ret;
     }