Skip to main content

热失控算法

安装

pip install thinkenergy-2.1.0-py3-none-any.whl
#执行激活脚本

使用方法

1.导入引擎工厂类

from thinkenergy.thinkengine import ThinkEngineFactory

2.使用 app_key 和 app_secret 初始化引擎工厂

Tip:用户需要申请app_key 和 app_secret,否则算法无法使用

tef = ThinkEngineFactory(app_key, app_secret)

3.根据算法编码获取具体的算法引擎

Tip:每一个算法都有对应的算法编号码,针对不同的算法请传入正确的算法编号,本例中A100154代表热失控算法

alg_code = 'A100154'
te1 = tef.get_engine(alg_code)

4.给算法引擎设置参数(可选)

Tip:算法参数可以通过两种方式实现:

通过算法配置文件

通过set_params方法实现

不配置参数会使用默认的参数

te1.set_params(params=params)   # 设置参数

5.调用算法

Tip:run()函数接收的数据为DataFarme,用户可以将自己的数据构建成符合算法的DataFarme,本例采用的是读取.csv格式文件中的数据转为DataFarme.

data = pd.read_csv(r'/tmp/sample_data_A100154.csv')
te1.run(data)

算法的使用参数说明如下:

参数类型示例说明
app_keystr123456用户申请的app_key
app_secretstr'I2NEWMBQFW7IMSD7XFZNHFARCVJAK7IZDK23BGABSWNU5QLBBCWLRFTL6QDAHDM32ZDA5ITFR6JPPJT3JHCBHZC77ZXNYSE4NUPHAEA='用户申请的app_secret
alg_codestrA100154算法编码
dataDataFramepandas二维数组
paramsdict算法配置

算法输入数据样例

算法传入数据DataFarme字段

#热失控
['vin', 'timestamp', 'current','max_single_volt', 'min_single_volt', 'max_temp', 'min_temp','single_volt_list','single_temp_list'](最少两条数据)

输入数据样例

sample_data_A100154.csv文件内容

不支持在 Docs 外粘贴 block

算法参数配置

#在配置文件中的配置
TR_PARAMS = {
'alg_config': {
'wp_p': {
'th_1': 1.03, #故障位上升到1级的阈值
'th_2': 1.23, #故障位上升到2级的阈值
'th_3': 1.43, #故障位上升到3级的阈值
'th_4': 1.63, #故障位上升到4级的阈值
'th_down_1': 0.9299999999999999, #由中间状态向0级状态转换的阈值
'th_down_2': 1.13,#由中间状态向1级状态转换的阈值
'th_down_3': 1.33,#由中间状态向2级状态转换的阈值
'th_down_4': 1.53,#由中间状态向3级状态转换的阈值
'down1': 0.85, #由高等级故障位向0级状态转换的阈值
'down2': 1.05, #由高等级故障位向1级状态转换的阈值
'down3': 1.25, #由高等级故障位向2级状态转换的阈值
'down4': 1.45, #由高等级故障位向3级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wsoc_p': {
'th_1': 0.066, #故障位上升到1级的阈值
'th_2': 0.106, #故障位上升到2级的阈值
'th_3': 0.146, #故障位上升到3级的阈值
'th_4': 0.186, #故障位上升到4级的阈值
'th_down_1': 0.056,#由中间状态向0级状态转换的阈值
'th_down_2': 0.096,#由中间状态向1级状态转换的阈值
'th_down_3': 0.136,#由中间状态向2级状态转换的阈值
'th_down_4': 0.176,#由中间状态向3级状态转换的阈值
'down1': 0.046, #由高等级故障位向0级状态转换的阈值
'down2': 0.086, #由高等级故障位向1级状态转换的阈值
'down3': 0.126, #由高等级故障位向2级状态转换的阈值
'down4': 0.166, #由高等级故障位向3级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wv_p': {
'th_1': 0.07, #故障位上升到1级的阈值
'th_2': 0.12, #故障位上升到2级的阈值
'th_down_1': 0.05, #由中间状态向0级状态转换的阈值
'th_down_2': 0.1, #由中间状态向1级状态转换的阈值
'down1': 0.03, #由高等级故障位向0级状态转换的阈值
'down2': 0.08, #由高等级故障位向1级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wt_p': {
'th_1': 8.0, #故障位上升到1级的阈值
'th_down_1': 7.0, #由中间状态向0级状态转换的阈值
'th_2': 12.0, #故障位上升到2级的阈值
'th_down_2': 11.0,#由中间状态向1级状态转换的阈值
'down1': 6.0, #由高等级故障位向0级状态转换的阈值
'down2': 10.0, #由高等级故障位向1级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wtt_p': {
'th_1': 7.0, #故障位上升到1级的阈值
'th_2': 11.0, #故障位上升到2级的阈值
'th_3': 15.0, #故障位上升到3级的阈值
'th_4': 19.0, #故障位上升到4级的阈值
'th_down_1': 6.0, #由中间状态向0级状态转换的阈值
'th_down_2': 10.0, #由中间状态向1级状态转换的阈值
'th_down_3': 14.0, #由中间状态向2级状态转换的阈值
'th_down_4': 18.0, #由中间状态向3级状态转换的阈值
'down1': 5.0, #由高等级故障位向0级状态转换的阈值
'down2': 9.0, #由高等级故障位向1级状态转换的阈值
'down3': 13.0, #由高等级故障位向2级状态转换的阈值
'down4': 17.0, #由高等级故障位向3级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'filter_p': {
'Lambda': 0.99, #低通滤波参数
'SGM_w': 0.01, #卡尔曼滤波的噪声
'SGM_v': 0.001 #卡尔曼滤波的噪声
}
},
'bat_config': {
'bat_mass': 1.0, #电池质量(kg)
'bat_cp': 900.0, #电池的恒压热容
'bat_cell_h': 15, #电池的对流换热系数
'bat_cell_as': 0.01, #电芯的散热面积
'ratedCap': 150.0, #电池包的容量
'bat_parall': 1,
'path': './Lookup_table.mat' #一阶RC等效电路模型的查表值(表路径)
}
}

