Quellcode durchsuchen

1、修改双火线级联错误;2、恢复断路器报警可选功能

liyuezong vor 1 Jahr
Ursprung
Commit
b60a125968
3 geänderte Dateien mit 48 neuen und 29 gelöschten Zeilen
  1. 2 0
      pro/config/cfg.h
  2. 40 29
      pro/src/app.c
  3. 6 0
      pro/src/sqlite_handle.c

+ 2 - 0
pro/config/cfg.h

@@ -338,6 +338,8 @@
     #define USE_BEEP                            1
     #define USE_LED                             1
 
+    #define USE_BREAKER_ALARM
+
     
 #elif defined PRJ_YUNNAN_AC_I1_O1
     #define LANGUAGE                            0           //chinese

+ 40 - 29
pro/src/app.c

@@ -109,7 +109,6 @@ static void* power_thread(void* arg)
             continue;
         }
         
-#if (1)
         memset(&_globalTotalPowerInfo, 0, sizeof(GlobalPowerInfo));
         memset(&_globalPowerWarningInfo, 0, sizeof(PowerWarningInfo));
         for (size_t i = 0; i <= _globalDeviceManager->brdMax; i++)
@@ -681,7 +680,6 @@ static void* power_thread(void* arg)
                     }
 
                     // 处理通道开关状态
-                    int k = 0;
                     int allphOutNum=0;
                     int allphOpenNum=0;
                     list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
@@ -690,13 +688,49 @@ static void* power_thread(void* arg)
                         if (_pTreeACPowerMangerTemp->product_ph_outputStatus == 1)
                         {
                             allphOutNum++;
-
                             if (_pTreeACPowerMangerTemp->_PowerInfo.status==1)
                             {
                                 allphOpenNum++;
                             }
                             _globalPowerInfo._power_info.NF_status = _pTreeACPowerMangerTemp->_PowerInfo.NF_status;
                         }
+                    }
+
+                    if (allphOpenNum == allphOutNum)
+                    {
+                        _globalPowerInfo._power_info.status = 1;
+                    }
+                    else
+                    {
+                        _globalPowerInfo._power_info.status = 0;
+                    }
+
+                    // 计算通道总功率因数
+                    if (_globalPowerInfo._power_info.power > 0)
+                    {
+                        _globalPowerInfo._power_info.factor = nchYGpower / _globalPowerInfo._power_info.power;
+                    }
+                    else
+                    {
+                        _globalPowerInfo._power_info.factor = 0;
+                    }
+                    if (_globalPowerInfo._power_info.factor > 1)
+                        _globalPowerInfo._power_info.factor = 1;
+                    else if (_globalPowerInfo._power_info.factor < 0)
+                        _globalPowerInfo._power_info.factor = 0;
+
+                    // 处理级联相信息
+                    int k = 0;
+                    list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
+                    {
+                        if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One && _pTreeACPowerMangerTemp->product_ph_outputStatus == 2)
+                        {
+                            continue;
+                        }
+                        if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two && _pTreeACPowerMangerTemp->product_ph_type != _globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr].nLeft_phType && _pTreeACPowerMangerTemp->product_ph_type != _globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr].nRight_phType)
+                        {
+                            continue;
+                        }
                         _globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq=_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq> _pTreeACPowerMangerTemp->_PowerInfo.freq?_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq:_pTreeACPowerMangerTemp->_PowerInfo.freq;
                         if (__globalDeviceManage.triphasic_mmap)
                         {
@@ -790,29 +824,6 @@ static void* power_thread(void* arg)
                         k = k + 1;
                     }
 
-                    if (allphOpenNum == allphOutNum)
-                    {
-                        _globalPowerInfo._power_info.status = 1;
-                    }
-                    else
-                    {
-                        _globalPowerInfo._power_info.status = 0;
-                    }
-
-                    // 计算通道总功率因数
-                    if (_globalPowerInfo._power_info.power > 0)
-                    {
-                        _globalPowerInfo._power_info.factor = nchYGpower / _globalPowerInfo._power_info.power;
-                    }
-                    else
-                    {
-                        _globalPowerInfo._power_info.factor = 0;
-                    }
-                    if (_globalPowerInfo._power_info.factor > 1)
-                        _globalPowerInfo._power_info.factor = 1;
-                    else if (_globalPowerInfo._power_info.factor < 0)
-                        _globalPowerInfo._power_info.factor = 0;
-
                     // 计算总电源信息
                     _globalTotalPowerInfo._power_info.voltage = _globalPowerInfo._power_info.voltage*sqrt(3);
                     _globalTotalPowerInfo._power_info.current += _globalPowerInfo._power_info.current ;
@@ -824,7 +835,7 @@ static void* power_thread(void* arg)
                     _globalPowerMangerTemp->product_ch_status = _globalPowerInfo._power_info.status ;
                      _globalPowerMangerTemp->product_ch_NF_status = _globalPowerInfo._power_info.NF_status ;
 
-                    // tong dao zong ti xin xi
+                    // 级联通道总体信息
                      if (__globalDeviceManage.triphasic_mmap)
                      {
                          __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_consumption = _globalTotalPowerInfo._power_info.consumption * 1000;
@@ -1008,7 +1019,6 @@ static void* power_thread(void* arg)
             _chn+=1;
             //nanosleep(&reqSleep, NULL); 
             //usleep(usleepTime);
-            #endif
 
 
             //-- 临时加的通道是否可控 lyz 2025.05.01----
@@ -1800,7 +1810,7 @@ static void* breaker_thread(void *arg)
             {
                 hlw8110_read_Status(NULL,(int*)(&temp->breaker_status));
             }
-            
+#ifdef USE_BREAKER_ALARM
             if (pre_breaker_status && !temp->breaker_status)
             {
                 time_t now;
@@ -1817,6 +1827,7 @@ static void* breaker_thread(void *arg)
 
                 set_led_beep(LED_MODE_WARN2, BEEP_MODE_WARN2);
             }
+#endif
         }
         lock_s_release(LOCK_ID_BREAKER);
         sleep(1);

+ 6 - 0
pro/src/sqlite_handle.c

@@ -542,8 +542,13 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
                     }
                 }
             }
+            int phnum=0;
             list_for_each_entry(_TreeACTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
             {
+                if (_globalPowerMangerTemp->product_ch_type==DOUBLE_AC_TYPE&&phnum>=2 )
+                {
+                    continue;
+                }
                 _OverChnPwrAckInfo *_overChnPwrBackInfoTemp = (_OverChnPwrAckInfo *)malloc(sizeof(_OverChnPwrAckInfo));
                 if (_overChnPwrBackInfoTemp == NULL)
                 {
@@ -614,6 +619,7 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
             #endif
 
                 list_add_tail(&_overChnPwrBackInfoTemp->list, &__overChnPwrAckInfo->list);
+                phnum++;
             }
         }
         else