Browse Source

Merge branch 'dev' of http://git.fast-fun.cn:92/lmstack/data_analyze_platform into dev

lmstack 3 years ago
parent
commit
8bda3e2153

+ 9 - 8
LIB/MIDDLE/CellStateEstimation/Common/BatParam.py

@@ -30,8 +30,8 @@ class BatParam:
             self.FullChrgSoc=98
             self.PeakSoc=57
             self.PackCrntDec=1
-            self.LookTab_SOC = [0,	    3.5348,	8.3581,	13.181,	18.004,	22.827,	27.651,	32.474,	37.297,	42.120,	46.944,	51.767,	56.590,	61.413,	66.237,	71.060,	75.883,	80.707,	85.530,	90.353,	95.176,	100]
-            self.LookTab_OCV = [3.3159,	3.4384,	3.4774,	3.5156,	3.5478,	3.5748,	3.6058,	3.6238,	3.638,	3.6535,	3.6715,	3.6951,	3.7279,	3.7757,	3.8126,	3.8529,	3.8969,	3.9446,	3.9946,	4.0491,	4.109,	4.183]
+            self.LookTab_SOC = [0,	    3.5348,	8.3581,	13.181,	18.004,	22.827,	27.651,	32.474,	37.297,	42.120,	46.944,	51.767,	56.590,	61.413,	66.237,	71.060,	75.883,	80.707,	85.530,	90.353,	95.176,	100,   105]
+            self.LookTab_OCV = [3.3159,	3.4384,	3.4774,	3.5156,	3.5478,	3.5748,	3.6058,	3.6238,	3.638,	3.6535,	3.6715,	3.6951,	3.7279,	3.7757,	3.8126,	3.8529,	3.8969,	3.9446,	3.9946,	4.0491,	4.109,	4.183, 4.263]
         
         elif celltype==2: #4840
             self.Capacity = 41
@@ -42,8 +42,8 @@ class BatParam:
             self.FullChrgSoc=98
             self.PeakSoc=57
             self.PackCrntDec=1
-            self.LookTab_SOC = [0,	    3.5348,	8.3581,	13.181,	18.004,	22.827,	27.651,	32.474,	37.297,	42.120,	46.944,	51.767,	56.590,	61.413,	66.237,	71.060,	75.883,	80.707,	85.530,	90.353,	95.176,	100]
-            self.LookTab_OCV = [3.3159,	3.4384,	3.4774,	3.5156,	3.5478,	3.5748,	3.6058,	3.6238,	3.638,	3.6535,	3.6715,	3.6951,	3.7279,	3.7757,	3.8126,	3.8529,	3.8969,	3.9446,	3.9946,	4.0491,	4.109,	4.183]
+            self.LookTab_SOC = [0,	    3.5348,	8.3581,	13.181,	18.004,	22.827,	27.651,	32.474,	37.297,	42.120,	46.944,	51.767,	56.590,	61.413,	66.237,	71.060,	75.883,	80.707,	85.530,	90.353,	95.176,	100,   105]
+            self.LookTab_OCV = [3.3159,	3.4384,	3.4774,	3.5156,	3.5478,	3.5748,	3.6058,	3.6238,	3.638,	3.6535,	3.6715,	3.6951,	3.7279,	3.7757,	3.8126,	3.8529,	3.8969,	3.9446,	3.9946,	4.0491,	4.109,	4.183, 4.263]
         
         elif celltype==3:   #力信50ah三元电芯
             self.Capacity = 51
@@ -54,8 +54,8 @@ class BatParam:
             self.FullChrgSoc=98
             self.PeakSoc=57
             self.PackCrntDec=1
