Sfoglia il codice sorgente

再次修改电力信息修正逻辑,电压低于1V,功率因子低于0.1时进行修正

guohui 1 anno fa
parent
commit
fe6041bab4
1 ha cambiato i file con 52 aggiunte e 36 eliminazioni
  1. 52 36
      pro/src/switch_ctrl.c

+ 52 - 36
pro/src/switch_ctrl.c

@@ -144,29 +144,36 @@ int g_switch_get_ac_single_s_all_cur_info(void* manger,int saddr,int nNumb,Power
     for (size_t i = 0; i < nNumb; i++)
     {
         int Index = i * 12;
-        // 解电压数据
+        
         val = (data_temp[1 + Index] << 16) | data_temp[0 + Index];
         _power[i].voltage = val / 1000.0;
         if(_power[i].voltage>0 && _power[i].voltage<=1.0f) {
-            _power[i].voltage = 0;
+            _power[i].voltage = 0.0f;
+            _power[i].power = 0.0f;
+            _power[i].current = 0.0f;
+            _power[i].factor = 0.0f;
+        }
+        else {
+            val = (data_temp[11 + Index] << 16) | data_temp[10 + Index];
+            _power[i].factor = val / 1000.0;
+            if(_power[i].factor>0 && _power[i].factor<0.1f) {
+                val = (data_temp[3 + Index] << 16) | data_temp[2 + Index];
+                _power[i].current = val / 1000.0;
+
+                val = (data_temp[5 + Index] << 16) | data_temp[4 + Index];
+                _power[i].power = val / 1000.0;
+            }
+            else {
+                _power[i].power = 0.0f;
+                _power[i].current = 0.0f;
+            }
         }
 
-        // 解电流数据
-        val = (data_temp[3 + Index] << 16) | data_temp[2 + Index];
-        _power[i].current = val / 1000.0;
-
-        // 解功率数据
-        val = (data_temp[5 + Index] << 16) | data_temp[4 + Index];
-        _power[i].power = val / 1000.0;
-        // 解频率数据
         val = (data_temp[7 + Index] << 16) | data_temp[6 + Index];
         _power[i].freq = val / 1000.0;
-        // 解耗电量数据
+        
         val = (data_temp[9 + Index] << 16) | data_temp[8 + Index];
         _power[i].consumption = val / 1000.0;
-        // 解功率因素数据
-        val = (data_temp[11 + Index] << 16) | data_temp[10 + Index];
-        _power[i].factor = val / 1000.0;
     }
 
     offset = _SWITCH_AC_SINGLE_S_STS_INFO;
@@ -1797,32 +1804,41 @@ int g_switch_get_t_ac_all_out_info(void* manger,int saddr,int nNumb,PowerInfo* _
     for (size_t i = 0; i < nNumb; i++)
     {
         int Index = i * 16;
-        // 解电压数据
-        float value = (data_temp[1+Index] << 16) + data_temp[0+Index];
-        _power[i].voltage = value / 1000.0;
-        if(_power[i].voltage>0 && _power[i].voltage<=1.0f) {
-            _power[i].voltage = 0;
+
+        val = (data_temp[1 + Index] << 16) | data_temp[0 + Index];
+        _power[i].voltage = val / 1000.0;
+        if(_power[i].voltage>0.0f && _power[i].voltage<1.0f) {
+            _power[i].voltage = 0.0f;
+            _power[i].power = 0.0f;
+            _power[i].current = 0.0f;
+            _power[i].factor = 0.0f;
+        }
+        else {
+            val = (data_temp[15 + Index] << 16) | data_temp[14 + Index];
+            _power[i].factor = val / 1023.0;
+            if(_power[i].factor>0.0f && _power[i].factor<0.1f) {
+                val = (data_temp[3 + Index] << 16) | data_temp[2 + Index];
+                _power[i].current = val / 1000.0;
+
+                val = (data_temp[5 + Index] << 16) | data_temp[4 + Index];
+                _power[i].power = val / 1000.0;
+
+                // 无功
+                //val = (data_temp[7+Index] << 16) + data_temp[6+Index];
+                // 视在功率
+                //val = (data_temp[9+Index] << 16) + data_temp[8+Index];
+            }
+            else {
+                _power[i].power = 0.0f;
+                _power[i].current = 0.0f;
+            }
         }
 
-        // 解电流数据
-        value = (data_temp[3+Index] << 16) + data_temp[2+Index];
-        _power[i].current = value / 1000.0;
-        // 解功率数据
-        value = (data_temp[5+Index] << 16) + data_temp[4+Index];
-        _power[i].power = value / 1000.0;
-        // 无功
-        value = (data_temp[7+Index] << 16) + data_temp[6+Index];
-        // 视在功率
-        value = (data_temp[9+Index] << 16) + data_temp[8+Index];
-        // 解频率数据
-        val = (data_temp[11+Index] << 16) + data_temp[10+Index];
+        val = (data_temp[11 + Index] << 16) | data_temp[10+ Index];
         _power[i].freq = val / 1000.0;
-        // 解耗电量数据
-        val = (data_temp[13+Index] << 16) + data_temp[12+Index];
+        
+        val = (data_temp[13 + Index] << 16) | data_temp[12 + Index];
         _power[i].consumption = val / 1000.0;
-        // 解功率因素数据
-        val = (data_temp[15+Index] << 16) + data_temp[14+Index];
-        _power[i].factor = val / 1023.0;
     }
     //获取通道开关状态及零线状态 
     //_SWITCH_T_AC_OUT_ENABLE +18