Browse Source

根据sn号判断电流方向

qingfeng 3 years ago
parent
commit
7742603d13

+ 8 - 3
LIB/MIDDLE/CellStateEstimation/SOH/V1_0_0/BatParam.py

@@ -29,6 +29,7 @@ class BatParam:
             self.CellTempNums=4
             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]
         
@@ -40,10 +41,11 @@ class BatParam:
             self.CellTempNums=4
             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]
         
-        elif celltype==3:
+        elif celltype==3:   #力信50ah三元电芯
             self.Capacity = 51
             self.PackFullChrgVolt=80
             self.CellFullChrgVolt=4.2
@@ -51,17 +53,19 @@ class BatParam:
             self.CellTempNums=4
             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]
         
-        elif celltype==4:
+        elif celltype==4:   #CATL 50ah三元电芯
             self.Capacity = 50
             self.PackFullChrgVolt=80
             self.CellFullChrgVolt=4.2
             self.CellVoltNums=20
-            self.CellTempNums=4
+            self.CellTempNums=2
             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]
         
@@ -77,6 +81,7 @@ class BatParam:
             self.CellTempNums=4
             self.FullChrgSoc=98
             self.PeakSoc=60.5
+            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]
         

+ 125 - 120
LIB/MIDDLE/CellStateEstimation/SOH/V1_0_0/CBMSBatSoh.py

@@ -3,8 +3,8 @@ import numpy as np
 import datetime
 import bisect
 import matplotlib.pyplot as plt
-from LIB.MIDDLE.CellStateEstimation.SOH.V1_0_0 import BatParam
-from LIB.MIDDLE.CellStateEstimation.SOH.V1_0_0 import DBDownload
+# from LIB.MIDDLE.CellStateEstimation.SOH.V1_0_0 import BatParam
+# from LIB.MIDDLE.CellStateEstimation.SOH.V1_0_0 import DBDownload
 import BatParam
 import DBDownload
 
@@ -15,7 +15,7 @@ class BatSoh:
         self.celltype=celltype
         self.param=BatParam.BatParam(celltype)
         self.df_bms=df_bms
-        self.packcrnt=df_bms['总电流[A]']
+        self.packcrnt=df_bms['总电流[A]']*self.param.PackCrntDec
         self.packvolt=df_bms['总电压[V]']
         self.bms_soc=df_bms['SOC[%]']
         self.bms_soh=df_bms['SOH[%]']
@@ -120,6 +120,107 @@ class BatSoh:
             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
