Переглянути джерело

1、南网智能项目添加断路器断开控制通道继电器断开功能

liyuezong 1 рік тому
батько
коміт
8cc4d4c4a2
2 змінених файлів з 39 додано та 4 видалено
  1. 4 4
      pro/config/cfg.h
  2. 35 0
      pro/src/app.c

+ 4 - 4
pro/config/cfg.h

@@ -22,10 +22,10 @@
 //#define PRJ_HYPERTEC_AC_I3_O1
 //#define PRJ_SG_I3_O3
 //#define PRJ_TEST
-#define PRJ_TEST_AC_I1_O1
+//#define PRJ_TEST_AC_I1_O1
 //#define PRJ_TEST_AC_I3_O1
 //#define PRJ_TEST_AC_I3_O3
-//#define PRJ_ESOUTH_DC_I1_O4_RGB5
+#define PRJ_ESOUTH_DC_I1_O4_RGB5
 
 //#define PRJ_IP_AC_I3_O3
 //#define PRJ_INST2302_DC_OLED
@@ -47,8 +47,7 @@
 #define USE_MQTT
 #define MQTT_SERVER_BUILTIN
 
-//#define USE_WIFI
-//#define GNSS_ENABLE               //EC200N-CN, ²»Ö§³Ögnss
+//#define GNSS_ENABLE               //EC200N-CN, �支�gnss
 
 #define USE_BOARD_UPGRADE
 
@@ -297,6 +296,7 @@
     #define SCREEN_RGB
     #define USE_WATCHDOG
     #define BRD_MAX                             10
+    #define USE_SMART_DETECTION_CTRL    1
 #elif (defined PRJ_IP_AC_I3_O1)
     #define LANGUAGE                            0
     #define SMPLE_TIME                          30          //ms

+ 35 - 0
pro/src/app.c

@@ -1581,6 +1581,41 @@ static void* breaker_thread(void *arg)
                     if (chn>=1&& chn<=BREAKER_485_CHN_MAX)
                     {
                         temp->breaker_status = breaker_scann->board[temp->breaker_gather_addr-BREADER_485_ADDR].ch_status[chn-1];
+#if USE_SMART_DETECTION_CTRL
+                        if( temp->breaker_status == 0 && chn >=2 && chn <= 5)               //close
+                        {
+                           uint16_t close_id = temp->breaker_id;
+                           if(close_id > 6)
+                           {
+                                close_id -= 2;              // 2 路断路器
+                           }else
+                           {
+                                close_id -= 1;            // 1 路断路器 
+                           }
+                           GlobalPowerManger* _globalPowerMangerTemp = NULL ;
+                            list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+                            {
+                                if((close_id == _globalPowerMangerTemp->product_ch_id) && (_globalPowerMangerTemp->product_ch_status== 1))
+                                {
+                                    int ret= g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger,
+                                                              _globalPowerMangerTemp,
+                                                              _globalPowerMangerTemp->product_saddr,
+                                                              _globalPowerMangerTemp->product_ch_addr, 
+                                                              0,false);
+                                    if(ret < 0)
+                                    {
+                                         ret= g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger,
+                                                              _globalPowerMangerTemp,
+                                                              _globalPowerMangerTemp->product_saddr,
+                                                              _globalPowerMangerTemp->product_ch_addr, 
+                                                              0,false);
+                                    }
+                                    log_d("close channel = %d\n",close_id);
+                                    break;
+                                }                                
+                            }
+                        }
+#endif
                     }
                 }else
                 {