Browse Source

SOH和一致性代码更改:判断静置的条件改为电流<0.1A

qingfeng 3 years ago
parent
commit
692d0e1018

+ 6 - 6
LIB/MIDDLE/CellStateEstimation/SOH/V1_0_0/CBMSBatSoh.py

@@ -299,7 +299,7 @@ class BatSoh:
         standingtime=0
         for i in range(3,len(self.df_bms)-3):
 
-            if abs(self.packcrnt[i]) < 0.3 and abs(self.packcrnt[i-1]) < 0.3:     #电流为0
+            if abs(self.packcrnt[i]) < 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)     #获取不同温度对应的静置时间
@@ -313,7 +313,7 @@ class BatSoh:
                             minocv_socst=np.interp(min(cellvolt_st),self.param.LookTab_OCV,self.param.LookTab_SOC)
 
                             if abs(minocv_socst-minocv_socnow)>=40:   #当前时刻SOC与开始时刻SOC差>=20
-                                if abs(self.packcrnt[i+2])>=0.3:    #如果下一时刻电流>=0.5,则压入当前索引
+                                if abs(self.packcrnt[i+2])>=0.1:    #如果下一时刻电流>=0.5,则压入当前索引
                                     standingpoint_sp.append(i)
                                     standingpoint_st.append(i)
                                     tempweightlist.append(self.tempweight)
@@ -336,14 +336,14 @@ class BatSoh:
                                 else:
                                     continue
                         else:
-                            if abs(self.packcrnt[i+2])>=0.5:
+                            if abs(self.packcrnt[i+2])>=0.1:
                                 standingpoint_st.append(i)
                                 standingtime=0
                                 continue
                             else:
                                 continue
                     else:
-                        if abs(self.packcrnt[i+2])>0.5:
+                        if abs(self.packcrnt[i+2])>0.1:
                             standingpoint_st.append(i)
                             standingtime=0
                             continue
@@ -477,12 +477,12 @@ class BatSoh:
         for i in range(3,len(self.df_bms)-3):
 
             #获取两点法法所需数据-开始.................................................................................................................
-            if abs(self.packcrnt[i]) < 0.2 and abs(self.packcrnt[i-1]) < 0.3:     #判断非平台区静置状态
+            if abs(self.packcrnt[i]) < 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)     #获取不同温度对应的静置时间
 
-                if standingtime>self.StandardStandingTime and abs(self.packcrnt[i+2])>0.1:  #静置时间满足要求,且下一时刻电流>0.1A
+                if standingtime>self.StandardStandingTime and abs(self.packcrnt[i+2])>=0.1:  #静置时间满足要求,且下一时刻电流>0.1A
                     standingtime=0
                     cellvolt_now=self._cellvolt_get(i)
                     if max(cellvolt_now)<self.param.OcvInflexionBelow:      #当前最大电芯电压<OCV下拐点

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

@@ -166,13 +166,13 @@ class BatUniform:
 
         for i in range(1,len(self.df_bms)-2):
 
-            if abs(self.packcrnt[i]) < 0.3 and abs(self.packcrnt[i-1]) < 0.3:     #电流为0
+            if abs(self.packcrnt[i]) < 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)     #获取不同温度对应的静置时间
 
                 if standingtime>self.StandardStandingTime:      #静置时间满足要求
-                    if abs(self.packcrnt[i+2]) >= 0.3:
+                    if abs(self.packcrnt[i+2]) >= 0.1:
                         standingtime=0                    
                         cellvolt_now=self._cellvolt_get(i)     #获取当前行电压数据
                         cellvolt_min=min(cellvolt_now)
@@ -240,7 +240,7 @@ class BatUniform:
         for i in range(3,len(self.df_bms)-3):
 
             #静置电压法计算电芯一致性
-            if abs(self.packcrnt[i]) < 0.2 and abs(self.packcrnt[i-1]) < 0.2:     #电流为0
+            if abs(self.packcrnt[i]) < 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)     #获取不同温度对应的静置时间
@@ -249,7 +249,7 @@ class BatUniform:
                     cellvolt_now=self._cellvolt_get(i)     #获取当前行电压数据
                     cellvolt_min=min(cellvolt_now)
                     cellvolt_max=max(cellvolt_now)
-                    if abs(self.packcrnt[i+2]) >= 0.2 and cellvolt_max < self.param.OcvInflexionBelow:     
+                    if abs(self.packcrnt[i+2]) >= 0.1 and cellvolt_max < self.param.OcvInflexionBelow:     
                         standingtime=0                   
                         cellmin_num=cellvolt_now.index(cellvolt_min)+1
                         cellmax_num=cellvolt_now.index(cellvolt_max)+1