-            self.LookTab_SOC = [0,	    5,	    10,	    15,	    20,	    25,	    30,	    35,	    40,	    45,	    50,	    55,	    60,	    65,	    70,	    75,	    80,	    85,	    90,	    95,	    100]
-            self.LookTab_OCV = [3.357, 	3.455, 	3.493, 	3.540, 	3.577, 	3.605, 	3.622, 	3.638, 	3.655, 	3.677, 	3.707, 	3.757, 	3.815, 	3.866, 	3.920, 	3.976, 	4.036, 	4.099, 	4.166, 	4.237, 	4.325]
+            self.LookTab_SOC = [0,	    5,	    10,	    15,	    20,	    25,	    30,	    35,	    40,	    45,	    50,	    55,	    60,	    65,	    70,	    75,	    80,	    85,	    90,	    95,	    100,   105]
+            self.LookTab_OCV = [3.357, 	3.455, 	3.493, 	3.540, 	3.577, 	3.605, 	3.622, 	3.638, 	3.655, 	3.677, 	3.707, 	3.757, 	3.815, 	3.866, 	3.920, 	3.976, 	4.036, 	4.099, 	4.166, 	4.237, 	4.325, 4.415]
         
         elif celltype==4:   #CATL 50ah三元电芯
             self.Capacity = 50
@@ -66,8 +66,8 @@ class BatParam:
             self.FullChrgSoc=98
             self.PeakSoc=57
             self.PackCrntDec=-1
-            self.LookTab_SOC = [0,	    5,	    10,	    15,	    20,	    25,	    30,	    35,	    40,	    45,	    50,	    55,	    60,	    65,	    70,	    75,	    80,	    85,	    90,	    95,	    100]
-            self.LookTab_OCV = [3.152, 	3.397, 	3.438, 	3.481, 	3.523, 	3.560, 	3.586, 	3.604, 	3.620, 	3.638, 	3.661, 	3.693, 	3.748, 	3.803, 	3.853, 	3.903, 	3.953, 	4.006, 	4.063, 	4.121, 	4.183]
+            self.LookTab_SOC = [0,	    5,	    10,	    15,	    20,	    25,	    30,	    35,	    40,	    45,	    50,	    55,	    60,	    65,	    70,	    75,	    80,	    85,	    90,	    95,	    100,   105]
+            self.LookTab_OCV = [3.152, 	3.397, 	3.438, 	3.481, 	3.523, 	3.560, 	3.586, 	3.604, 	3.620, 	3.638, 	3.661, 	3.693, 	3.748, 	3.803, 	3.853, 	3.903, 	3.953, 	4.006, 	4.063, 	4.121, 	4.183, 4.253]
         
         elif celltype==99:   #60ah磷酸铁锂电芯
             self.Capacity = 54
@@ -81,6 +81,7 @@ class BatParam:
             self.CellTempNums=4
             self.FullChrgSoc=98
             self.PeakSoc=60.5
+            self.PeakCellVolt=[3.357,3.358,3.359,3.36,3.361]
             self.PackCrntDec=1
             self.LookTab_SOC = [0.00, 	2.40, 	6.38, 	10.37, 	14.35, 	18.33, 	22.32, 	26.30, 	30.28, 	35.26, 	40.24, 	45.22, 	50.20, 	54.19, 	58.17, 	60.16, 	65.14, 	70.12, 	75.10, 	80.08, 	84.06, 	88.05, 	92.03, 	96.02, 	100.00]
             self.LookTab_OCV = [2.7151,	3.0298,	3.1935,	3.2009,	3.2167,	3.2393,	3.2561,	3.2703,	3.2843,	3.2871,	3.2874,	3.2868,	3.2896,	3.2917,	3.2967,	3.3128,	3.3283,	3.3286,	3.3287,	3.3288,	3.3289,	3.3296,	3.3302,	3.3314,	3.3429]

+ 36 - 39
LIB/MIDDLE/CellStateEstimation/SOH/V1_0_0/CBMSBatSoh.py

@@ -17,6 +17,7 @@ class BatSoh:
         self.packvolt=df_bms['总电压[V]']
         self.bms_soc=df_bms['SOC[%]']
         self.bms_soh=df_bms['SOH[%]']
+        self.bmsstat=df_bms['充电状态']
         self.bmstime= pd.to_datetime(df_bms['时间戳'], format='%Y-%m-%d %H:%M:%S')
 
         self.df_accum=df_accum
