Browse Source

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

lmstack 3 years ago
parent
commit
65b86e4e94
1 changed files with 29 additions and 19 deletions
  1. 29 19
      LIB/MIDDLE/CellStateEstimation/BatSafetyAlarm/V1_0_1/CBMSSafetyAlarm.py

+ 29 - 19
LIB/MIDDLE/CellStateEstimation/BatSafetyAlarm/V1_0_1/CBMSSafetyAlarm.py

@@ -93,7 +93,7 @@ class SafetyAlarm:
 
                         delttime=(time2-time1).total_seconds()
                         celltemp_rate=(max(temp2-temp1)*60)/delttime    #计算最大温升速率
-                        if celltemp_rate>self.param.TrwTempRate:
+                        if celltemp_rate>self.param.TrwTempRate and self.param.CellTempLwLmt<min(temp1) and max(temp1)<self.param.CellTempUpLmt:
                             celltemprise=1
                         else:
                             pass
@@ -106,7 +106,7 @@ class SafetyAlarm:
 
                     delttime=(time2-time1).total_seconds()
                     celltemp_rate=(max(temp2-temp1)*60)/delttime    #计算最大温升速率
-                    if celltemp_rate>self.param.TrwTempRate:
+                    if celltemp_rate>self.param.TrwTempRate and self.param.CellTempLwLmt<min(temp1) and max(temp1)<self.param.CellTempUpLmt:
                         celltemprise=1
                     else:
                         pass
@@ -170,29 +170,39 @@ class SafetyAlarm:
                 pass
                 
             #电池包诊断.....................................................................................................................................
-            if i<1:
-                if not self.df_bms_ram.empty:
-                    time1=self.df_bms_ram.iloc[-1]['time']
-                    time2=self.bmstime[i]
-                    delttime=(time2-time1).total_seconds()
-                    packvolt1=self.df_bms_ram.iloc[-1]['packvolt']
-                    packvolt2=self.packvolt[i]
-                    if delttime<310:
-                        if self.packcrnt[i]<5 and (packvolt1-packvolt2)>self.param.TrwPackVoltFall:
-                            packvoltfall=1
+            packvolt2=self.packvolt[i]
+            #电池包电压有效性............................................................................................................................
+            if self.param.CellVoltNums<packvolt2<self.param.CellVoltNums*4.5:
+                packvoltvalid=1
+            else:
+                packvoltvalid=0
+            
+
+            if packvoltvalid==1:
+                if i<1:
+                    if not self.df_bms_ram.empty:
+                        time1=self.df_bms_ram.iloc[-1]['time']
+                        time2=self.bmstime[i]
+                        delttime=(time2-time1).total_seconds()
+                        packvolt1=self.df_bms_ram.iloc[-1]['packvolt']
+                    
+                        if delttime<310:
+                            if self.packcrnt[i]<5 and (packvolt1-packvolt2)>self.param.TrwPackVoltFall and self.param.CellVoltNums<packvolt1<self.param.CellVoltNums*4.5:
+                                packvoltfall=1
+                            else:
+                                pass
                         else:
                             pass
                     else:
                         pass
                 else:
-                    packvolt2=self.packvolt[i]
+                    packvolt1=self.packvolt[i-1]
+                    if self.packcrnt[i]<5 and (packvolt1-packvolt2)>self.param.TrwPackVoltFall and self.param.CellVoltNums<packvolt1<self.param.CellVoltNums*4.5:
+                        packvoltfall=1
+                    else:
+                        pass
             else:
-                packvolt1=self.packvolt[i-1]
-                packvolt2=self.packvolt[i]
-                if self.packcrnt[i]<5 and (packvolt1-packvolt2)>self.param.TrwPackVoltFall:
-                    packvoltfall=1
-                else:
-                    pass
+                pass
         
         #热失控故障判断........................................................................................................................
         df_bms_ram=pd.DataFrame(columns=['time', 'sn', 'packvolt',  'cellvolt', 'celltemp'])