Просмотр исходного кода

修改总体设备状态的取值,并增加启动时ph通道状态的更新

chenyuanjie 1 год назад
Родитель
Сommit
9883b6954c
2 измененных файлов с 71 добавлено и 16 удалено
  1. 62 15
      pro/src/app.c
  2. 9 1
      pro/src/switch_ctrl.c

+ 62 - 15
pro/src/app.c

@@ -85,6 +85,19 @@ static void* power_thread(void* arg)
             g_switch_set_all_stop_time_delay(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_ch_type,_globalPowerMangerTemp->product_saddr,_globalPowerMangerTemp->product_ch_addr,_globalPowerMangerTemp->product_ch_stop_delay);
         }
         //usleep(300000);
+        if (_globalPowerMangerTemp->product_ch_type == DOUBLE_AC_TYPE)
+        {
+            GlobalTreeACManager *_globalTACManager = NULL;
+            list_for_each_entry(_globalTACManager, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
+            {
+                short nCtrlType = 2;
+                if (_globalTACManager->product_ph_outputStatus == 1)
+                {
+                    nCtrlType = 0;
+                }
+                g_switch_set_t_ac_ph_ctrl_mode(&__globalDeviceManage._globalRelaySampManger, _globalTACManager->product_saddr, _globalTACManager->product_ch_addr - 1, nCtrlType);
+            }
+        }
     }
 
     //采集线程
@@ -1048,26 +1061,60 @@ static void* power_thread(void* arg)
                 float nTotalYGPower=0;//相总的有功功率
                 for (size_t i = 0; i <= _globalDeviceManager->brdMax; i++)
                 {
-                    if (_globalDeviceManager->pCtrlBoard[i].product_saddr == 0 || _globalDeviceManager->pCtrlBoard[i].product_type != TREE_AC_TYPE||_globalDeviceManager->pCtrlBoard[i].product_type != DOUBLE_AC_TYPE)
+                    if (_globalDeviceManager->pCtrlBoard[i].product_saddr == 0 || (_globalDeviceManager->pCtrlBoard[i].product_type != TREE_AC_TYPE&&_globalDeviceManager->pCtrlBoard[i].product_type != DOUBLE_AC_TYPE))
                     {
                         continue;
                     }
-                    // 如果存在电压则置位如果都没有电压则保持0
-                    if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].voltage != 0)
+                    if (_globalDeviceManager->pCtrlBoard[i].product_type == DOUBLE_AC_TYPE)
                     {
-                        _pTreeACPowerMangerTemp->_PowerInfo.voltage = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].voltage;
-                        
+                        int nFromIndex = 0;
+                        if (_globalDeviceManager->pCtrlBoard[i].nLeft_phType == nTreeACType)
+                        {
+                            nFromIndex=0;
+                            // 如果存在电压则置位如果都没有电压则保持0
+                            if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].voltage != 0)
+                            {
+                                _pTreeACPowerMangerTemp->_PowerInfo.voltage = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].voltage;
+                            }
+                            _pTreeACPowerMangerTemp->_PowerInfo.current += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].current;
+                            _pTreeACPowerMangerTemp->_PowerInfo.power += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].power;
+                            _pTreeACPowerMangerTemp->_PowerInfo.freq = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].freq > _pTreeACPowerMangerTemp->_PowerInfo.freq ? _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].freq : _pTreeACPowerMangerTemp->_PowerInfo.freq;
+                            _pTreeACPowerMangerTemp->_PowerInfo.consumption += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].consumption;
+                            nTotalYGPower += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].factor * _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].power;
+                        }
+                        if (_globalDeviceManager->pCtrlBoard[i].nRight_phType == nTreeACType)
+                        {
+                            nFromIndex=1;
+                            // 如果存在电压则置位如果都没有电压则保持0
+                            if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].voltage != 0)
+                            {
+                                _pTreeACPowerMangerTemp->_PowerInfo.voltage = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].voltage;
+                            }
+                            _pTreeACPowerMangerTemp->_PowerInfo.current += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].current;
+                            _pTreeACPowerMangerTemp->_PowerInfo.power += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].power;
+                            _pTreeACPowerMangerTemp->_PowerInfo.freq = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].freq > _pTreeACPowerMangerTemp->_PowerInfo.freq ? _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].freq : _pTreeACPowerMangerTemp->_PowerInfo.freq;
+                            _pTreeACPowerMangerTemp->_PowerInfo.consumption += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].consumption;
+                            nTotalYGPower += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].factor * _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nFromIndex].power;
+                        }
+                    }
+                    else
+                    {
+                        // 如果存在电压则置位如果都没有电压则保持0
+                        if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].voltage != 0)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerInfo.voltage = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].voltage;
+                        }
+                        _pTreeACPowerMangerTemp->_PowerInfo.current += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].current;
+                        _pTreeACPowerMangerTemp->_PowerInfo.power += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].power;
+                        // if (_globalTotalPowerInfo._power_info.freq != 0)
+                        //  {
+                        //   _pTreeACPowerMangerTemp->_PowerInfo.freq = _globalTotalPowerInfo._power_info.freq;
+                        // }
+                        _pTreeACPowerMangerTemp->_PowerInfo.freq = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].freq > _pTreeACPowerMangerTemp->_PowerInfo.freq ? _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].freq : _pTreeACPowerMangerTemp->_PowerInfo.freq;
+                        _pTreeACPowerMangerTemp->_PowerInfo.consumption += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].consumption;
+                        //_pTreeACPowerMangerTemp->_PowerInfo.factor = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].factor;
+                        nTotalYGPower += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].factor * _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].power;
                     }
-                    _pTreeACPowerMangerTemp->_PowerInfo.current += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].current;
-                    _pTreeACPowerMangerTemp->_PowerInfo.power += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].power;
-                   // if (_globalTotalPowerInfo._power_info.freq != 0)
-                  //  {
-                     //   _pTreeACPowerMangerTemp->_PowerInfo.freq = _globalTotalPowerInfo._power_info.freq;
-                   // }
-                     _pTreeACPowerMangerTemp->_PowerInfo.freq =  _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].freq> _pTreeACPowerMangerTemp->_PowerInfo.freq? _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].freq: _pTreeACPowerMangerTemp->_PowerInfo.freq;
-                    _pTreeACPowerMangerTemp->_PowerInfo.consumption += _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].consumption;
-                    //_pTreeACPowerMangerTemp->_PowerInfo.factor = _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].factor;
-                    nTotalYGPower+=_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].factor*_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[nTreeACType].power;
                 }
                 //计算每相总功率因数
                 if (_pTreeACPowerMangerTemp->_PowerInfo.power>0)

+ 9 - 1
pro/src/switch_ctrl.c

@@ -3583,6 +3583,14 @@ int g_switch_set_t_ac_ph_ctrl_mode(void *manger,int saddr,int nChn,short CtrlTyp
     int ret = 0;
     offset = _SWITCH_T_AC_PH_CTRLMODE+nChn;
 
-    ret = g_modbus_write_reg(manger, saddr, offset,CtrlType);
+    ret = g_modbus_write_reg(manger, saddr, offset, CtrlType);
+    if (ret >= 0)
+    {
+        log_d("PHCtrl_Mode:%d ch:%d OffSet:%d Time:%d Ret=%d", saddr, nChn, offset, time, ret);
+    }
+    else
+    {
+        log_w("PHCtrl_Mode:%d ch:%d OffSet:%d Time:%d Ret=%d:%s", saddr, nChn, offset, time, ret, modbus_strerror(errno));
+    }
     return ret;
 }