@@ -41,15 +42,18 @@ class BatSoh:
         else:
             return pd.DataFrame()
 
-    def getdata(self):  #获取预算结果库的结果
+    #获取预算结果库的结果....................................................................................................................
+    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='soh_result', sn=self.sn)
     
-    def _np_move_avg(self,a, n, mode="same"): #定义滑动滤波函数
+    #定义滑动滤波函数.........................................................................................................................
+    def _np_move_avg(self,a, n, mode="same"):
         return (np.convolve(a, np.ones((n,)) / n, mode=mode))
 
-    def _chrgdata(self):    #筛选充电数据
+    #筛选充电数据..............................................................................................................................
+    def _chrgdata(self):    
         self.ChgStart=[]
         self.ChgEnd=[]
         if len(self.packvolt)>100:
@@ -63,7 +67,8 @@ class BatSoh:
                 elif i == (len(self.bmstime) - 4) and self.bmsstat[len(self.bmsstat)-1] == 2 and self.bmsstat[len(self.bmsstat)-2] == 2:
                     self.ChgEnd.append(len(self.bmstime)-2)
     
-    def _celltemp_weight(self,num):   #寻找当前行数据的最小温度值
+    #寻找当前行数据的最小温度值.................................................................................................................
+    def _celltemp_weight(self,num):   
         celltemp = []
         for j in range(1, self.param.CellTempNums+1):
             s = str(j)
@@ -96,7 +101,8 @@ class BatSoh:
                 self.tempweight=0.1
                 self.StandardStandingTime=3600
 
-    def _deltsoc_weight(self,deltsoc):   #获取SOC差对应的SOH权重值
+    #获取SOC差对应的SOH权重值...................................................................................................................
+    def _deltsoc_weight(self,deltsoc):   
         if deltsoc>60:   
             deltsoc_weight=1
         elif deltsoc>50:
@@ -111,14 +117,16 @@ class BatSoh:
             deltsoc_weight=0
         return deltsoc_weight
 
-    def _cellvolt_get(self,num): #获取当前行所有电压数据
+    #获取当前行所有电压数据......................................................................................................................
+    def _cellvolt_get(self,num): 
         cellvolt=[]
         for j in range(1, self.param.CellVoltNums+1): 
             s = str(j)
             cellvolt.append(self.df_bms.loc[num,'单体电压' + s]/1000)
         return cellvolt
     
-    def _dvdq_soh(self, chrg_st, chrg_end,cellvolt):    #dvdq方法计算soh
+    #dvdq方法计算soh...........................................................................................................................
+    def _dvdq_soh(self, chrg_st, chrg_end,cellvolt):    
         Ah = 0  #参数赋初始值
         Volt = cellvolt[chrg_st]
         DV_Volt=[]
@@ -219,7 +227,8 @@ class BatSoh:
         else:
             return 0
                 
-    def _ncmsoh_chrg(self):     #NCM充电数据soh计算 
+    #NCM充电数据soh计算.........................................................................................................................
+    def _ncmsoh_chrg(self):      
         self._chrgdata()
         self.getdata()
         ChgStartValid=[]
@@ -282,6 +291,7 @@ class BatSoh:
             return df_res
         return pd.DataFrame()
 
+    #两点法计算三元SOH.........................................................................................................................
     def _ncmsoh_twopoint(self):
         standingpoint_st=[]
         standingpoint_sp=[]
@@ -289,7 +299,7 @@ class BatSoh:
         standingtime=0
         for i in range(3,len(self.df_bms)-3):
 
-            if abs(self.packcrnt[i]) < 0.3:     #电流为0
+            if abs(self.packcrnt[i]) < 0.3 and abs(self.packcrnt[i-1]) < 0.3:     #电流为0
                 delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
@@ -345,6 +355,7 @@ class BatSoh:
                 standingtime=0
                 continue
 
+        #计算SOH......................................................................................................................
         if standingpoint_sp:
             self.getdata()  #获取已计算的soh
             column_name=['time_st','time_sp','sn','method','soh','cellsoh']
