Browse Source

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

lmstack 3 years ago
parent
commit
75567fb3c4

+ 4 - 18
LIB/MIDDLE/CellStateEstimation/InterShort/V1_0_0/CBMSBatInterShort.py

@@ -3,10 +3,9 @@ import numpy as np
 import matplotlib.pyplot as plt
 from pymysql import paramstyle
 from LIB.MIDDLE.CellStateEstimation.Common import BatParam
-from LIB.MIDDLE.CellStateEstimation.Common import DBDownload
 
 class BatInterShort:
-    def __init__(self,sn,celltype,df_bms, host, port, db, user, password, tablename):  #参数初始化
+    def __init__(self,sn,celltype,df_bms,df_soh):  #参数初始化
 
         self.sn=sn
         self.celltype=celltype
@@ -17,12 +16,7 @@ class BatInterShort:
         self.bms_soc=df_bms['SOC[%]']
         self.bmstime= pd.to_datetime(df_bms['时间戳'], format='%Y-%m-%d %H:%M:%S')
 
-        self.host=host
-        self.port=port
-        self.db=db
-        self.user=user
-        self.password=password
-        self.tablename=tablename
+        self.df_soh=df_soh
     
     def intershort(self):
         if self.celltype==1 or self.celltype==2 or self.celltype==3 or self.celltype==4:
@@ -35,12 +29,6 @@ class BatInterShort:
         
         else:
             return pd.DataFrame()
-    
-    #获取预算结果库的结果...............................................................................
-    def getdata(self):  
-        DBManager=DBDownload.DBDownload(self.host, self.port, self.db, self.user, self.password)
-        with DBManager as DBManager:
-            self.df_soh=DBManager.getdata('time_st','time_sp','sn','method','soh','cellsoh', tablename='cellstateestimation_soh', sn=self.sn)
 
     #定义滑动滤波函数....................................................................................
     def _np_move_avg(self,a, n, mode="same"): 
@@ -212,7 +200,6 @@ class BatInterShort:
         df_res=pd.DataFrame(columns=column_name)
         
         if not self.df_bms.empty:
-            self.getdata()  #获取电池包的soh
             if self.df_soh.empty:
                 batsoh=self.df_bms.loc[0,'SOH[%]']
                 capacity=self.param.Capacity*batsoh/100
@@ -245,7 +232,7 @@ class BatInterShort:
                 else:
                     pass
 
-                if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1:     
+                if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1 and abs(self.packcrnt[i+1]) < 0.1:     
                     delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                     standingtime=standingtime+delttime
                     standingtime1=standingtime1+delttime
@@ -348,7 +335,6 @@ class BatInterShort:
         column_name=['time_st', 'time_sp', 'sn', 'method','short_current','baltime']
         df_res=pd.DataFrame(columns=column_name)
         if not self.df_bms.empty:
-            self.getdata()  #获取电池包的soh
             if self.df_soh.empty:
                 batsoh=self.df_bms.loc[0,'SOH[%]']
                 capacity=self.param.Capacity*batsoh/100
@@ -388,7 +374,7 @@ class BatInterShort:
                 else:
                     pass
 
-                if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1:     
+                if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1 and abs(self.packcrnt[i+1]) < 0.1:     
                     delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                     standingtime=standingtime+delttime
                     standingtime1=standingtime1+delttime

+ 22 - 13
LIB/MIDDLE/CellStateEstimation/InterShort/main.py

@@ -8,13 +8,7 @@ import pandas as pd
 from LIB.BACKEND import DBManager, Log
 from sqlalchemy import create_engine
 import time, datetime
-
-host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
-port=3306
-db='qx_cas'
-user='qx_read'
-password='Qx@123456'
-tablename='soh_result'
+from LIB.MIDDLE.CellStateEstimation.Common import DBDownload
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
@@ -31,7 +25,7 @@ if __name__ == "__main__":
     SNnums_L7255=SNdata_L7255['SN号'].tolist()
     SNnums_C7255=SNdata_C7255['SN号'].tolist()
     SNnums_U7255=SNdata_U7255['SN号'].tolist()