+        Ah = 0  #参数赋初始值
+        Volt = cellvolt[chrg_st]
+        DV_Volt=[]
+        DQ_Ah = []
+        DVDQ = []
+        time2 = []
+        soc2 = []
+        Ah_tatal=[0]
+        xvolt=[]
+        #计算DV和DQ值
+        for j in range(chrg_st,chrg_end):
+            Step=(self.bmstime[j+1]-self.bmstime[j]).total_seconds()
+            Ah=Ah-self.packcrnt[j]*Step/3600
+            if (cellvolt[j]-Volt)>0.0009 and Ah>0:
+                Ah_tatal.append(Ah_tatal[-1]+Ah)
+                DQ_Ah.append(Ah)
+                DV_Volt.append(cellvolt[j]-Volt)
+                DVDQ.append((DV_Volt[-1])/DQ_Ah[-1])
+                xvolt.append(cellvolt[j])
+                Volt=cellvolt[j]
+                Ah = 0
+                time2.append(self.bmstime[j])
+                soc2.append(self.bms_soc[j])
+
+        #切片,去除前后10min的数据
+        df_Data1 = pd.DataFrame({'time': time2,
+                                'SOC': soc2,
+                                'DVDQ': DVDQ,
+                                'Ah_tatal': Ah_tatal[:-1],
+                                'DQ_Ah':DQ_Ah,
+                                'DV_Volt':DV_Volt,
+                                'XVOLT':xvolt})
+        start_time=df_Data1.loc[0,'time']
+        start_time=start_time+datetime.timedelta(seconds=900)
+        end_time=df_Data1.loc[len(time2)-1,'time']
+        end_time=end_time-datetime.timedelta(seconds=1200)
+        if soc2[0]<40:
+            df_Data1=df_Data1[(df_Data1['SOC']>43) & (df_Data1['time']<end_time)]
+        else:
+            df_Data1=df_Data1[(df_Data1['time']>start_time) & (df_Data1['time']<end_time)]
+
+        # ax1 = plt.subplot(3, 1, 1)
+        # plt.plot(df_Data1['XVOLT'],df_Data1['DVDQ'],'r*-')
+        # plt.xlabel('Volt/V')
+        # plt.ylabel('DV/DQ')
+        # plt.legend()
+        # ax1 = plt.subplot(3, 1, 2)
+        # plt.plot(df_Data1['SOC'],df_Data1['XVOLT'],'y*-')
+        # plt.xlabel('SOC/%')
+        # plt.ylabel('Volt/V')
+        # plt.legend()
+        # ax1 = plt.subplot(3, 1, 3)
+        # plt.plot(df_Data1['SOC'], df_Data1['DVDQ'], 'r*-')
+        # plt.xlabel('SOC/%')
+        # plt.ylabel('DV/DQ')
+        # plt.legend()
+        # plt.show()
+
+        #寻找峰值并计算Soh
+        if len(df_Data1)>1:
+            PeakIndex=df_Data1['DVDQ'].idxmax()
+            #筛选峰值点附近±0.5%SOC内的数据
+            df_Data2=df_Data1[(df_Data1['SOC']>(df_Data1['SOC'][PeakIndex]-0.5)) & (df_Data1['SOC']<(df_Data1['SOC'][PeakIndex]+0.5))]
+            if len(df_Data2)>2:
+                Ah_tatal1 = df_Data1['Ah_tatal']
+                DVDQ = df_Data1['DVDQ']
+                soc2 = df_Data1['SOC']
+                xvolt = df_Data1['XVOLT']
+                if soc2[PeakIndex]>43 and soc2[PeakIndex]<90:
+                    cellsoh_init=(Ah_tatal[-1]-Ah_tatal1[PeakIndex]) * 100 / ((self.param.FullChrgSoc - self.param.PeakSoc) * 0.01 * self.param.Capacity)
+                    if cellsoh_init<95:
+                        cellsoh_init=cellsoh_init*0.3926+58.14
+                        return cellsoh_init
+                    else:
+                        return cellsoh_init
+                else:
+                    return 0
+            else:
+                df_Data1=df_Data1.drop([PeakIndex])
+                PeakIndex = df_Data1['DVDQ'].idxmax()
+                df_Data2 = df_Data1[(df_Data1['SOC'] > (df_Data1['SOC'][PeakIndex] - 0.5)) & (df_Data1['SOC'] < (df_Data1['SOC'][PeakIndex] + 0.5))]
+                if len(df_Data2) > 2:
+                    Ah_tatal1 = df_Data1['Ah_tatal']
+                    DVDQ = df_Data1['DVDQ']
+                    soc2 = df_Data1['SOC']
+                    xvolt = df_Data1['XVOLT']
+                    if soc2[PeakIndex]>40 and soc2[PeakIndex]<90:
+                        cellsoh_init=(Ah_tatal[-1]-Ah_tatal1[PeakIndex]) * 100 / ((self.param.FullChrgSoc - self.param.PeakSoc) * 0.01 * self.param.Capacity)
+                        if cellsoh_init<95:
+                            cellsoh_init=cellsoh_init*0.3926+58.14
+                            return cellsoh_init
+                        else:
+                            return cellsoh_init
+                    else:
+                        return 0
+                else:
+                    return 0
+        else:
+            return 0
                 
     def _ncmsoh_chrg(self):     #NCM充电数据soh计算 
         self._chrgdata()
@@ -587,129 +688,33 @@ class BatSoh:
             if chrg_end:
                 for i in range(len(chrg_end)):
                     cellvolt_max = self.df_bms['单体电压' + str(cellmaxvolt_number2[i]+1)] / 1000     #获取最大电压
