瀏覽代碼

三相ABC相报警功能开发

chenyuanjie 2 年之前
父節點
當前提交
23b1efc341
共有 4 個文件被更改,包括 106 次插入 和 9 次删除
  1. 41 2
      pro/src/app.c
  2. 7 7
      pro/src/common.h
  3. 57 0
      pro/src/json_handle.c
  4. 1 0
      pro/src/json_handle.h

+ 41 - 2
pro/src/app.c

@@ -41,6 +41,7 @@ void* power_thread(void* arg)
     GlobalTreeACManager* pTreeAPowerInfo;    //三相子电源信息
     GlobalTreeACManager* _pTreeACPowerMangerTemp = NULL ;                
     PowerWarningInfo _globalPowerWarningInfo ;
+    PowerWarningInfo _globalTACWarningInfo;
     float Vavg[3]={0.0,0.0,0.0};
     int VavgTimes[3]={0,0,0};
     struct tm* t ;
@@ -490,6 +491,7 @@ void* power_thread(void* arg)
                 case TREE_AC_TYPE:
                 {     
                     GlobalTreeACManager* _pTreeACPowerPhData = NULL ;  
+                    
                     memset(&_globalPowerInfo._power_info, 0, sizeof(_globalPowerInfo._power_info));
                     int k = 0;
                     list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
@@ -499,7 +501,7 @@ void* power_thread(void* arg)
                             continue;
                         }                        
                         memcpy(&_pTreeACPowerMangerTemp->_PowerInfo,&_globalDeviceManager->_all_ctrl_board[_pTreeACPowerMangerTemp->product_saddr]._PowerInfo[_pTreeACPowerMangerTemp->product_ch_addr - 1],sizeof(PowerInfo)); 
-                        memcpy(&_pTreeACPowerMangerTemp->_PowerWarninginfo,&_globalDeviceManager->_all_ctrl_board[_pTreeACPowerMangerTemp->product_saddr]._PowerWarninginfo[_pTreeACPowerMangerTemp->product_ch_addr - 1],sizeof(PowerWarningInfo));
+                        memcpy(&_globalTACWarningInfo,&_globalDeviceManager->_all_ctrl_board[_pTreeACPowerMangerTemp->product_saddr]._PowerWarninginfo[_pTreeACPowerMangerTemp->product_ch_addr - 1],sizeof(PowerWarningInfo));
                         gettimeofday(&tv, NULL);
                         // t = localtime(&tv.tv_sec);
                         //计算总三项总数据
@@ -547,8 +549,45 @@ void* power_thread(void* arg)
                                 log_d("ph_ch%d insert data error.\n", _pTreeACPowerMangerTemp->product_ch_id);
                             }
                         }
+                        // 判断阈值状态
+                        if (_globalTACWarningInfo.w_voltage_up != _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_up && _globalTACWarningInfo.w_voltage_up)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_up = _globalTACWarningInfo.w_voltage_up;
+                            /*高电压 */
+                            dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_V_UP);
+                        }
+                        if (_globalTACWarningInfo.w_voltage_down != _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_down && _globalTACWarningInfo.w_voltage_down)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerWarninginfo.w_voltage_down = _globalTACWarningInfo.w_voltage_down;
+                            /*低电压 */
+                            dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_V_DOWN);
+                        }
+                        if (_globalTACWarningInfo.w_current != _pTreeACPowerMangerTemp->_PowerWarninginfo.w_current && _globalTACWarningInfo.w_current)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerWarninginfo.w_current = _globalTACWarningInfo.w_current;
+                            /*高电流 */
+                            dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_A_UP);
+                        }
+                        if (_globalTACWarningInfo.w_power != _pTreeACPowerMangerTemp->_PowerWarninginfo.w_power && _globalTACWarningInfo.w_power)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerWarninginfo.w_power = _globalTACWarningInfo.w_power;
+                            /*高功率 */
+                            dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_W_UP);
+                        }
+                        if (_globalTACWarningInfo.w_consumption != _pTreeACPowerMangerTemp->_PowerWarninginfo.w_consumption && _globalTACWarningInfo.w_consumption)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerWarninginfo.w_consumption = _globalTACWarningInfo.w_consumption;
+                            /*高耗电 */
+                            dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_P_UP);
+                        }
+                        if (_globalTACWarningInfo.w_phase_loss != _pTreeACPowerMangerTemp->_PowerWarninginfo.w_phase_loss && _globalTACWarningInfo.w_phase_loss)
+                        {
+                            _pTreeACPowerMangerTemp->_PowerWarninginfo.w_phase_loss = _globalTACWarningInfo.w_phase_loss;
+                            /*缺项 */
+                            dev_Alarm_T_AC_message(_globalDeviceManager, _pTreeACPowerMangerTemp, ENABLE_TAC_STIME);
+                        }
                     }