-    SNnums= SNnums_L7255 + SNnums_C7255 + SNnums_6040 + SNnums_4840 + SNnums_6060 + SNnums_U7255
+    SNnums= SNnums_6060 + SNnums_L7255 + SNnums_C7255 + SNnums_6040 + SNnums_4840 + SNnums_U7255
     
     now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
     now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
@@ -60,19 +54,34 @@ if __name__ == "__main__":
                 continue
                 # sys.exit()
             
-            # sn='MGMCLN750N215H001'
-            # celltype=2
-            start_time='2021-08-02 09:12:26'
-            end_time='2021-09-03 19:12:26'
+            sn='PK50201A000002039'
+            celltype=2
+            start_time='2021-05-02 09:12:26'
+            end_time='2021-06-03 19:12:26'
+            # df_bms= pd.read_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_'+sn+'.csv',encoding='GB18030')
 
+            #......................................................................读取原始数据库数据..................................................................................
             dbManager = DBManager.DBManager()
             df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=['bms'])
             df_bms = df_data['bms']
             # df_bms.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\99Result\\''BMS_'+sn+'.csv',encoding='GB18030')
+
+            #.....................................................................读取结果数据库数据.............................................................................
+            host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
+            port=3306
+            db='qx_cas'
+            user='qx_read'
+            password='Qx@123456'
+            tablename='cellstateestimation_soh'
+            DBRead=DBDownload.DBDownload(host, port, db, user, password)
+            with DBRead as DBRead:
+                df_soh=DBRead.getdata('time_st','time_sp','sn','method','soh','cellsoh', tablename=tablename, sn=sn)
             
-            BatInterShort=CBMSBatInterShort.BatInterShort(sn,celltype,df_bms,host, port, db, user, password, tablename)
+            #...........................................................................计算漏电流............................................................................
+            BatInterShort=CBMSBatInterShort.BatInterShort(sn,celltype,df_bms,df_soh)
             df_res=BatInterShort.intershort()
             df_res.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\99Result\\'+'CBMS_Short_'+sn+'_1.csv',encoding='GB18030')
+            # print('done!!!')
         
         except Exception as e:
             print(repr(e))

+ 11 - 24
LIB/MIDDLE/CellStateEstimation/SOH/V1_0_0/CBMSBatSoh.py

@@ -4,10 +4,9 @@ import datetime
 import bisect
 import matplotlib.pyplot as plt
 from LIB.MIDDLE.CellStateEstimation.Common import BatParam
-from LIB.MIDDLE.CellStateEstimation.Common import DBDownload
 
 class BatSoh:
-    def __init__(self,sn,celltype,df_bms,df_accum, host, port, db, user, password, tablename):  #参数初始化
+    def __init__(self,sn,celltype,df_bms,df_accum,df_soh):  #参数初始化
 
         self.sn=sn
         self.celltype=celltype
@@ -23,12 +22,7 @@ class BatSoh:
         self.df_accum=df_accum
         self.accumtime=pd.to_datetime(df_accum['时间戳'], format='%Y-%m-%d %H:%M:%S')
 
-        self.host=host
-        self.port=port
-        self.db=db
-        self.user=user
-        self.password=password
-        self.tablename=tablename
+        self.df_soh=df_soh
 
     def batsoh(self):
         if self.celltype==1 or self.celltype==2 or self.celltype==3 or self.celltype==4:
@@ -42,12 +36,6 @@ class BatSoh:
         else:
             return pd.DataFrame()
 
-    #获取预算结果库的结果....................................................................................................................
-    def getdata(self):  
-        DBManager=DBDownload.DBDownload(self.host, self.port, self.db, self.user, self.password)
-        with DBManager as DBManager:
-            self.df_soh=DBManager.getdata('time_st','time_sp','sn','method','soh','cellsoh', tablename='cellstateestimation_soh', sn=self.sn)
-    
     #定义滑动滤波函数.........................................................................................................................
     def _np_move_avg(self,a, n, mode="same"):
         return (np.convolve(a, np.ones((n,)) / n, mode=mode))
@@ -83,7 +71,7 @@ class BatSoh:
                 self.tempweight=0.5
                 self.StandardStandingTime=3600
             elif min(celltemp)>=5:
-                self.tempweight=0
+                self.tempweight=0.2
                 self.StandardStandingTime=7200
             else:
                 self.tempweight=0
@@ -91,16 +79,16 @@ class BatSoh:
         else:
             if min(celltemp)>=20:
                 self.tempweight=1
-                self.StandardStandingTime=900
+                self.StandardStandingTime=1200
             elif min(celltemp)>=10:
                 self.tempweight=0.8
-                self.StandardStandingTime=1200
+                self.StandardStandingTime=1800
             elif min(celltemp)>=5:
                 self.tempweight=0.3
-                self.StandardStandingTime=1800
+                self.StandardStandingTime=3600
             else:
                 self.tempweight=0.1
-                self.StandardStandingTime=3600
+                self.StandardStandingTime=7200
 
     #获取SOC差对应的SOH权重值...................................................................................................................
     def _deltsoc_weight(self,deltsoc):   
@@ -234,7 +222,6 @@ class BatSoh:
     #NCM充电数据soh计算.........................................................................................................................
     def _ncmsoh_chrg(self):      
         self._chrgdata()
-        self.getdata()
         ChgStartValid=[]
         ChgEndValid=[]
         tempweightlist=[]
@@ -303,7 +290,7 @@ class BatSoh:
         standingtime=0
         for i in range(3,len(self.df_bms)-3):
 
-            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1:     #电流为0
+            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1 and abs(self.packcrnt[i+1]) < 0.1:     #电流为0
                 delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
@@ -363,7 +350,6 @@ class BatSoh:
 
         #计算SOH......................................................................................................................
         if standingpoint_sp:
-            self.getdata()  #获取已计算的soh
             column_name=['time_st','time_sp','sn','method','soh','cellsoh']
             df_res=pd.DataFrame(columns=column_name)
 
@@ -483,7 +469,7 @@ class BatSoh:
         for i in range(3,len(self.df_bms)-3):
 
             #获取两点法法所需数据-开始.................................................................................................................
-            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1:     #判断非平台区静置状态
+            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1 and abs(self.packcrnt[i+1]) < 0.1:     #判断非平台区静置状态
                 delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
@@ -599,7 +585,6 @@ class BatSoh:
         
         #开始计算SOH.............................................................................................................................................
         if standingpoint_sp or chrg_end:       
-            self.getdata()  #获取已计算的soh
             column_name=['time_st','time_sp','sn','method','soh','cellsoh','weight']
             df_res=pd.DataFrame(columns=column_name)
         
@@ -711,6 +696,7 @@ class BatSoh:
                                 cellsoh_cal=cellsoh_init*soh_weight + cellsoh_last*(1-soh_weight)
                         else:
                             cellsoh_cal=cellsoh_init*soh_weight+100*(1-soh_weight)
+                        cellsoh_cal=eval(format(cellsoh_cal,'.1f'))
                         if 60<cellsoh_cal<115:
                             df_res.loc[i,'soh']=cellsoh_cal
                             df_res.loc[i,'cellsoh']=str(cellsoh_cal)
@@ -723,6 +709,7 @@ class BatSoh:
                             cellsoh_cal=cellsoh_init*soh_weight + cellsoh_last*(1-soh_weight)
                         else:
                             cellsoh_cal=cellsoh_init*soh_weight + cellsoh_last*(1-soh_weight)
+                        cellsoh_cal=eval(format(cellsoh_cal,'.1f'))
                         if 60<cellsoh_cal<115:
                             df_res.loc[i,'soh']=cellsoh_cal
                             df_res.loc[i,'cellsoh']=str(cellsoh_cal)

+ 40 - 25
LIB/MIDDLE/CellStateEstimation/SOH/main.py

@@ -6,27 +6,25 @@ import pandas as pd
 from LIB.BACKEND import DBManager, Log
 from sqlalchemy import create_engine
 import time, datetime