-                    cellvolt=self._np_move_avg(cellvolt_max, 3, mode="same")     #对电压进行滑动平均滤波
-                    
-                    Ah = 0  #参数赋初始值
-                    Volt = cellvolt[chrg_start[i]]
-                    DV_Volt=[]
-                    DQ_Ah = []
-                    DVDQ = []
-                    time2 = []
-                    soc2 = []
-                    Ah_tatal=[0]
-                    xvolt=[]
-                    #计算DV和DQ值
-                    for j in range(chrg_start[i],chrg_end[i]):
-                        Step=(self.bmstime[j+1]-self.bmstime[j]).total_seconds()
-                        Ah=Ah-self.packcrnt[j]*Step/3600
-                        if (cellvolt[j]-Volt)>0.0009 and Ah>0:
-                            Ah_tatal.append(Ah_tatal[-1]+Ah)
-                            DQ_Ah.append(Ah)
-                            DV_Volt.append(cellvolt[j]-Volt)
-                            DVDQ.append((DV_Volt[-1])/DQ_Ah[-1])
-                            xvolt.append(cellvolt[j])
-                            Volt=cellvolt[j]
-                            Ah = 0
-                            time2.append(self.bmstime[j])
-                            soc2.append(self.bms_soc[j])
-
-                    #切片,去除前后10min的数据
-                    df_Data1 = pd.DataFrame({'time': time2,
-                                            'SOC': soc2,
-                                            'DVDQ': DVDQ,
-                                            'Ah_tatal': Ah_tatal[:-1],
-                                            'DQ_Ah':DQ_Ah,
-                                            'DV_Volt':DV_Volt,
-                                            'XVOLT':xvolt})
-                    start_time=df_Data1.loc[0,'time']
-                    start_time=start_time+datetime.timedelta(seconds=900)
-                    end_time=df_Data1.loc[len(time2)-1,'time']
-                    end_time=end_time-datetime.timedelta(seconds=1200)
-                    if soc2[0]<40:
-                        df_Data1=df_Data1[(df_Data1['SOC']>43) & (df_Data1['time']<end_time)]
-                    else:
-                        df_Data1=df_Data1[(df_Data1['time']>start_time) & (df_Data1['time']<end_time)]
-            
-                    # ax1 = plt.subplot(3, 1, 1)
-                    # plt.plot(df_Data1['XVOLT'],df_Data1['DVDQ'],'r*-')
-                    # plt.xlabel('Volt/V')
-                    # plt.ylabel('DV/DQ')
-                    # plt.legend()
-                    # ax1 = plt.subplot(3, 1, 2)
-                    # plt.plot(df_Data1['SOC'],df_Data1['XVOLT'],'y*-')
-                    # plt.xlabel('SOC/%')
-                    # plt.ylabel('Volt/V')
-                    # plt.legend()
-                    # ax1 = plt.subplot(3, 1, 3)
-                    # plt.plot(df_Data1['SOC'], df_Data1['DVDQ'], 'r*-')
-                    # plt.xlabel('SOC/%')
-                    # plt.ylabel('DV/DQ')
-                    # plt.legend()
-                    # plt.show()
-
-                    #寻找峰值并计算Soh和置信度
-                    if len(df_Data1)>1:
-                        PeakIndex=df_Data1['DVDQ'].idxmax()
-                        #筛选峰值点附近±0.5%SOC内的数据
-                        df_Data2=df_Data1[(df_Data1['SOC']>(df_Data1['SOC'][PeakIndex]-0.5)) & (df_Data1['SOC']<(df_Data1['SOC'][PeakIndex]+0.5))]
-                        if len(df_Data2)>2:
-                            Ah_tatal1 = df_Data1['Ah_tatal']
-                            DVDQ = df_Data1['DVDQ']
-                            soc2 = df_Data1['SOC']
-                            xvolt = df_Data1['XVOLT']
-                            if soc2[PeakIndex]>43 and soc2[PeakIndex]<90:
-                                cellsoh_init=(Ah_tatal[-1]-Ah_tatal1[PeakIndex]) * 100 / ((self.param.FullChrgSoc - self.param.PeakSoc) * 0.01 * self.param.Capacity)
-                                if cellsoh_init<95:
-                                    cellsoh_init=cellsoh_init*0.3926+58.14
-                                else:
-                                    pass
-                            else:
-                                continue
-                        else:
-                            df_Data1=df_Data1.drop([PeakIndex])
-                            PeakIndex = df_Data1['DVDQ'].idxmax()
-                            df_Data2 = df_Data1[(df_Data1['SOC'] > (df_Data1['SOC'][PeakIndex] - 0.5)) & (df_Data1['SOC'] < (df_Data1['SOC'][PeakIndex] + 0.5))]
-                            if len(df_Data2) > 2:
-                                Ah_tatal1 = df_Data1['Ah_tatal']
-                                DVDQ = df_Data1['DVDQ']
-                                soc2 = df_Data1['SOC']
-                                xvolt = df_Data1['XVOLT']
-                                if soc2[PeakIndex]>40 and soc2[PeakIndex]<90:
-                                    cellsoh_init=(Ah_tatal[-1]-Ah_tatal1[PeakIndex]) * 100 / ((self.param.FullChrgSoc - self.param.PeakSoc) * 0.01 * self.param.Capacity)
-                                    if cellsoh_init<95:
-                                        cellsoh_init=cellsoh_init*0.3926+58.14
-                                    else:
-                                        pass
-                                else:
-                                    continue
-                            else:
-                                continue
-                        
-                        soh_weight=tempweightlist2[i]*0.25
-                        if cellsoh_init>65 and cellsoh_init<115:    #判断soh值的有效区间
-                            if len(df_res)<1:
-                                if not self.df_soh.empty:
-                                    cellsoh_last=self.df_soh.loc[len(self.df_soh)-1,'soh']
-                                    if soh_weight>1/abs(cellsoh_init-cellsoh_last):
-                                        soh_weight=1/abs(cellsoh_init-cellsoh_last)
-                                        cellsoh_cal=cellsoh_init*soh_weight + cellsoh_last*(1-soh_weight)
-                                    else:
-                                        cellsoh_cal=cellsoh_init*soh_weight + cellsoh_last*(1-soh_weight)
-                                else:
-                                    cellsoh_cal=cellsoh_init*soh_weight+100*(1-soh_weight)
-                            else:
-                                cellsoh_last=df_res.loc[len(df_res)-1,'soh']
+                    cellvolt=self._np_move_avg(cellvolt_max, 3, mode="same")     #对电压进行滑动平均滤
+
+                    cellsoh_init=self._dvdq_soh(chrg_start[i],chrg_end[i],cellvolt)     #dvdq计算soh
+
+                    soh_weight=tempweightlist2[i]*0.25
+                    if cellsoh_init>65 and cellsoh_init<115:    #判断soh值的有效区间
+                        if len(df_res)<1:
+                            if not self.df_soh.empty:
+                                cellsoh_last=self.df_soh.loc[len(self.df_soh)-1,'soh']
                                 if soh_weight>1/abs(cellsoh_init-cellsoh_last):
                                     soh_weight=1/abs(cellsoh_init-cellsoh_last)
                                     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'))
