12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import sys
- import numpy as np
- import pandas as pd
- import string
- import os
- from pandas import Series
- from matplotlib import pyplot as plt
- from pandas.core.frame import DataFrame
- from pandas.core.indexes.base import Index
- from LIB.BACKEND import DBManager
- import datetime
- import time
- import string
- import re
- class CtrlSafty:
- def __init__(self):
- pass
- def main(sn,param,bms_info,df_Diag_Ram_in):
- df_Diag_Ram_Update_inside=DataFrame(columns=['start_time', 'end_time', 'product_id', 'code', 'level', 'info','advice'])
- df_Diag_Ram_Update_inside=df_Diag_Ram_Update_inside.append(df_Diag_Ram_in)
- global QuitErrCount
- VolStarkCount=[0 for i in range(param.CellVoltNums)]
- VolCount=0
- QuitErrCount=[0 for i in range(param.FaultCount)]
- #--------------该电池的所有当前故障-------------
- df_Diag_Ram_Update_inside=CtrlSafty.TempCtrlDiag(sn,bms_info,param,df_Diag_Ram_Update_inside)
- return df_Diag_Ram_Update_inside
- def TempCtrlDiag(sn,bms_info,param,df_Diag_Ram):
- ErrorFlg=0
- CellTempMax=0
- OtherTempMax=0
- CellTempNum=['单体温度'+str(i) for i in range(1,param.CellTempNums+1)]
- if 'MXMLX' in sn:
- OtherTempNum=['其他温度1','其他温度3','其他温度4','其他温度5']
- else:
- OtherTempNum=['其他温度'+str(i) for i in range(1,param.OtherTempNums+1)]
-
- CellTempMax=bms_info[bms_info[CellTempNum]>(param.CellMaxUSBTemp-5)]
- CellTempMax=CellTempMax[CellTempMax<(param.CellMaxUSBTemp+5)].dropna(axis=0,how='all')
- OtherTempMax=bms_info[bms_info[OtherTempNum]>(param.OtherOTlmt-10)]
- OtherTempMax=OtherTempMax[OtherTempMax[OtherTempNum]<(param.OtherOTlmt+5)].dropna(axis=0,how='all')
- if len(CellTempMax) and len(OtherTempMax):
- QuitErrCount[57]=0
- if not 57 in df_Diag_Ram['code'].values.tolist():#如果故障发生当前故障中没有该故障,则压入该故障
- df_Diag_Ram.loc[len(df_Diag_Ram)]=[bms_info.loc[len(bms_info)-1,'时间戳'],'0000-00-00 00:00:00',sn,57,4,'电芯温度高','立即联系用户确认电池状态']
- ErrorFlg=1
- else:#如果故障发生当前故障中有该故障,则不进行操作
- pass
- else:
- if 57 in df_Diag_Ram['code'].values.tolist():
- QuitErrCount[57]=QuitErrCount[57]+1
- if QuitErrCount[57]>3:
- QuitErrCount[57]=4
- end_time=datetime.datetime.now()
- end_time=end_time.strftime('%Y-%m-%d %H:%M:%S')
- df_Diag_Ram.loc[df_Diag_Ram[df_Diag_Ram['code']==57].index,['end_time']]=end_time
- else:
- pass
- else:
- pass
- return df_Diag_Ram
|