Kaynağa Gözat

电压一致性

lmstack 3 yıl önce
ebeveyn
işleme
eb40acef2a

+ 1 - 1
LIB/BACKEND/DBManager.py

@@ -286,7 +286,7 @@ class DBManager():
             if not df_all.empty:
                 df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
             return df_all
-    def get_data(self, url='http://172.16.126.13/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='', 
+    def get_data(self, url='http://172.16.121.236/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='', 
                  data_groups=['bms', 'gps']):
         '''
         获取指定 sn 和起止日期的bms和gps数据.

+ 52 - 0
LIB/MIDDLE/Stray/VoltageStray/V_1_0_0/VoltageStray.py

@@ -0,0 +1,52 @@
+import pandas as pd
+
+class VoltageStray:
+    def __init__(self):  #参数初始化
+        pass
+
+    def cal_vol_uniform(self, df, roll=1, alarm_threshold=5):
+        volt_column = [x for x in df.columns if "单体电压" in x]
+        all_columns = volt_column.copy()
+        all_columns.append("时间戳")
+        df = df[all_columns]
+        df_filt = df.copy()
+        if len(df_filt) > 0:
+
+            # df_filt = df_t.dropna(how='all')
+            df_filt = df_filt.reset_index(drop=True)
+            volt_count = len(volt_column)-1
+            volt_column = volt_column
+            df_cell_volt = df_filt[all_columns]
+            df_cell_volt = df_cell_volt.dropna().reset_index(drop=True)
+            
+
+            # 观察单体电压
+            df_rolling = df_cell_volt.loc[:, volt_column].rolling(roll, center=True, min_periods=1).mean()  # 滑动平均值
+
+            # df_temp_change = df_temp_change.dropna().reset_index(drop=True)
+            # df_temp_change_2 = df_temp_change_2.dropna().reset_index(drop=True)
+
+            mean = df_rolling.mean(axis=1)
+            std = df_rolling.std(axis=1)
+            df_rolling_norm = df_rolling.sub(mean, axis=0).div(std,axis=0)
+
+            # fig = plt.figure(figsize=(20,12))
+            # ax1 = fig.add_subplot(2,1,1)
+            # ax1.set_title("电压 - " + file[0:-5])
+            # ax1.plot(df_rolling_norm)
+
+            # plt.savefig('./res/'+str(count) + '-' + file[0:-5] +"--原始电压-"+ '.png')
+            # plt.close()
+            # plt.clf()
+            # plt.cla()
+
+            all_alarm = {'alarm_time':[], 'alarm_cell':[]}
+            df_alarm = df_rolling_norm[abs(df_rolling_norm)>1].dropna(how='all')
+            for index in df_alarm.index:
+                print(index)
+                df_temp = df_alarm.loc[index, :].dropna(how='all', axis=0)
+                all_alarm['alarm_time'].append(df_cell_volt.loc[index, '时间戳'])
+                alarm_cell = df_temp.keys().tolist()
+                all_alarm['alarm_cell'].append(str([x[4:] for x in alarm_cell]))
+            df_alarm = pd.DataFrame(all_alarm)
+            return df_alarm

+ 15 - 0
LIB/MIDDLE/Stray/VoltageStray/main.py

@@ -0,0 +1,15 @@
+# 获取数据
+import sys
+from LIB.BACKEND import DBManager
+from LIB.MIDDLE.Stray.VoltageStray.V_1_0_0 import VoltageStray
+
+sn = "MGMCLN750N215N116"
+st = '2021-09-17 21:33:07'
+et = '2021-09-17 21:35:07'
+
+dbManager = DBManager.DBManager()
+df_data = dbManager.get_data(sn=sn, start_time=st, end_time=et, data_groups=['bms'])
+# 
+df_bms = df_data['bms']
+voltageStray = VoltageStray.VoltageStray();
+print(voltageStray.cal_vol_uniform(df_bms, 1, 5))