-                            soh_list=[self.bmstime[chrg_start[i]], self.bmstime[chrg_end[i]], self.sn, 2, cellsoh_cal, str(cellsoh_cal)]
-                            df_res.loc[len(df_res)]=soh_list
+                            else:
+                                cellsoh_cal=cellsoh_init*soh_weight+100*(1-soh_weight)
                         else:
-                            continue
+                            cellsoh_last=df_res.loc[len(df_res)-1,'soh']
+                            if soh_weight>1/abs(cellsoh_init-cellsoh_last):
+                                soh_weight=1/abs(cellsoh_init-cellsoh_last)
+                                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'))
+                        soh_list=[self.bmstime[chrg_start[i]], self.bmstime[chrg_end[i]], self.sn, 2, cellsoh_cal, str(cellsoh_cal)]
+                        df_res.loc[len(df_res)]=soh_list
                     else:
                         continue
             else:

+ 8 - 3
LIB/MIDDLE/CellStateEstimation/Uniform/V1_0_0/BatParam.py

@@ -29,6 +29,7 @@ class BatParam:
             self.CellTempNums=4
             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]
         
@@ -40,10 +41,11 @@ class BatParam:
             self.CellTempNums=4
             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]
         
-        elif celltype==3:
+        elif celltype==3:   #力信50ah三元电芯
             self.Capacity = 51
             self.PackFullChrgVolt=80
             self.CellFullChrgVolt=4.2
@@ -51,17 +53,19 @@ class BatParam:
             self.CellTempNums=4
             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]
         
-        elif celltype==4:
+        elif celltype==4:   #CATL 50ah三元电芯
             self.Capacity = 50
             self.PackFullChrgVolt=80
             self.CellFullChrgVolt=4.2
             self.CellVoltNums=20
-            self.CellTempNums=4
+            self.CellTempNums=2
             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]
         
@@ -77,6 +81,7 @@ class BatParam:
             self.CellTempNums=4
             self.FullChrgSoc=98
             self.PeakSoc=60.5
+            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]
         

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

@@ -4,7 +4,7 @@ import datetime
 import bisect
 import matplotlib.pyplot as plt
 import BatParam
-from LIB.MIDDLE.CellStateEstimation.SOH.V1_0_0 import BatParam
+# from LIB.MIDDLE.CellStateEstimation.SOH.V1_0_0 import BatParam
 
 class BatUniform:
     def __init__(self,sn,celltype,df_bms):  #参数初始化
@@ -13,7 +13,7 @@ class BatUniform:
         self.celltype=celltype
         self.param=BatParam.BatParam(celltype)
         self.df_bms=df_bms
-        self.packcrnt=df_bms['总电流[A]']
+        self.packcrnt=df_bms['总电流[A]']*self.param.PackCrntDec
         self.packvolt=df_bms['总电压[V]']
         self.bms_soc=df_bms['SOC[%]']
         self.bmstime= pd.to_datetime(df_bms['时间戳'], format='%Y-%m-%d %H:%M:%S')