Bläddra i källkod

MOD:增加单向控制设置到控制板上的功能

chenyuanjie 1 år sedan
förälder
incheckning
d4a6a6cccb
4 ändrade filer med 39 tillägg och 2 borttagningar
  1. 13 0
      pro/src/appweb_handle.c
  2. 9 1
      pro/src/sqlite_handle.c
  3. 13 0
      pro/src/switch_ctrl.c
  4. 4 1
      pro/src/switch_ctrl.h

+ 13 - 0
pro/src/appweb_handle.c

@@ -2057,6 +2057,12 @@ static void channelStatusMonitoring(void* conn)
                     {
                         _globalTACManager->product_ph_outputStatus = 2;
                     }
+                    short nCtrlType=2;
+                    if (_globalTACManager->product_ph_outputStatus == 1)
+                    {
+                        nCtrlType= 0;
+                    }
+                    g_switch_set_t_ac_ph_ctrl_mode(&__globalDeviceManage._globalRelaySampManger,_globalTACManager->product_saddr,_globalTACManager->product_ch_addr-1,nCtrlType);
                 }
                 else if (_over_chn_pwr_request.outputType == 3)//两项控制
                 {
@@ -2084,6 +2090,13 @@ static void channelStatusMonitoring(void* conn)
                             _globalTACManager->product_ph_outputStatus = 2;
                         }
                     }
+                    short nCtrlType=2;
+                    if (_globalTACManager->product_ph_outputStatus == 1)
+                    {
+                        nCtrlType= 0;
+                    }
+                    g_switch_set_t_ac_ph_ctrl_mode(&__globalDeviceManage._globalRelaySampManger,_globalTACManager->product_saddr,_globalTACManager->product_ch_addr-1,nCtrlType);
+                    
                 }
                 else
                 {

+ 9 - 1
pro/src/sqlite_handle.c

@@ -575,7 +575,7 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
                 _overChnPwrBackInfoTemp->ph_consumption = _TreeACTemp->_PowerInfo.consumption;
                 _overChnPwrBackInfoTemp->ph_outputType   = _TreeACTemp->product_ph_outputType;
                 _overChnPwrBackInfoTemp->ph_outputStatus = _TreeACTemp->product_ph_outputStatus;
-                if ((globalDeviceManger->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One ||globalDeviceManger->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two ||globalDeviceManger->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B) && 
+                if ((globalDeviceManger->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One ||globalDeviceManger->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B) && 
                     _TreeACTemp->product_ph_outputType == 2 && _TreeACTemp->product_ph_outputStatus == 2) // 如果是单项输出并且则非输出通道数据为0
                 { 
                      // 3-1模式 单项状态,不输出则数据为空
@@ -586,6 +586,14 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
                     free(_overChnPwrBackInfoTemp);
                     continue;
                 }
+                if(globalDeviceManger->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Two &&_TreeACTemp->product_ph_outputType == 2 && _TreeACTemp->product_ph_outputStatus == 2 )
+                {
+                    // 3-2模式 单项状态,不输出则数据为空
+                    _overChnPwrBackInfoTemp->ph_voltage = 0.0;
+                    _overChnPwrBackInfoTemp->ph_current = 0.0;
+                    _overChnPwrBackInfoTemp->ph_power = 0.0;
+                    _overChnPwrBackInfoTemp->ph_consumption = 0.0;
+                }
                 if (nStatus>=0)
                 {
                     _overChnPwrBackInfoTemp->status = nStatus;

+ 13 - 0
pro/src/switch_ctrl.c

@@ -3573,3 +3573,16 @@ int g_switch_get_t_ac_breaker_info(void* manger,int saddr,GlobalBreakerManager*
     return 0;
 }
 
+
+int g_switch_set_t_ac_ph_ctrl_mode(void *manger,int saddr,int nChn,short CtrlType)
+{
+ 
+    unsigned int offset = 0;
+    unsigned int val = 0;
+    unsigned int status_temp = 0;
+    int ret = 0;
+    offset = _SWITCH_T_AC_PH_CTRLMODE+nChn;
+
+    ret = g_modbus_write_reg(manger, saddr, offset,CtrlType);
+    return ret;
+}

+ 4 - 1
pro/src/switch_ctrl.h

@@ -100,7 +100,7 @@ enum MODBUS_MODE
 #define _SWITCH_T_AC_RESET_CONSUMPTION_PH  0x189C          //重置PH耗电量
 #define _SWITCH_T_AC_RESET_CONSUMPTION     0x18A5          //重置all耗电量
 #define _SWITCH_T_AC_BREAKER_INFO 0x17D4        //三相控制板开关检测信息
-
+#define _SWITCH_T_AC_PH_CTRLMODE 0x18C4        //三相控制板单个通道的控制模式
 
 int g_switch_init(int addr_max);
 int g_switch_get_type(void* manger,int saddr, int* type,int* chn,int nPowerType);
@@ -183,6 +183,9 @@ int g_switch_set_t_ac_ctrl(void* manger,int saddr,unsigned short* sts);
 int g_switch_set_t_ac_reset(void* manger,int saddr);
 int g_switch_set_t_ac_phchn_reset(void* manger,int saddr,int nChn);
 int g_switch_set_t_ac_chn_reset(void *manger, int saddr, int nChn);
+//ctrltype:0可控,1不可控(常开),2不可控(常关)
+int g_switch_set_t_ac_ph_ctrl_mode(void *manger,int saddr,int nChn,short CtrlType);
+
 
 //GPIO通道状态
 int g_switch_get_gpio_status(int ngpio,int* status);