-
-host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
-port=3306
-db='qx_cas'
-user='qx_read'
-password='Qx@123456'
-tablename='soh_result'
+from LIB.MIDDLE.CellStateEstimation.Common import DBDownload
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
-    excelpath=r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\骑享资产梳理-20210621.xlsx'
-    SNdata_6040 = pd.read_excel(excelpath, sheet_name='6040骑享')
-    SNdata_6060 = pd.read_excel(excelpath, sheet_name='6060')
-    SNdata_4840 = pd.read_excel(excelpath, sheet_name='4840骑享')
-    SNdata_7250 = pd.read_excel(excelpath, sheet_name='7250')
-    SNnums_6060=SNdata_6060['SN号']
-    SNnums_6040=SNdata_6040['SN号']
-    SNnums_4840=SNdata_4840['SN号']
-    SNnums_7250=SNdata_7250['SN号']
+    excelpath=r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\sn-20210903.xlsx'
+    SNdata_6060 = pd.read_excel(excelpath, sheet_name='科易6060')
+    SNdata_6040 = pd.read_excel(excelpath, sheet_name='科易6040')
+    SNdata_4840 = pd.read_excel(excelpath, sheet_name='科易4840')
+    SNdata_L7255 = pd.read_excel(excelpath, sheet_name='格林美-力信7255')
+    SNdata_C7255 = pd.read_excel(excelpath, sheet_name='格林美-CATL7255')
+    SNdata_U7255 = pd.read_excel(excelpath, sheet_name='优旦7255')
+    SNnums_6060=SNdata_6060['SN号'].tolist()
+    SNnums_6040=SNdata_6040['SN号'].tolist()
+    SNnums_4840=SNdata_4840['SN号'].tolist()
+    SNnums_L7255=SNdata_L7255['SN号'].tolist()
+    SNnums_C7255=SNdata_C7255['SN号'].tolist()
+    SNnums_U7255=SNdata_U7255['SN号'].tolist()
+    SNnums= SNnums_6060 + SNnums_L7255 + SNnums_C7255 + SNnums_6040 + SNnums_4840 + SNnums_U7255
 
-    SNnums=SNnums_6060.tolist()+SNnums_6040.tolist()+SNnums_4840.tolist()
     now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
     now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
     start_time=now_time-datetime.timedelta(days=30)
@@ -50,23 +48,40 @@ if __name__ == "__main__":
             elif 'MGMCLN750' in sn: 
                 celltype=4 #CATL 50ah三元电芯
             else:
-                print('未找到对应电池编号!!!')
+                print('未找到对应电池编号!!!\n',sn)
                 # sys.exit()
             
-            # sn='MGMCLN750N215H001'
-            # start_time='2021-08-01 18:52:08'
-            # end_time='2021-08-31 18:52:08'
+            sn='PK504B10100004353'
+            celltype=99
+            start_time='2021-04-01 19:12:26'
+            end_time='2021-06-02 19:12:26'
+            # df_bms= pd.read_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_'+sn+'.csv',encoding='GB18030')
+            # df_accum= pd.read_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_accum_'+sn+'.csv',encoding='GB18030')
             
+            #..........................................................................读取原始数据库数据...........................................................................
             dbManager = DBManager.DBManager()
             df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=['bms','accum'])
             df_bms = df_data['bms']
             df_accum=df_data['accum']
-            # df_bms.to_csv('BMS_'+sn+'.csv')
-            # df_accum.to_csv('BMS_accum_'+sn+'.csv')
+            # df_bms.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_'+sn+'.csv',encoding='GB18030')
+            # df_accum.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_accum_'+sn+'.csv',encoding='GB18030')
+
+            #..........................................................................读取结果数据库数据.........................................................................
+            host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
+            port=3306
+            db='qx_cas'
+            user='qx_read'
+            password='Qx@123456'
+            tablename='soh_result'
+            DBRead=DBDownload.DBDownload(host, port, db, user, password)
+            with DBRead as DBRead:
+                df_soh=DBRead.getdata('time_st','time_sp','sn','method','soh','cellsoh', tablename='cellstateestimation_soh', sn=sn)
 
-            BatSoh=CBMSBatSoh.BatSoh(sn,celltype,df_bms,df_accum,host, port, db, user, password, tablename)
+            #..............................................................................计算soh...................................................................................
+            BatSoh=CBMSBatSoh.BatSoh(sn,celltype,df_bms,df_accum,df_soh)
             df_res=BatSoh.batsoh()
