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

1修改级联报错问题.
2修改缺项报警问题

chenyuanjie лет назад: 2
Родитель
Сommit
bd90a1ceb5
1 измененных файлов с 69 добавлено и 40 удалено
  1. 69 40
      pro/src/app.c

+ 69 - 40
pro/src/app.c

@@ -371,7 +371,10 @@ void* power_thread(void* arg)
                                 _globalPowerInfo._power_info.status = 0;
                             }
                             if (__globalDeviceManage.triphasic_mmap)
+                            {
                             __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_status = _globalPowerInfo._power_info.status;
+                            }
+
                             time_t now;
                             time(&now);
                             t = localtime(&now);
@@ -394,15 +397,19 @@ void* power_thread(void* arg)
                                 }
                             }
                         }
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_consumption  = _globalTotalPowerInfo._power_info.consumption * 1000;
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_freq  = _globalTotalPowerInfo._power_info.freq * 1000;
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_power  = _globalTotalPowerInfo._power_info.power * 1000;
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_factor  = _globalTotalPowerInfo._power_info.factor * 1000;
-                    _globalDeviceManager->triphasic_mmap->chn_status[_chn] = _globalPowerInfo._power_info.status;
-                    _globalDeviceManager->triphasic_mmap->open_delay[_chn] = _globalPowerMangerTemp->product_ch_start_delay;
-                    _globalDeviceManager->triphasic_mmap->close_delay[_chn] = _globalPowerMangerTemp->product_ch_stop_delay;
-
-                    
+                        if (__globalDeviceManage.triphasic_mmap)
+                        {
+                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_consumption = _globalTotalPowerInfo._power_info.consumption * 1000;
+                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_freq = _globalTotalPowerInfo._power_info.freq * 1000;
+                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_power = _globalTotalPowerInfo._power_info.power * 1000;
+                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_factor = _globalTotalPowerInfo._power_info.factor * 1000;
+                        }
+                        if (_globalDeviceManager->triphasic_mmap)
+                        {
+                            _globalDeviceManager->triphasic_mmap->chn_status[_chn] = _globalPowerInfo._power_info.status;
+                            _globalDeviceManager->triphasic_mmap->open_delay[_chn] = _globalPowerMangerTemp->product_ch_start_delay;
+                            _globalDeviceManager->triphasic_mmap->close_delay[_chn] = _globalPowerMangerTemp->product_ch_stop_delay;
+                        }
                     }
                 }
                 break;
@@ -553,13 +560,15 @@ void* power_thread(void* arg)
                         _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;
+                        if (__globalDeviceManage.triphasic_mmap)
+                        {
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_current = _pTreeACPowerMangerTemp->_PowerInfo.current * 1000;
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_power = _pTreeACPowerMangerTemp->_PowerInfo.power * 1000;
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage * 1000;
+                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_type = _pTreeACPowerMangerTemp->product_ph_type;
+                        }
 
-                        __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
-                        __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_current = _pTreeACPowerMangerTemp->_PowerInfo.current * 1000;
-                        __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_power = _pTreeACPowerMangerTemp->_PowerInfo.power * 1000;
-                        __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage * 1000;
-                        __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_type = _pTreeACPowerMangerTemp->product_ph_type;
-                        
                         if(_globalPowerInfo._power_info.status==0)
                         {
                             _globalPowerInfo._power_info.status=_pTreeACPowerMangerTemp->_PowerInfo.status;
@@ -568,7 +577,10 @@ void* power_thread(void* arg)
                         {
                             _globalPowerInfo._power_info.status=0;
                         }
-                        __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_status = _globalPowerInfo._power_info.status;
+                        if (__globalDeviceManage.triphasic_mmap)
+                        {
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_status = _globalPowerInfo._power_info.status;
+                        }
 
                         _globalPowerInfo._power_info.NF_status=_pTreeACPowerMangerTemp->_PowerInfo.NF_status;
 
@@ -639,13 +651,19 @@ void* power_thread(void* arg)
                      _globalPowerMangerTemp->product_ch_NF_status = _globalPowerInfo._power_info.NF_status ;
 
                     // tong dao zong ti xin xi
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_consumption  = _globalTotalPowerInfo._power_info.consumption * 1000;
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_freq  = _globalTotalPowerInfo._power_info.freq * 1000;
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_power  = _globalTotalPowerInfo._power_info.power * 1000;
-                    __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_factor  = _globalTotalPowerInfo._power_info.factor * 1000;
-                    _globalDeviceManager->triphasic_mmap->chn_status[_chn] = _globalPowerInfo._power_info.status;
-                    _globalDeviceManager->triphasic_mmap->open_delay[_chn] = _globalPowerMangerTemp->product_ch_start_delay;
-                    _globalDeviceManager->triphasic_mmap->close_delay[_chn] = _globalPowerMangerTemp->product_ch_stop_delay;
+                     if (__globalDeviceManage.triphasic_mmap)
+                     {
+                         __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_consumption = _globalTotalPowerInfo._power_info.consumption * 1000;
+                         __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_freq = _globalTotalPowerInfo._power_info.freq * 1000;
+                         __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_power = _globalTotalPowerInfo._power_info.power * 1000;
+                         __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_factor = _globalTotalPowerInfo._power_info.factor * 1000;
+                     }
+                     if (_globalDeviceManager->triphasic_mmap)
+                     {
+                         _globalDeviceManager->triphasic_mmap->chn_status[_chn] = _globalPowerInfo._power_info.status;
+                         _globalDeviceManager->triphasic_mmap->open_delay[_chn] = _globalPowerMangerTemp->product_ch_start_delay;
+                         _globalDeviceManager->triphasic_mmap->close_delay[_chn] = _globalPowerMangerTemp->product_ch_stop_delay;
+                     }
 
                     //累加总电源信息
                     _globalTotalPowerInfo.product_id = _globalDeviceManager->_globalDevInfo.product_id;
@@ -715,27 +733,33 @@ void* power_thread(void* arg)
                         /*高耗电 */
                         if(_globalPowerWarningInfo.w_consumption)dev_Alarm_send_message(_globalDeviceManager,_globalPowerMangerTemp,WARNING_P_UP);
                     }