@@ -450,6 +461,7 @@ class BatSoh:
                 return df_res
         return pd.DataFrame()
 
+    #两点法和DVDQ法计算磷酸铁锂电池SOH..................................................................................................................
     def _lfpsoh(self):
         standingpoint_st=[]
         standingpoint_sp=[]
@@ -464,8 +476,8 @@ class BatSoh:
 
         for i in range(3,len(self.df_bms)-3):
 
-            #获取两点法法所需数据-开始
-            if abs(self.packcrnt[i]) < 0.2:     #判断非平台区静置状态
+            #获取两点法法所需数据-开始.................................................................................................................
+            if abs(self.packcrnt[i]) < 0.2 and abs(self.packcrnt[i-1]) < 0.3:     #判断非平台区静置状态
                 delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
@@ -521,16 +533,10 @@ class BatSoh:
             else:
                 standingtime=0
                 pass
-            #获取两点法所需数据-结束
 
-            #获取DVDQ算法所需数据——开始
-            if i==3 and self.packcrnt[1]<=-1 and self.packcrnt[2]<=-1 and self.packcrnt[3]<=-1:
-                self._celltemp_weight(i)
-                chrg_start.append(i)
-                tempweightlist2.append(self.tempweight)
-                charging=1
-            elif self.packcrnt[i-1]>-1 and self.packcrnt[i]<=-1 and self.packcrnt[i+1]<=-1 and self.packcrnt[i+2]<=-1:     #判断充电开始
-                if self.bms_soc[i]<45:
+            #获取DVDQ算法所需数据——开始.............................................................................................................
+            if charging==0:
+                if self.packcrnt[i]<=-1 and self.packcrnt[i+1]<=-1 and self.packcrnt[i+2]<=-1 and self.bms_soc[i]<45:     #充电开始
                     self._celltemp_weight(i)
                     charging=1
                     if len(chrg_start)>len(chrg_end):
@@ -541,10 +547,8 @@ class BatSoh:
                         tempweightlist2.append(self.tempweight)
                 else:
                     pass
-            else:
-                pass
 
-            if charging==1: #充电中
+            else: #充电中
                 if (self.bmstime[i+1]-self.bmstime[i]).total_seconds()>180:  #如果充电过程中时间间隔>180s,则舍弃该次充电
                     chrg_start.remove(chrg_start[-1])
                     tempweightlist2.remove(tempweightlist2[-1])
@@ -559,7 +563,7 @@ class BatSoh:
                         continue
                     else:
                         pass
-                elif self.packcrnt[i+1]>-0.1 and self.packcrnt[i+2]>-0.1 and self.packcrnt[i+3]>-0.1:   #判断充电结束
+                elif self.packcrnt[i+1]>-0.1 and self.packcrnt[i+2]>-0.1:   #判断充电结束
                     charging=0
                     if len(chrg_start)>len(chrg_end):
                         chrg_start.remove(chrg_start[-1])
@@ -580,17 +584,18 @@ class BatSoh:
                             tempweightlist2.remove(tempweightlist2[-1])
                             continue
                     else:
-                        continue   
-            else:
-                pass
-            #获取DVDQ算法所需数据——结束
+                        continue  
+                else:
+                    continue 
         
-        if standingpoint_sp or chrg_end:       #开始计算SOH
+        #开始计算SOH.............................................................................................................................................
+        if standingpoint_sp or chrg_end:       
             self.getdata()  #获取已计算的soh
             column_name=['time_st','time_sp','sn','method','soh','cellsoh']
             df_res=pd.DataFrame(columns=column_name)
         
-            if standingpoint_sp:    #两点法计算SOH
+            #两点法计算SOH........................................................................................................................................
+            if standingpoint_sp:    
                 for i in range(len(standingpoint_sp)):  #判断为满充点或者下拐点
                     if self.packcrnt[standingpoint_sp[i]]<=-1:
                         cellocv_st=self._cellvolt_get(standingpoint_st[i])    
@@ -682,6 +687,7 @@ class BatSoh:
             else:
                 pass
 