-            df_res.to_csv('BMS_SOH_'+sn+'.csv',encoding='GB18030')
+            df_res.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\99Result\\'+'CBMS_SOH'+sn+'_1.csv',encoding='GB18030')
+            # print('done!!!')
              
         except IndexError as e:
             print(repr(e))

+ 7 - 7
LIB/MIDDLE/CellStateEstimation/Uniform/V1_0_0/CBMSBatUniform.py

@@ -44,7 +44,7 @@ class BatUniform:
         if self.celltype==99:
             if min(celltemp)>=20:
                 self.tempweight=1
-                self.StandardStandingTime=1800
+                self.StandardStandingTime=2400
             elif min(celltemp)>=10:
                 self.tempweight=0.6
                 self.StandardStandingTime=3600
@@ -57,10 +57,10 @@ class BatUniform:
         else:
             if min(celltemp)>=20:
                 self.tempweight=1
-                self.StandardStandingTime=1200
+                self.StandardStandingTime=1800
             elif min(celltemp)>=10:
                 self.tempweight=0.8
-                self.StandardStandingTime=1800
+                self.StandardStandingTime=2400
             elif min(celltemp)>=5:
                 self.tempweight=0.6
                 self.StandardStandingTime=3600
@@ -165,7 +165,7 @@ class BatUniform:
 
         for i in range(1,len(self.df_bms)-2):
 
-            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1:     #电流为0
+            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1 and abs(self.packcrnt[i+1]) < 0.1:     #电流为0
                 delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
@@ -242,7 +242,7 @@ class BatUniform:
         for i in range(3,len(self.df_bms)-3):
 
             #静置电压法计算电芯一致性
-            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1:     #电流为0
+            if abs(self.packcrnt[i]) < 0.1 and abs(self.packcrnt[i-1]) < 0.1 and abs(self.packcrnt[i+1]) < 0.1:     #电流为0
                 delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
@@ -253,7 +253,7 @@ class BatUniform:
                     cellvolt_max=max(cellvolt_now)
                     if abs(self.packcrnt[i+2]) >= 0.1:     
                         standingtime=0  
-                        if 2 < cellvolt_max < self.param.OcvInflexionBelow:                 
+                        if 2 < cellvolt_max < self.param.OcvInflexionBelow-0.002:                 
                             cellmin_num=cellvolt_now.index(cellvolt_min)+1
                             cellmax_num=cellvolt_now.index(cellvolt_max)+1
                             cellsoc_min=np.interp(cellvolt_min,self.param.LookTab_OCV,self.param.LookTab_SOC)
@@ -265,7 +265,7 @@ class BatUniform:
                             df_res.loc[len(df_res)]=[self.bmstime[i], self.sn, cellsoc_diff, cellvolt_diff, cellmin_num, cellmax_num]
                     elif i>=len(self.df_bms)-4:
                         standingtime=0
-                        if 2 < cellvolt_max < self.param.OcvInflexionBelow:
+                        if 2 < cellvolt_max < self.param.OcvInflexionBelow-0.002:
                             cellmin_num=cellvolt_now.index(cellvolt_min)+1
                             cellmax_num=cellvolt_now.index(cellvolt_max)+1
                             cellsoc_min=np.interp(cellvolt_min,self.param.LookTab_OCV,self.param.LookTab_SOC)

+ 30 - 25
LIB/MIDDLE/CellStateEstimation/Uniform/main.py

@@ -7,29 +7,29 @@ import sys
 import datetime
 import pandas as pd
 from LIB.BACKEND import DBManager, Log
-# from LIB.MIDDLE import SignalMonitor
 from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker
 import time, datetime
 from urllib import parse