## 详细实例demo

详细实例demo

import pandas as pd
from thinkenergy.thinkengine import ThinkEngineFactory

app_key = '123456' # 用户申请的 app_key
app_secret = 'I2NEWMBQFW7IMSD7XFZNHFARCVJAK7IZD' \
'K23BGABSWNU5QLBBCWLRFTL6QDAHDM32Z' \
'DA5ITFR6JPPJT3JHCBHZC77ZXNYSE4NUP' \
'HAEA=' # 用户申请的 app_secret
tef = ThinkEngineFactory(app_key, app_secret) # 初始化引擎工厂
# 实例化
alg_code = 'A100154' # 算法编号.本例为热失控算法编号
data = pd.read_csv(r'/tmp/charge_trip.csv', encoding = 'gbk') # 读取 CSV
params = {
'alg_config': {
'wp_p': {
'th_1': 1.03, #故障位上升到1级的阈值
'th_2': 1.23, #故障位上升到2级的阈值
'th_3': 1.43, #故障位上升到3级的阈值
'th_4': 1.63, #故障位上升到4级的阈值
'th_down_1': 0.9299999999999999, #由中间状态向0级状态转换的阈值
'th_down_2': 1.13,#由中间状态向1级状态转换的阈值
'th_down_3': 1.33,#由中间状态向2级状态转换的阈值
'th_down_4': 1.53,#由中间状态向3级状态转换的阈值
'down1': 0.85, #由高等级故障位向0级状态转换的阈值
'down2': 1.05, #由高等级故障位向1级状态转换的阈值
'down3': 1.25, #由高等级故障位向2级状态转换的阈值
'down4': 1.45, #由高等级故障位向3级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wsoc_p': {
'th_1': 0.066, #故障位上升到1级的阈值
'th_2': 0.106, #故障位上升到2级的阈值
'th_3': 0.146, #故障位上升到3级的阈值
'th_4': 0.186, #故障位上升到4级的阈值
'th_down_1': 0.056,#由中间状态向0级状态转换的阈值
'th_down_2': 0.096,#由中间状态向1级状态转换的阈值
'th_down_3': 0.136,#由中间状态向2级状态转换的阈值
'th_down_4': 0.176,#由中间状态向3级状态转换的阈值
'down1': 0.046, #由高等级故障位向0级状态转换的阈值
'down2': 0.086, #由高等级故障位向1级状态转换的阈值
'down3': 0.126, #由高等级故障位向2级状态转换的阈值
'down4': 0.166, #由高等级故障位向3级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wv_p': {
'th_1': 0.07, #故障位上升到1级的阈值
'th_2': 0.12, #故障位上升到2级的阈值
'th_down_1': 0.05, #由中间状态向0级状态转换的阈值
'th_down_2': 0.1, #由中间状态向1级状态转换的阈值
'down1': 0.03, #由高等级故障位向0级状态转换的阈值
'down2': 0.08, #由高等级故障位向1级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wt_p': {
'th_1': 8.0, #故障位上升到1级的阈值
'th_down_1': 7.0, #由中间状态向0级状态转换的阈值
'th_2': 12.0, #故障位上升到2级的阈值
'th_down_2': 11.0,#由中间状态向1级状态转换的阈值
'down1': 6.0, #由高等级故障位向0级状态转换的阈值
'down2': 10.0, #由高等级故障位向1级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'wtt_p': {
'th_1': 7.0, #故障位上升到1级的阈值
'th_2': 11.0, #故障位上升到2级的阈值
'th_3': 15.0, #故障位上升到3级的阈值
'th_4': 19.0, #故障位上升到4级的阈值
'th_down_1': 6.0, #由中间状态向0级状态转换的阈值
'th_down_2': 10.0, #由中间状态向1级状态转换的阈值
'th_down_3': 14.0, #由中间状态向2级状态转换的阈值
'th_down_4': 18.0, #由中间状态向3级状态转换的阈值
'down1': 5.0, #由高等级故障位向0级状态转换的阈值
'down2': 9.0, #由高等级故障位向1级状态转换的阈值
'down3': 13.0, #由高等级故障位向2级状态转换的阈值
'down4': 17.0, #由高等级故障位向3级状态转换的阈值
'Time_th': 3 #当状态需连续持续n次之后故障位才会升级
},
'filter_p': {
'Lambda': 0.99, #低通滤波参数
'SGM_w': 0.01, #卡尔曼滤波的噪声
'SGM_v': 0.001 #卡尔曼滤波的噪声
}
},
'bat_config': {
'bat_mass': 1.0, #电池质量(kg)
'bat_cp': 900.0, #电池的恒压热容
'bat_cell_h': 15, #电池的对流换热系数
'bat_cell_as': 0.01, #电芯的散热面积
'ratedCap': 150.0, #电池包的容量
'bat_parall': 1,
'path': './Lookup_table.mat' #一阶RC等效电路模型的查表值(表路径)
}
} #可传入符合厂商的配置参数
te1 = tef.get_engine(alg_code) # 获取热失控算法引擎
te1.set_params(params=params) # 设置参数.可选,非必须

print(te1.run(data)) # 调用热失控算法

算法结果

{
'ISC_FAULT': 2,
'Cap_dep_FAULT': 1,
'Heat_gen_FAULT': 1,
}