|
|
@@ -136,6 +136,35 @@ static void* power_thread(void* arg)
|
|
|
_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo,
|
|
|
_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerWarninginfo);
|
|
|
}
|
|
|
+ //计算控制板每相输入总功率因数
|
|
|
+ for (size_t p= 0;p < 3; p++)
|
|
|
+ {
|
|
|
+ float nYGPower=0;
|
|
|
+ float nSZPower=0;
|
|
|
+ for (size_t s = 0; s< AC_SINGLE_S_MAX_CHN_NUM; s++)
|
|
|
+ {
|
|
|
+ if (s%3==p)
|
|
|
+ {
|
|
|
+ nSZPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power;
|
|
|
+ nYGPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power* _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].factor;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (nSZPower>0)
|
|
|
+ {
|
|
|
+ _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = nYGPower/nSZPower;
|
|
|
+ }
|
|
|
+ else _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = 0;
|
|
|
+
|
|
|
+ if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor>1)
|
|
|
+ {
|
|
|
+ _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor=1;
|
|
|
+ }
|
|
|
+ else if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor<0)
|
|
|
+ {
|
|
|
+ _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor=0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ret = g_switch_set_t_ac_alarm_missing_ph(&_globalDeviceManager->_globalRelaySampManger,
|
|
|
_globalDeviceManager->pCtrlBoard[i].product_saddr,
|
|
|
_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger.product_MissingPH);
|
|
|
@@ -535,6 +564,7 @@ static void* power_thread(void* arg)
|
|
|
|
|
|
memset(&_globalPowerInfo._power_info, 0, sizeof(_globalPowerInfo._power_info));
|
|
|
int k = 0;
|
|
|
+ float nchYGpower = 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)
|
|
|
@@ -552,7 +582,9 @@ static void* power_thread(void* arg)
|
|
|
_globalPowerInfo._power_info.power += _pTreeACPowerMangerTemp->_PowerInfo.power;
|
|
|
_globalPowerInfo._power_info.freq =_globalPowerInfo._power_info.freq> _pTreeACPowerMangerTemp->_PowerInfo.freq?_globalPowerInfo._power_info.freq:_pTreeACPowerMangerTemp->_PowerInfo.freq;
|
|
|
_globalPowerInfo._power_info.consumption += _pTreeACPowerMangerTemp->_PowerInfo.consumption;
|
|
|
- _globalPowerInfo._power_info.factor = _pTreeACPowerMangerTemp->_PowerInfo.factor > _globalPowerInfo._power_info.factor ? _pTreeACPowerMangerTemp->_PowerInfo.factor : _globalPowerInfo._power_info.factor;
|
|
|
+ // _globalPowerInfo._power_info.factor = _pTreeACPowerMangerTemp->_PowerInfo.factor > _globalPowerInfo._power_info.factor ? _pTreeACPowerMangerTemp->_PowerInfo.factor : _globalPowerInfo._power_info.factor;
|
|
|
+ nchYGpower+=_pTreeACPowerMangerTemp->_PowerInfo.factor*_pTreeACPowerMangerTemp->_PowerInfo.power;
|
|
|
+
|
|
|
if (__globalDeviceManage.triphasic_mmap)
|
|
|
{
|
|
|
__globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
|
|
|
@@ -632,13 +664,27 @@ static void* power_thread(void* arg)
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ // 计算通道总功率因数
|
|
|
+ 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 ;
|
|
|
_globalTotalPowerInfo._power_info.current += _globalPowerInfo._power_info.current ;
|
|
|
_globalTotalPowerInfo._power_info.power += _globalPowerInfo._power_info.power ;
|
|
|
_globalTotalPowerInfo._power_info.freq = _globalPowerInfo._power_info.freq> _globalTotalPowerInfo._power_info.freq? _globalPowerInfo._power_info.freq:_globalTotalPowerInfo._power_info.freq;
|
|
|
_globalTotalPowerInfo._power_info.consumption += _globalPowerInfo._power_info.consumption ;
|
|
|
- _globalTotalPowerInfo._power_info.factor = _globalPowerInfo._power_info.factor ;
|
|
|
+ _globalTotalPowerInfo._power_info.factor = _globalPowerInfo._power_info.factor>_globalTotalPowerInfo._power_info.factor ? _globalPowerInfo._power_info.factor:_globalTotalPowerInfo._power_info.factor;
|
|
|
_globalPowerInfo.product_status = _globalPowerInfo._power_info.status ;
|
|
|
_globalPowerMangerTemp->product_ch_status = _globalPowerInfo._power_info.status ;
|
|
|
_globalPowerMangerTemp->product_ch_NF_status = _globalPowerInfo._power_info.NF_status ;
|
|
|
@@ -816,6 +862,10 @@ static void* power_thread(void* arg)
|
|
|
}
|
|
|
_powerDsManageTemp->ds_is_triggered = 1;
|
|
|
dev_update_power_ds(__globalDeviceManage.db, _globalPowerMangerTemp->product_id, _globalPowerMangerTemp->product_ch_id, _powerDsManageTemp);
|
|
|
+
|
|
|
+ char strLog[200];
|
|
|
+ sprintf(strLog, "CH%d ", _globalPowerMangerTemp->product_ch_id);
|
|
|
+ dev_Alarm_Run_message(_globalDeviceManager,strLog,"scheduled task triggered!");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -849,6 +899,8 @@ static void* power_thread(void* arg)
|
|
|
}
|
|
|
memset(&_globalDeviceManager->_globalPowerManger._PowerInfo, 0, sizeof(PowerInfo));
|
|
|
memset(&_pTreeACPowerMangerTemp->_PowerInfo, 0, sizeof(_globalPowerInfo._power_info));
|
|
|
+
|
|
|
+ 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)
|
|
|
@@ -868,8 +920,18 @@ static void* power_thread(void* arg)
|
|
|
// }
|
|
|
_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;
|
|
|
+ //_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)
|
|
|
+ {
|
|
|
+ float nfactor=nTotalYGPower / _pTreeACPowerMangerTemp->_PowerInfo.power;
|
|
|
+ if(nfactor>0&& nfactor<=1) _pTreeACPowerMangerTemp->_PowerInfo.factor=nfactor;
|
|
|
+ else _pTreeACPowerMangerTemp->_PowerInfo.factor=1;
|
|
|
+ }
|
|
|
+ else _pTreeACPowerMangerTemp->_PowerInfo.factor=1;
|
|
|
+
|
|
|
if (_globalDeviceManager->triphasic_mmap)
|
|
|
{
|
|
|
_globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
|