|
@@ -64,14 +64,11 @@ class SafetyAlarm:
|
|
packvoltfall=0
|
|
packvoltfall=0
|
|
|
|
|
|
if not self.df_ram_alarm.empty:
|
|
if not self.df_ram_alarm.empty:
|
|
- if (time_now-self.df_ram_alarm.loc[0,'time']).total_seconds()<300:
|
|
|
|
- safetywarning=self.df_ram_alarm['safetywarning']
|
|
|
|
- else:
|
|
|
|
- self.df_ram_alarm=pd.DataFrame(columns=['time','sn','safetywarning'])
|
|
|
|
- safetywarning=0
|
|
|
|
|
|
+ safetywarning1=self.df_ram_alarm.iloc[-1]['safetywarning1']
|
|
|
|
+ safetywarning2=self.df_ram_alarm.iloc[-1]['safetywarning2']
|
|
else:
|
|
else:
|
|
- self.df_ram_alarm=pd.DataFrame(columns=['time','sn','safetywarning'])
|
|
|
|
- safetywarning=0
|
|
|
|
|
|
+ safetywarning1=0
|
|
|
|
+ safetywarning2=0
|
|
|
|
|
|
if not self.df_bms.empty:
|
|
if not self.df_bms.empty:
|
|
for i in range(len(self.df_bms)):
|
|
for i in range(len(self.df_bms)):
|
|
@@ -208,7 +205,7 @@ class SafetyAlarm:
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
- #热失控故障判断........................................................................................................................
|
|
|
|
|
|
+ #热失控故障判断........................................................................................................................
|
|
df_bms_ram=pd.DataFrame(columns=['time', 'sn', 'packvolt', 'cellvolt', 'celltemp'])
|
|
df_bms_ram=pd.DataFrame(columns=['time', 'sn', 'packvolt', 'cellvolt', 'celltemp'])
|
|
df_bms_ram.loc[0]=[self.bmstime[0], self.sn, packvolt2, cellvolt2, temp2]
|
|
df_bms_ram.loc[0]=[self.bmstime[0], self.sn, packvolt2, cellvolt2, temp2]
|
|
df_ram_alarm=self.df_ram_alarm
|
|
df_ram_alarm=self.df_ram_alarm
|
|
@@ -218,25 +215,45 @@ class SafetyAlarm:
|
|
trw_array=np.array([trwtemp, trwcellvolt, trwpackvolt])
|
|
trw_array=np.array([trwtemp, trwcellvolt, trwpackvolt])
|
|
|
|
|
|
if np.sum(trw_array)>3.5 and np.sum(trw_array>0.5)>1.5:
|
|
if np.sum(trw_array)>3.5 and np.sum(trw_array>0.5)>1.5:
|
|
- fltcode='C599'
|
|
|
|
|
|
+ fltcode=119
|
|
df_res.loc[0]=[self.bmstime[len(self.bmstime)-1], end_time, self.sn, fltcode, 5, '电池发生热失控', '联系用户立即远离电池,并通知技术人员介入']
|
|
df_res.loc[0]=[self.bmstime[len(self.bmstime)-1], end_time, self.sn, fltcode, 5, '电池发生热失控', '联系用户立即远离电池,并通知技术人员介入']
|
|
- return df_res, df_bms_ram, df_ram_alarm
|
|
|
|
- elif safetywarning>2.5 and np.sum(trw_array)>1.5 and np.sum(trw_array>0.5)>1.5:
|
|
|
|
- fltcode='C599'
|
|
|
|
|
|
+ df_ram_alarm=pd.DataFrame(columns=['sn','time','safetywarning1','safetywarning2'])
|
|
|
|
+ elif safetywarning1>2.5 and np.sum(trw_array)>1.5 and np.sum(trw_array>0.5)>1.5:
|
|
|
|
+ fltcode=119
|
|
df_res.loc[0]=[self.bmstime[len(self.bmstime)-1], end_time, self.sn, fltcode, 5, '电池发生热失控', '联系用户立即远离电池,并通知技术人员介入']
|
|
df_res.loc[0]=[self.bmstime[len(self.bmstime)-1], end_time, self.sn, fltcode, 5, '电池发生热失控', '联系用户立即远离电池,并通知技术人员介入']
|
|
- return df_res, df_bms_ram, df_ram_alarm
|
|
|
|
|
|
+ df_ram_alarm=pd.DataFrame(columns=['sn','time','safetywarning1','safetywarning2'])
|
|
else:
|
|
else:
|
|
|
|
+ df_res=pd.DataFrame()
|
|
|
|
+ #更新df_ram_alarm信息
|
|
if np.sum(trw_array)>1.5 and np.sum(trw_array>0.5)>1.5:
|
|
if np.sum(trw_array)>1.5 and np.sum(trw_array>0.5)>1.5:
|
|
- safetywarning=3
|
|
|
|
- df_ram_alarm.loc[0]=[self.bmstime[len(self.bmstime)-1], self.sn, safetywarning]
|
|
|
|
|
|
+ safetywarning1=3
|
|
|
|
+ df_ram_alarm.loc[0]=[self.sn,time2,safetywarning1,safetywarning2]
|
|
|
|
+ else:
|
|
|
|
+ safetywarning1=0
|
|
|
|
+ df_ram_alarm=pd.DataFrame(columns=['sn','time','safetywarning1','safetywarning2'])
|
|
|
|
+ if max(cellvolt2)>5 or min(cellvolt2)<1:
|
|
|
|
+ safetywarning2=3
|
|
|
|
+ df_ram_alarm.loc[0]=[self.sn,time2,safetywarning1,safetywarning2]
|
|
|
|
+ elif max(cellvolt2)<4.5 and min(cellvolt2)>2.5:
|
|
|
|
+ safetywarning2=0
|
|
|
|
+ if safetywarning1==0:
|
|
|
|
+ df_ram_alarm=pd.DataFrame(columns=['sn','time','safetywarning1','safetywarning2'])
|
|
|
|
+ else:
|
|
|
|
+ df_ram_alarm.loc[0]=[self.sn,time2,safetywarning1,safetywarning2]
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
- return pd.DataFrame(), df_bms_ram, df_ram_alarm
|
|
|
|
-
|
|
|
|
|
|
+ return df_res, df_bms_ram, df_ram_alarm
|
|
|
|
+
|
|
else:
|
|
else:
|
|
- if safetywarning>2.5:
|
|
|
|
- fltcode='C599'
|
|
|
|
|
|
+ df_ram_alarm=self.df_ram_alarm
|
|
|
|
+ df_ram_bms=self.df_ram_bms
|
|
|
|
+ if (safetywarning1>2.5 or safetywarning2>2.5) and (time_now-df_ram_alarm.iloc[-1]['time']).total_seconds()>120:
|
|
|
|
+ fltcode=119
|
|
|
|
+ time_now=time_now.strftime('%Y-%m-%d %H:%M:%S')
|
|
|
|
+ time_now=datetime.datetime.strptime(time_now,'%Y-%m-%d %H:%M:%S')
|
|
df_res.loc[0]=[time_now, end_time, self.sn, fltcode, 5, '电池发生热失控', '联系用户立即远离电池,并通知技术人员介入']
|
|
df_res.loc[0]=[time_now, end_time, self.sn, fltcode, 5, '电池发生热失控', '联系用户立即远离电池,并通知技术人员介入']
|
|
- return df_res, self.df_ram_bms, self.df_ram_alarm
|
|
|
|
|
|
+ df_ram_alarm=pd.DataFrame(columns=['sn','time','safetywarning1','safetywarning2'])
|
|
else:
|
|
else:
|
|
- return pd.DataFrame(), self.df_ram_bms, self.df_ram_alarm
|
|
|
|
|
|
+ df_res=pd.DataFrame()
|
|
|
|
+ return df_res, df_ram_bms, df_ram_alarm
|
|
|
|
+
|