|
|
@@ -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)
|