+            #DVDQ法计算SOH.......................................................................................................................................
             if chrg_end:
                 for i in range(len(chrg_end)):
                     cellvolt_max = self.df_bms['单体电压' + str(cellmaxvolt_number2[i]+1)] / 1000     #获取最大电压
@@ -724,12 +730,3 @@ class BatSoh:
         return pd.DataFrame()
 
 
-
-
-
-
-
-
-            
-                
-

+ 12 - 11
LIB/MIDDLE/CellStateEstimation/SOH/main.py

@@ -1,16 +1,11 @@
 import CBMSBatSoh
 import log
 #coding=utf-8
-import os
-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
 
 host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
 port=3306
@@ -21,16 +16,17 @@ tablename='soh_result'
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
-    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')
+    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号']
 
-    SNnums=SNnums_6040.tolist()+SNnums_6060.tolist()+SNnums_4840.tolist()
+    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)
@@ -55,7 +51,12 @@ if __name__ == "__main__":
                 celltype=4 #CATL 50ah三元电芯
             else:
                 print('未找到对应电池编号!!!')
-                sys.exit()
+                # sys.exit()
+            
+            # sn='MGMCLN750N215H001'
+            # start_time='2021-08-01 18:52:08'
+            # end_time='2021-08-31 18:52:08'
+            
             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']

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

@@ -21,7 +21,7 @@ class BatUniform:
         if self.celltype==1 or self.celltype==2 or self.celltype==3 or self.celltype==4:
             df_res=self._ncm_uniform()
             return df_res
-            
+                     
         elif self.celltype==99:
             df_res=self._lfp_uniform()
             return df_res
@@ -29,10 +29,12 @@ class BatUniform:
         else:
             return pd.DataFrame()
     
-    def _np_move_avg(self,a, n, mode="same"): #定义滑动滤波函数
+    #定义滑动滤波函数........................................................................................................................................
+    def _np_move_avg(self,a, n, mode="same"): 
         return (np.convolve(a, np.ones((n,)) / n, mode=mode))
     
-    def _celltemp_weight(self,num):   #寻找当前行数据的最小温度值
+    #寻找当前行数据的最小温度值................................................................................................................................
+    def _celltemp_weight(self,num):   
         celltemp = []
         for j in range(1, self.param.CellTempNums+1):
             s = str(j)
@@ -65,14 +67,16 @@ class BatUniform:
                 self.tempweight=0.2
                 self.StandardStandingTime=3600
 
-    def _cellvolt_get(self,num): #获取当前行所有电压数据
+    #获取当前行所有电压数据............................................................................................................................
+    def _cellvolt_get(self,num):
         cellvolt=[]
         for j in range(1, self.param.CellVoltNums+1): 
             s = str(j)
             cellvolt.append(self.df_bms.loc[num,'单体电压' + s]/1000)
         return(cellvolt)
 
-    def _dvdq_peak(self, time, soc, cellvolt, packcrnt):    #寻找DVDQ的峰值点,并返回
+    #寻找DVDQ的峰值点,并返回..........................................................................................................................
+    def _dvdq_peak(self, time, soc, cellvolt, packcrnt):    
         cellvolt1 = self._np_move_avg(cellvolt, 5, mode="same")
         Soc = 0
         Ah = 0
@@ -154,6 +158,7 @@ class BatUniform:
         else:
             return 0
  
+    #三元电池一致性计算.................................................................................................................................
     def _ncm_uniform(self):
         column_name=['time','sn','cellsoc_diff','cellvolt_diff','cellmin_num','cellmax_num']
         df_res=pd.DataFrame(columns=column_name)
@@ -161,8 +166,8 @@ class BatUniform:
 
         for i in range(1,len(self.df_bms)-2):
 
-            if abs(self.packcrnt[i]) < 0.3:     #电流为0
-                delttime=(self.bmstime[i+1]-self.bmstime[i]).total_seconds()
+            if abs(self.packcrnt[i]) < 0.3 and abs(self.packcrnt[i-1]) < 0.3:     #电流为0
+                delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
 
