Browse Source

Merge remote-tracking branch 'origin/dev' into pro

lmstack 3 years ago
parent
commit
5d3e6b5135

+ 35 - 12
LIB/BACKEND/DBManager.py

@@ -14,6 +14,8 @@ import json
 import requests
 import pymysql
 import pdb
+from collections import Counter
+
 
 
 class DBManager():
@@ -80,18 +82,17 @@ class DBManager():
         '''
         返回json数据的生成器,一次一行
         '''
-
         i = 0
         while 1:
             try:
                 r = requests.get(url, stream=True, timeout=(0.1, 1000),  headers={'Connection':'keep-alive', 'Accept':'*/*', 'Accept-Encoding':'gzip,deflate,br'})
                 break
             except requests.exceptions.RequestException as e:
-                if (i == 0):
-                    print()
-                print('\r' + 'Server Error, retry {}......'.format(str(i)), end=" ")
+                # if (i == 0):
+                #     print()
+                # print('\r' + 'Server Error, retry {}......'.format(str(i)), end=" ")
                 time.sleep(0.1)
-                i+=1
+                i+=1    
         # print(r.content)
         # pdb.set_trace()
         data = [] 
@@ -241,16 +242,36 @@ class DBManager():
             CellUNum = 0
             CellTNum = 0
             OtherTNum = 0
+            
+            cellUNumList = []
+            cellTNumList = []
+            otherTNumList = []
+
             for line in data:
                 temp = len(line['ffBatteryStatus'].get('cellVoltageList', []))
-                if (temp > CellUNum):
-                    CellUNum = temp
+                cellUNumList.append(temp)
+                # if (temp > CellUNum):
+                #     CellUNum = temp
                 temp = len(line['ffBatteryStatus'].get('cellTempList', []))
-                if (temp > CellTNum):
-                    CellTNum = temp
+                cellTNumList.append(temp)
+                # if (temp > CellTNum):
+                #     CellTNum = temp
                 temp = len(line['ffBatteryStatus'].get('otherTempList', []))
-                if (temp > OtherTNum):
-                    OtherTNum = temp
+                otherTNumList.append(temp)
+                # if (temp > OtherTNum):
+                #     OtherTNum = temp
+ 
+            if (len(data)>0):
+                result = Counter(cellUNumList)
+                CellUNum = max(result, key=result.get)
+                
+                result = Counter(cellTNumList)
+                CellTNum = max(result, key=result.get)
+
+                result = Counter(otherTNumList)
+                OtherTNum = max(result, key=result.get)
+
+                       
             data_blocks = pd.DataFrame()
             for line in data:
                 et = time.time()
@@ -261,11 +282,13 @@ class DBManager():
                             i+=1
                         continue
                 except Exception as e:
+                    # print(e)
                     continue
                     
                 try:
                     data_block = DBManager._convert_to_dataframe_bms(line, mode, CellUNum, CellTNum, OtherTNum)
                 except Exception as e:
+                    # print(e)
                     continue
            
                 try:
@@ -328,7 +351,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.121.236/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='', 
+    def get_data(self, url='http://172.16.126.13/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='', 
                  data_groups=['bms', 'gps']):
         '''
         获取指定 sn 和起止日期的bms和gps数据.

+ 3 - 1
LIB/MIDDLE/SaftyCenter/Liplated/Li_plated.py

@@ -140,7 +140,9 @@ class Liplated_test:
                     peak_pos = np.where(df_check_plated_data == -2)
                     bot_pos = np.where(df_check_plated_data == 2)
                     if len(peak_pos[0]) & len(bot_pos[0]):
-                        if (peak_pos[0][0] > bot_pos[0][0]) & (df_lipltd_volt_temp_dif[cell_name][peak_pos[0][0] + 1] < 0):
+                        peak_hight = df_lipltd_volt_temp_dif[cell_name][peak_pos[0][0] + 1] - df_lipltd_volt_temp_dif[cell_name][0]
+                        peak_bot_hight = df_lipltd_volt_temp_dif[cell_name][peak_pos[0][0] + 1] - df_lipltd_volt_temp_dif[cell_name][bot_pos[0][0] + 1]
+                        if (peak_pos[0][0] > bot_pos[0][0]) & (df_lipltd_volt_temp_dif[cell_name][peak_pos[0][0] + 1] < 0) & (peak_bot_hight > 0.2*peak_hight):
                             lipltd_confirm.append(1)#1为析锂,0为非析锂
                             lipltd_amount.append((df_check_liplated_temp['时间戳'][bot_pos[0][0] + 2] - df_check_liplated_temp['时间戳'][0])/pd.Timedelta(1, 'min'))
                         else:

+ 23 - 23
LIB/MIDDLE/SaftyCenter/Liplated/main.py

@@ -49,32 +49,32 @@ def cell_platd_sorvol_test():
         if not df_bms.empty:
             Diag_lipltd_temp = Li_plated.Liplated_test(sn,celltype,df_bms)#析锂检测
             df_Diag_lipltd_add = Diag_lipltd_temp.liplated_detect()
-            Diag_sorvol_temp = vol_sor_est.vol_sor_est(sn,celltype,df_bms)#电压内阻估计
-            [df_diag_sor_add, df_diag_vol_add, df_diag_sorvol_add] = Diag_sorvol_temp.volsor_cal()           
+            # Diag_sorvol_temp = vol_sor_est.vol_sor_est(sn,celltype,df_bms)#电压内阻估计
+            # [df_diag_sor_add, df_diag_vol_add, df_diag_sorvol_add] = Diag_sorvol_temp.volsor_cal()           
         if not df_Diag_lipltd_add.empty:
             df_Diag_lipltd_temp = df_Diag_lipltd.append(df_Diag_lipltd_add)
             df_Diag_lipltd = df_Diag_lipltd_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
             df_Diag_lipltd.reset_index(drop = True)
             df_Diag_lipltd.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
             df_Diag_lipltd.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\02析锂检测\01下载数据\格林美-力信7255\SNnums_6040_liplated_sn.csv',index=False,encoding='GB18030')
-        if not df_diag_sor_add.empty:
-            df_diag_sor_temp = df_diag_sor.append(df_diag_sor_add)
-            df_diag_sor = df_diag_sor_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
-            df_diag_sor.reset_index(drop = True)
-            df_diag_sor.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
-            df_diag_sor.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\内阻偏离.csv',index=False,encoding='GB18030')
-        if not df_diag_vol_add.empty:
-            df_diag_vol_temp = df_diag_vol.append(df_diag_vol_add)
-            df_diag_vol = df_diag_vol_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
-            df_diag_vol.reset_index(drop = True)
-            df_diag_vol.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
-            df_diag_vol.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压偏离.csv',index=False,encoding='GB18030')
-        if not df_diag_sorvol_add.empty:
-            df_diag_volsor_temp = df_diag_volsor.append(df_diag_sorvol_add)
-            df_diag_volsor = df_diag_volsor_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
-            df_diag_volsor.reset_index(drop = True)
-            df_diag_volsor.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
-            df_diag_volsor.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压内阻偏离.csv',index=False,encoding='GB18030')
+        # if not df_diag_sor_add.empty:
+        #     df_diag_sor_temp = df_diag_sor.append(df_diag_sor_add)
+        #     df_diag_sor = df_diag_sor_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
+        #     df_diag_sor.reset_index(drop = True)
+        #     df_diag_sor.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
+        #     df_diag_sor.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\内阻偏离.csv',index=False,encoding='GB18030')
+        # if not df_diag_vol_add.empty:
+        #     df_diag_vol_temp = df_diag_vol.append(df_diag_vol_add)
+        #     df_diag_vol = df_diag_vol_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
+        #     df_diag_vol.reset_index(drop = True)
+        #     df_diag_vol.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
+        #     df_diag_vol.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压偏离.csv',index=False,encoding='GB18030')
+        # if not df_diag_sorvol_add.empty:
+        #     df_diag_volsor_temp = df_diag_volsor.append(df_diag_sorvol_add)
+        #     df_diag_volsor = df_diag_volsor_temp.drop_duplicates(subset = ['sn','time'], keep = 'first', inplace = False)
+        #     df_diag_volsor.reset_index(drop = True)
+        #     df_diag_volsor.sort_values(by = ['sn'], axis = 0, ascending=True,inplace=True)#对故障信息按照时间进行排序
+        #     df_diag_volsor.to_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压内阻偏离.csv',index=False,encoding='GB18030')
         end=time.time()
         print(end-start)
 
@@ -108,9 +108,9 @@ if __name__ == "__main__":
     mylog.logcfg()
     #............................模块运行前,先读取数据库中所有结束时间为0的数据,需要从数据库中读取................
     df_Diag_lipltd=pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\02析锂检测\01下载数据\格林美-力信7255\析锂.csv',encoding='GB18030')
-    df_diag_sor = pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\内阻偏离.csv',encoding='GB18030')
-    df_diag_vol = pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压偏离.csv',encoding='GB18030')
-    df_diag_volsor = pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压内阻偏离.csv',encoding='GB18030')
+    # df_diag_sor = pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\内阻偏离.csv',encoding='GB18030')
+    # df_diag_vol = pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压偏离.csv',encoding='GB18030')
+    # df_diag_volsor = pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\lzx\01算法开发\05内阻及电压估计\02算法检测\判断结果\电压内阻偏离.csv',encoding='GB18030')
 
     print('-------计算中-----------')
     #定时任务.......................................................................................................................................................................