-                    
+
                     _globalTotalPowerInfo._power_info.voltage = _globalPowerInfo._power_info.voltage ;
                     _globalTotalPowerInfo._power_info.current += _globalPowerInfo._power_info.current ;
                     _globalTotalPowerInfo._power_info.power += _globalPowerInfo._power_info.power ;

+ 7 - 7
pro/src/common.h

@@ -167,13 +167,13 @@ enum ENABLE_BIT_CTRL
 /// @brief 使能位三项
 enum ENABLE_TreeAC_CTRL
 {
-    ENABLE_TAC_V_UP     = BIT_01,
-    ENABLE_TAC_V_DOWN   = BIT_02,
-    ENABLE_TAC_A_UP     = BIT_03,
-    ENABLE_TAC_W_UP     = BIT_04,
-    ENABLE_TAC_P_UP     = BIT_05,
-    ENABLE_TAC_STIME    = BIT_06,
-    ENABLE_TAC_ETIME    = BIT_07,
+    ENABLE_TAC_V_UP     = 1,
+    ENABLE_TAC_V_DOWN   = 2,
+    ENABLE_TAC_A_UP     = 4,
+    ENABLE_TAC_W_UP     = 8,
+    ENABLE_TAC_P_UP     = 16,
+    ENABLE_TAC_STIME    = 32,
+    ENABLE_TAC_ETIME    = 64,
 };
 /// @brief 报警位
 enum WARNING_BIT_CTRL

+ 57 - 0
pro/src/json_handle.c

@@ -4305,7 +4305,64 @@ int dev_Alarm_send_message(GlobalDeviceManager* __globalDeviceManger,GlobalPower
     dev_insert_alarm_info(__globalDeviceManage.db,__globalPowerTemp->product_id,0,buffer,AlarmText);
     return 0;
 }
+/**
+ * @brief 发送 AC 设备告警信息
+ *
+ * 根据给定的告警类型,生成对应的告警文本,并将其插入到告警信息数据库中。
+ *
+ * @param __globalDeviceManger 全局设备管理器指针
+ * @param __globalPowerTemp 全局 AC 管理器指针
+ * @param _AlarmType 告警类型
+ *
+ * @return 返回值为 0 表示成功,其他值表示失败
+ */
+int dev_Alarm_T_AC_message(GlobalDeviceManager* __globalDeviceManger,GlobalTreeACManager* __globalPowerTemp,int _AlarmType)
+{
+        char AlarmText[256];
+    int languagesID=0;
+    struct tm *t;
+    switch (_AlarmType)
+    {
+    case ENABLE_TAC_V_UP:
+    {
+        sprintf(AlarmText, "$通道$|%d%c |$%s$|$%s$", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_V[languagesID], language_alarm_Up[languagesID]);
+    }
+    break;
+    case ENABLE_TAC_V_DOWN:
+    {
+        sprintf(AlarmText, "$通道$|%d%c |$%s$|$%s$", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_V[languagesID], language_alarm_Down[languagesID]);
+    }
+    break;
+    case ENABLE_TAC_A_UP:
+    {
+        sprintf(AlarmText, "$通道$|%d%c |$%s$|$%s$", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_A[languagesID], language_alarm_Up[languagesID]);
+    }
+    break;
+    case ENABLE_TAC_W_UP:
+    {
+        sprintf(AlarmText, "$通道$|%d%c |$%s$|$%s$", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_W[languagesID], language_alarm_Up[languagesID]);
+    }
+    break;
+    case ENABLE_TAC_P_UP:
+    {
+        sprintf(AlarmText, "$通道$|%d%c |$%s$|$%s$", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_P[languagesID], language_alarm_Up[languagesID]);
+    }
+    break;
+    case ENABLE_TAC_STIME:
+    case ENABLE_TAC_ETIME:
+    default:
+        sprintf(AlarmText, "$通道$|%d%c |$%s$", __globalPowerTemp->product_ch_id, 'A' + __globalPowerTemp->product_ph_type, language_alarm_NULL_ERROR[languagesID]);
+        break;
+    }
+    time_t now;
+    time(&now);
+    t = localtime(&now);
 
+    char buffer[80];
+    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);    
+    dev_insert_alarm_info(__globalDeviceManage.db,__globalPowerTemp->product_id,0,buffer,AlarmText);
+    return 0;
+}
 /**
  * @brief 发送传感器告警信息
  *

+ 1 - 0
pro/src/json_handle.h

@@ -538,6 +538,7 @@ int json_to_switch_language(const char* str);
 
 //============================================================================
 int dev_Alarm_send_message(GlobalDeviceManager* __globalDeviceManger,GlobalPowerManger* __globalPowerTemp,int _AlarmType);
+int dev_Alarm_T_AC_message(GlobalDeviceManager* __globalDeviceManger,GlobalTreeACManager* __globalPowerTemp,int _AlarmType);
 int dev_sensor_Alarm_send_message(GlobalDeviceManager* __globalDeviceManger,GlobalSensorManger* __globalPowerTemp,int _AlarmType);
 
 void InitHashTable(HashTable *table);