-                    int nMissPH[3]={0};
-                    memcpy(nMissPH,_globalDeviceManager->_all_ctrl_board[(int)_globalPowerMangerTemp->product_saddr]._globalPowerInManger.product_MissingPH,sizeof(nMissPH));                    
-                    if (_globalTACWarningInfo.w_phase_lossA != nMissPH[0])
+                    bool nMissPH=0;
+                    //memcpy(nMissPH,_globalDeviceManager->_all_ctrl_board[(int)_globalPowerMangerTemp->product_saddr]._globalPowerInManger.product_MissingPH,sizeof(nMissPH));   
+                    nMissPH=_globalDeviceManager->_all_ctrl_board[(int)_globalPowerMangerTemp->product_saddr]._globalPowerInManger.product_MissingPH[0];
+                    if (_globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossA!= (bool)nMissPH)
                     {
-                        _globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossA = nMissPH[0];
+                        _globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossA = (bool)nMissPH;
+                        _globalPowerWarningInfo.w_phase_lossA=nMissPH;                        
                         /*缺项 */
-                        if (_globalTACWarningInfo.w_phase_lossA)
+                        if (_globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossA)
                             dev_Alarm_send_message(_globalDeviceManager, _globalPowerMangerTemp, 0);
                     }
-                    if (_globalTACWarningInfo.w_phase_lossB != nMissPH[1])
+                    nMissPH=_globalDeviceManager->_all_ctrl_board[(int)_globalPowerMangerTemp->product_saddr]._globalPowerInManger.product_MissingPH[1];
+                    if (_globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossB != (bool)nMissPH)
                     {
-                        _globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossB = nMissPH[1];
+                        _globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossB = (bool)nMissPH;
+                        _globalPowerWarningInfo.w_phase_lossB=nMissPH;
                         /*缺项 */
-                        if (_globalTACWarningInfo.w_phase_lossB)
+                        if (_globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossB)
                             dev_Alarm_send_message(_globalDeviceManager, _globalPowerMangerTemp, 1);
                     }
-                    if (_globalTACWarningInfo.w_phase_lossC != nMissPH[2])
+                    nMissPH=_globalDeviceManager->_all_ctrl_board[(int)_globalPowerMangerTemp->product_saddr]._globalPowerInManger.product_MissingPH[2];
+                    if (_globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossC != (bool)nMissPH)
                     {
-                        _globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossC = nMissPH[2];
+                        _globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossC = (bool)nMissPH;
+                        _globalPowerWarningInfo.w_phase_lossC=nMissPH;
                         /*缺项 */
-                        if (_globalTACWarningInfo.w_phase_lossC)
+                        if (_globalPowerMangerTemp->_PowerWarninginfo.w_phase_lossC)
                             dev_Alarm_send_message(_globalDeviceManager, _globalPowerMangerTemp, 2);
                     }
                     /*
@@ -849,11 +873,13 @@ void* power_thread(void* arg)
                     _pTreeACPowerMangerTemp->_PowerInfo.consumption += _globalDeviceManager->_all_ctrl_board[i]._globalPowerInManger._PowerInfo[nTreeACType].consumption;
                     _pTreeACPowerMangerTemp->_PowerInfo.factor = _globalDeviceManager->_all_ctrl_board[i]._globalPowerInManger._PowerInfo[nTreeACType].factor;
                 }
-                _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;
-                _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_current = _pTreeACPowerMangerTemp->_PowerInfo.current *1000;
-
+                if (_globalDeviceManager->triphasic_mmap)
+                {
+                    _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;
+                    _globalDeviceManager->triphasic_mmap->i_total.pw_i_total[nTreeACType].i_total_current = _pTreeACPowerMangerTemp->_PowerInfo.current * 1000;
+                }
                 time_t now;
                 time(&now);
                 t = localtime(&now);
@@ -875,7 +901,10 @@ void* power_thread(void* arg)
                     }
                 }
             }
-            __globalDeviceManage.triphasic_mmap->dev_chn = __globalDeviceManage._globalDevInfo.product_pwr_type << 8 | _chn;
+            if (__globalDeviceManage.triphasic_mmap)
+            {
+                __globalDeviceManage.triphasic_mmap->dev_chn = __globalDeviceManage._globalDevInfo.product_pwr_type << 8 | _chn;
+            }
         }
         if (__globalDeviceManage._globalDevInfo.product_pwr_type == SmartPDU_Tree_AC_One_B)
         {