@@ -223,6 +228,7 @@ class BatUniform:
         else:
             return df_res
 
+    #磷酸铁锂电池一致性计算.........................................................................................................................
     def _lfp_uniform(self):
         column_name=['time','sn','cellsoc_diff','cellvolt_diff','cellmin_num','cellmax_num']
         df_res=pd.DataFrame(columns=column_name)
@@ -234,8 +240,8 @@ class BatUniform:
         for i in range(3,len(self.df_bms)-3):
 
             #静置电压法计算电芯一致性
-            if abs(self.packcrnt[i]) < 0.2:     #电流为0
-                delttime=(self.bmstime[i+1]-self.bmstime[i]).total_seconds()
+            if abs(self.packcrnt[i]) < 0.2 and abs(self.packcrnt[i-1]) < 0.2:     #电流为0
+                delttime=(self.bmstime[i]-self.bmstime[i-1]).total_seconds()
                 standingtime=standingtime+delttime
                 self._celltemp_weight(i)     #获取不同温度对应的静置时间
 
@@ -273,12 +279,9 @@ class BatUniform:
                 standingtime=0
                 pass   
 
-            #获取DVDQ算法所需数据——开始
-            if i==3 and self.packcrnt[1]<=-1 and self.packcrnt[2]<=-1 and self.packcrnt[3]<=-1:
-                chrg_start.append(i)
-                charging=1
-            elif self.packcrnt[i-1]>-1 and self.packcrnt[i]<=-1 and self.packcrnt[i+1]<=-1 and self.packcrnt[i+2]<=-1:     #判断充电开始
-                if self.bms_soc[i]<45:
+            #获取DVDQ算法所需数据——开始............................................................................................................
+            if charging==0: #判断充电开始
+                if self.packcrnt[i]<=-1 and self.packcrnt[i+1]<=-1 and self.packcrnt[i+2]<=-1 and self.bms_soc[i]<45:     #充电开始
                     charging=1
                     if len(chrg_start)>len(chrg_end):
                         chrg_start[-1]=i
@@ -286,10 +289,8 @@ class BatUniform:
                         chrg_start.append(i)
                 else:
                     pass
-            else:
-                pass
 
-            if charging==1: #充电中
+            else: #充电中
                 if (self.bmstime[i+1]-self.bmstime[i]).total_seconds()>180:  #如果充电过程中时间间隔>180s,则舍弃该次充电
                     chrg_start.remove(chrg_start[-1])
                     charging=0
@@ -302,7 +303,7 @@ class BatUniform:
                         continue
                     else:
                         pass
-                elif self.packcrnt[i+1]>-0.1 and self.packcrnt[i+2]>-0.1 and self.packcrnt[i+3]>-0.1:   #判断充电结束
+                elif self.packcrnt[i+1]>-0.1 and self.packcrnt[i+2]>-0.1:   #判断充电结束
                     charging=0
                     if len(chrg_start)>len(chrg_end):
                         if self.bms_soc[i]>90:
@@ -322,10 +323,9 @@ class BatUniform:
                             chrg_start.remove(chrg_start[-1])
                             continue
                     else:
-                        continue   
-            else:
-                pass
-            #获取DVDQ算法所需数据——结束
+                        continue
+                else:
+                    continue   
 
         if chrg_end:    #DVDQ方法计算soc差
             peaksoc_list=[]

+ 7 - 2
LIB/MIDDLE/CellStateEstimation/Uniform/main.py

@@ -15,6 +15,11 @@ from urllib import parse
 
 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骑享')
@@ -24,10 +29,10 @@ if __name__ == "__main__":
     SNnums_4840=SNdata_4840['SN号']
     SNnums_7250=SNdata_7250['SN号']
 
-    SNnums=SNnums_6040.tolist()+SNnums_6060.tolist()+SNnums_4840.tolist()+SNnums_7250.tolist()
+    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=5)
+    start_time=now_time-datetime.timedelta(days=20)
     end_time=str(now_time)
     start_time=str(start_time)