+from LIB.MIDDLE.CellStateEstimation.Common import DBDownload
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
-    excelpath=r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\骑享资产梳理-20210621.xlsx'
-    SNdata_6040 = pd.read_excel(excelpath, sheet_name='6040骑享')
-    SNdata_6060 = pd.read_excel(excelpath, sheet_name='6060')
-    SNdata_4840 = pd.read_excel(excelpath, sheet_name='4840骑享')
-    SNdata_7250 = pd.read_excel(excelpath, sheet_name='7250')
-    SNdata_6040 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6040骑享')
-    SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
-    SNdata_4840 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='4840骑享')
-    SNdata_7250 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='7250')
-    SNnums_6060=SNdata_6060['SN号']
-    SNnums_6040=SNdata_6040['SN号']
-    SNnums_4840=SNdata_4840['SN号']
-    SNnums_7250=SNdata_7250['SN号']
+    excelpath=r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\sn-20210903.xlsx'
+    SNdata_6060 = pd.read_excel(excelpath, sheet_name='科易6060')
+    SNdata_6040 = pd.read_excel(excelpath, sheet_name='科易6040')
+    SNdata_4840 = pd.read_excel(excelpath, sheet_name='科易4840')
+    SNdata_L7255 = pd.read_excel(excelpath, sheet_name='格林美-力信7255')
+    SNdata_C7255 = pd.read_excel(excelpath, sheet_name='格林美-CATL7255')
+    SNdata_U7255 = pd.read_excel(excelpath, sheet_name='优旦7255')
+    SNnums_6060=SNdata_6060['SN号'].tolist()
+    SNnums_6040=SNdata_6040['SN号'].tolist()
+    SNnums_4840=SNdata_4840['SN号'].tolist()
+    SNnums_L7255=SNdata_L7255['SN号'].tolist()
+    SNnums_C7255=SNdata_C7255['SN号'].tolist()
+    SNnums_U7255=SNdata_U7255['SN号'].tolist()
+    SNnums= SNnums_6060 + SNnums_L7255 + SNnums_C7255 + SNnums_6040 + SNnums_4840 + SNnums_U7255
 
-    SNnums=SNnums_6060.tolist()+SNnums_6040.tolist()+SNnums_4840.tolist()+SNnums_7250.tolist()
     now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
     now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
     start_time=now_time-datetime.timedelta(days=20)
@@ -46,29 +46,34 @@ if __name__ == "__main__":
                 celltype=1 #6040三元电芯
             elif 'PK502' in sn:
                 celltype=2 #4840三元电芯
-            elif 'PK504' in sn:
+            elif 'K504B' in sn:
                 celltype=99    #60ah林磷酸铁锂电芯
             elif 'MGMLXN750' in sn:
                 celltype=3 #力信50ah三元电芯
-            elif 'MGMCLN750' in sn: 
+            elif 'MGMCLN750' or 'UD' in sn: 
                 celltype=4 #CATL 50ah三元电芯
             else:
-                print('未找到对应电池编号!!!')
-                sys.exit()
+                print('SN:{},未找到对应电池类型!!!'.format(sn))
+                continue
+                # sys.exit()
             
-            # sn='PK50001A100000035'
-            # start_time='2021-08-10 9:49:37'
-            # end_time='2021-08-29 19:49:37'
+            # sn='PK504B10100004386'
+            # celltype=99
+            # start_time='2021-6-21 9:49:37'
+            # end_time='2021-6-22 19:49:37'
+            # df_bms= pd.read_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_'+sn+'.csv',encoding='GB18030')
 
+            #.....................................................................读取原始数据库数据...........................................................................
             dbManager = DBManager.DBManager()
             df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=['bms'])
             df_bms = df_data['bms']
-            # df_bms.to_csv('BMS_'+sn+'.csv',encoding='GB18030')
+            # df_bms.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\98Download\\'+'BMS_'+sn+'.csv',encoding='GB18030')
 
+            #.........................................................................计算一致性..............................................................................
             BatUniform=CBMSBatUniform.BatUniform(sn,celltype,df_bms)
             df_res=BatUniform.batuniform()
-            df_res.to_csv('CBMS_Uniform_'+sn+'.csv',encoding='GB18030')
-        
+            df_res.to_csv(r'D:\Platform\platform_python\data_analyze_platform\USER\01qixiang\99Result\\'+'CBMS_Uniform'+sn+'_3.csv',encoding='GB18030')
+            # print('done!!!')
         
         except IndexError as e:
             print(repr(e))