Преглед изворни кода

Merge branch 'V3-7250-QTF' into V3-V31XX-7250

CHENJIE-PC\QiXiang_CHENJIE пре 3 година
родитељ
комит
d8076194bd

+ 1 - 0
inc/EmbeddedCoder_inc/BCU.h

@@ -3,6 +3,7 @@
 #include "SFM.h"
 #include "SPM.h"
 #include "CM.h"
+#include "ISC.h"
 #include "TMS.h"
 #include "BCUCal.h"
 #include "BCUDisp.h"

+ 2 - 0
inc/EmbeddedCoder_inc/BCUCal.h

@@ -83,6 +83,8 @@ extern const uint16_T sfmc_T_disChrgMosTOverThrRec2;
 
 extern const uint16_T sohc_Q_countThr;                       /*                    */
 extern const uint16_T sohc_Q_updateDeltThr;                 /*                    */
+extern const uint16_T sohc_pct_low;
+extern const uint16_T sohc_pct_up;
 
 
 extern const uint16_T socc_pct_battSocLow;                    /* SOC下限值; */

+ 145 - 146
inc/EmbeddedCoder_inc/BCUDisp.h

@@ -1,146 +1,145 @@
-
-#include "rtwtypes.h"
-#include "BCUCal.h"
-
-extern uint16_T appv_V_cellU[cmnc_num_cellUNumMax];                        /* 静态电压 */
-extern uint8_T appd_st_preCyc;
-
-extern uint16_T blcv_Q_reqCpEi[cmnc_num_cellUNumMax];                      /*均衡需求容量 读取量(数组); */
-extern uint16_T blcv_Q_reqCpEo[cmnc_num_cellUNumMax];                      /*均衡需求容量 写入量(数组); */
-extern uint32_T blcv_Q_totalCpEi[cmnc_num_cellUNumMax];                    /*累计均衡容量 读取量(数组); */
-extern uint32_T blcv_Q_totalCpEo[cmnc_num_cellUNumMax];                    /*累计均衡容量 写入量(数组); */
-extern boolean_T blcv_flg_excute[cmnc_num_cellUNumMax];                    /*均衡执行请求标志位 (数组); */
-
-extern boolean_T ihd_flg_HVILFlt;                        /* 保护板上传的高压互锁故障 */
-extern boolean_T ihd_flg_DTCClear;                       /* 上位机发送的故障清楚指令;*/
-extern uint8_T ihd_st_authFaild;                         /* 底层诊断的认证失败故障;*/
-extern int16_T ihd_I_curr;                               /*电池包电流; */
-extern uint8_T ihd_st_chrgConnect;                       /*充电器连接状态; */
-extern uint16_T ihd_P_gas;                               /*气体浓度 */
-extern uint16_T ihd_T_ACPlugT;                           /*慢充插头温度 +40 */
-extern uint16_T ihd_T_DCPlugT;                           /*快充插头温度+40 */
-extern uint16_T ihd_T_bdtemp;                            /*板子温度 */
-extern uint16_T ihd_T_heatPanT1;                         /*加热板温度1+40 */
-extern uint16_T ihd_T_heatPanT2;                         /*加热板温度2 +40 */
-extern uint16_T ihd_T_mosT;                              /*Mos温度+40 */
-extern boolean_T ihd_flg_EESaveFlt;                      /*EE存储故障 */
-extern boolean_T ihd_flg_battULowFlt;                    /*保护板上传的总压欠压故障; */
-extern boolean_T ihd_flg_battUOverFlt;                   /*保护板上传的总压过压故障; */
-extern boolean_T ihd_flg_cellULowFlt;                    /*保护板上传的单体欠压故障; */
-extern boolean_T ihd_flg_cellUOverFlt;                   /*保护板上传的单体过压故障; */
-extern boolean_T ihd_flg_chrgCurrOverFlt;                /*保护板上传的充电过流故障; */
-extern boolean_T ihd_flg_chrgModTLowFlt;                 /*保护板上传的充电模组温度过低故障; */
-extern boolean_T ihd_flg_chrgModTOverFlt;                /*保护板上传的充电模组温度过高故障; */
-extern boolean_T ihd_flg_chrgMosClosFlt;                 /*充电Mos失效 */
-extern boolean_T ihd_flg_chrgMosTOverFlt;                /*保护板上传的充电Mos温度过高故障; */
-extern boolean_T ihd_flg_currOpenFlt;                    /*保护板上传的电流开路故障 */
-extern boolean_T ihd_flg_disChrgCurrOverFlt;             /*保护板上传的放电过流故障; */
-extern boolean_T ihd_flg_disChrgModTLowFlt;              /*保护板上传的放电模组温度过低故障; */
-extern boolean_T ihd_flg_disChrgModTOverFlt;             /*保护板上传的放电模组温度过高故障; */
-extern boolean_T ihd_flg_disChrgMosClosFlt;              /*放电Mos失效 */
-extern boolean_T ihd_flg_disChrgMosTOverFlt;             /*保护板上传的放电Mos温度过高故障; */
-extern boolean_T ihd_flg_urtRecFlt;                      /*内网通讯故障 */
-extern uint16_T ihd_pct_soc;                             /*保护板SOC */
-extern uint16_T ihd_pct_soh;                             /*保护板SOH */
-extern uint8_T ihd_st_workStat;                          /*电池工作状态 */
-extern uint16_T ihd_tm_parkTime;                         /*驻车时间; */
-extern uint16_T ihv_T_modT[cmnc_num_modTNumMax];                           /*模组温度(数组)+40 */
-extern uint16_T ihv_V_cellU[cmnc_num_cellUNumMax];                         /*电池单体电压(数组); */
-extern boolean_T ihd_st_chrgMosControl;    
-extern boolean_T ihd_st_disChrgMosControl; 
-extern boolean_T ihd_st_relayControl;    
-extern uint8_T ihd_st_heatForceControl;
-extern uint8_T ihd_st_EOLState;
-extern boolean_T ihd_flg_urtRecFlg;
-
-extern int16_T sfmd_I_curr;                              /*处理后整包电流 */
-extern uint16_T sfmd_T_modTMax;                          /*处理后模组温度最小 */
-extern uint16_T sfmd_T_modTMin;                          /*处理后模组温度最大 */
-extern uint16_T sfmd_idx_modTMax;                          /*处理后模组温度最小 */
-extern uint16_T sfmd_idx_modTMin;                          /*处理后模组温度最大 */
-extern uint16_T sfmd_V_cellUAvrg;                        /*处理后单体电压平均 */
-extern uint16_T sfmd_V_cellUMax;                         /*处理后单体电压最大 */
-extern uint16_T sfmd_V_cellUMin;                         /*处理后单体电压最小 */
-extern uint16_T sfmd_idx_cellUMin;
-extern uint16_T sfmd_idx_cellUMax;
-extern boolean_T sfmd_flg_cellUDisable;                  /*单体电压有效标志位 ; 0为有效;1为无效 */
-extern boolean_T sfmd_flg_currDisable;                   /*电流有效标志位 ; 0为有效;1为无效 */
-extern boolean_T sfmd_flg_modTDisable;                   /*模组温度有效标志位 ; 0为有效;1为无效 */
-extern uint16_T sfmd_num_fltNum;                         /*故障数量 */
-extern uint8_T sfmd_st_fltAct;                           /*故障禁止指令 */
-extern uint8_T sfmd_st_fltLevel;                         /*故障等级 */
-extern uint16_T sfmv_T_modT[cmnc_num_modTNumMax];                          /*处理后模组温度 */
-extern uint16_T sfmv_V_cellU[cmnc_num_cellUNumMax];                        /*处理后单体电压 */
-extern uint16_T sfmv_idx_fltCode[20];                    /*诊断故障码(数组) */
-extern uint16_T sfmd_V_battU;                            /* 处理过后的总电压 */
-extern boolean_T sfmd_flg_mainCirClosFltEi;              /*主回路常闭故障读取量 */  
-extern boolean_T sfmd_flg_mainCirClosFltEo;              /*主回路常闭故障写入量 */  
-extern boolean_T sfmd_flg_heatCirClosFltEi;              /*加热回路常闭故障读取量 */  
-extern boolean_T sfmd_flg_heatCirClosFltEo;              /*加热回路常闭故障写入量 */  
-extern boolean_T sfmd_flg_heatCirOpenFltEi;              /*加热回路常开故障读取量 */  
-extern boolean_T sfmd_flg_heatCirOpenFltEo;              /*加热回路常开故障写入量 */  
-extern boolean_T sfmd_flg_heatRunFltEi;
-extern boolean_T sfmd_flg_heatRunFltEo;
-extern boolean_T sfmd_flg_iscFltEi;
-extern boolean_T sfmd_flg_iscFltEo;
-
-extern uint16_T socd_pct_ahSoc;                          /*安时SOC; */
-extern uint16_T socd_pct_estSoc;                         /*估算SOC;*/
-extern uint16_T socd_flg_EEsave;                         /*实时存储标志位;*/
-extern uint16_T socd_pct_ekfSoc;                         /*EKFSOC;*/
-extern uint16_T socd_pct_battSoc;                        /*电池真实SOC; */
-extern uint16_T socd_pct_battSocEi;                      /*电池真实SOC 读取量; */
-extern uint16_T socd_pct_battSocEo;                      /*电池真实SOC 写入量; */
-extern uint16_T socd_pct_bcuSoc;                         /*电池显示SOC; */
-extern uint16_T socd_pct_bcuSocEi;                       /*电池显示SOC读取量; */
-extern uint16_T socd_pct_bcuSocEo;                       /*电池显示SOC写入量; */
-extern uint16_T socd_pct_bcuSoc_Delay;                   /*电池显示SOC延时; */
-extern uint16_T socv_pct_cellSoc[cmnc_num_cellUNumMax];
-extern uint16_T socd_pct_cellBattSoc;
-extern boolean_T socd_flg_cellSocDisable;
-
-extern uint16_T sohd_Q_chrgEi;                           /*充入容量读取量; */
-extern uint16_T sohd_Q_chrgEo;                           /*充入容量写入量; */
-extern boolean_T sohd_flg_chrgEndEi;                     /*充电结束标志位读取量; */
-extern boolean_T sohd_flg_chrgEndEo;                     /*充电结束标志位写入量; */
-extern uint16_T sohd_pct_bcuSoh;                         /*电池SOH; */
-extern uint16_T sohd_pct_bcuSoh_Delay;                   /*电池SOH延时; */
-extern uint16_T sohd_tm_chrgStartStatEi;                 /*充电前静置时间读取量; */
-extern uint16_T sohd_tm_chrgStartStatEo;                 /*充电前静置时间写入量; */
-extern uint16_T sohv_Q_cellCap[cmnc_num_cellUNumMax];                      /*单体容量 */
-extern uint16_T sohv_Q_cellCapArrEi[cmnc_num_cellUNumMax];                 /*单体容量(数组) 读取量 */
-extern uint16_T sohv_Q_cellCapArrEo[cmnc_num_cellUNumMax];                 /*单体容量(数组) 写入量 */
-extern uint16_T sohv_Q_packCapArrEi[10];                 /*10次整包容量(数组)读取量; */
-extern uint16_T sohv_Q_packCapArrEo[10];                 /*10次整包容量(数组)写入量; */
-extern uint16_T sohv_V_chrgStartStatEi[cmnc_num_cellUNumMax];              /*充电开始时刻的单体电压(数组)读取量; */
-extern uint16_T sohv_V_chrgStartStatEo[cmnc_num_cellUNumMax];              /*充电开始时刻的单体电压(数组)写入量; */
-
-extern boolean_T iscd_flg_flt;
-extern uint16_T iscv_Q_remainCpEi[cmnc_num_cellUNumMax];
-extern uint32_T iscd_tm_totalEi;
-extern uint16_T iscv_Q_remainCpEo[cmnc_num_cellUNumMax];
-extern uint32_T iscd_tm_totalEo;
-
-extern uint8_T tmsd_st_heatAct;                          /*热管理请求状态; */
-
-extern uint8_T cmd_st_chrgMod;                           /* 充电模式  */
-extern uint8_T cmd_st_chrgSt;                            /* 充电状态  */
-extern int16_T cmd_I_chrgCurrReq;                       /* 充电需求电流  */
-extern uint8_T cmd_idx_chrgEndReason;                    /* 充电结束原因  */
-
-extern uint16_T cand_Nr_cellNr;                          /*循环发送的单体编号; */
-extern uint16_T cand_Q_cellCap;                          /*循环发送的单体容量; */
-extern uint16_T cand_V_chrgStartStat;                    /*循环发送的充电前单体电压; */
-extern uint16_T cand_Q_reqCp;                            /*循环发送的单体需求均衡容量; */
-extern uint16_T cand_Q_totalCp;                          /*循环发送的单体累计均衡容量; */
-
-extern int16_T  cdmv_V_deltOCV[cmnc_num_cellUNumMax];
-extern int16_T  cdmv_ohm_deltR[cmnc_num_cellUNumMax];
-extern boolean_T cdmd_flg_deltOCVDisable;
-
-extern uint16_T test_efkSocMin;
-extern uint16_T test_efkSocMax;
-extern real_T test_UpMin;
-extern real_T test_UpMax;
-extern uint16_T test_ekfSoc;
-extern uint16_T test_ekfSoc0;
+
+#include "rtwtypes.h"
+#include "BCUCal.h"
+
+extern uint16_T appv_V_cellU[cmnc_num_cellUNumMax];                        /* 静态电压 */
+extern uint8_T appd_st_preCyc;
+
+extern uint16_T blcv_Q_reqCpEi[cmnc_num_cellUNumMax];                      /*均衡需求容量 读取量(数组); */
+extern uint16_T blcv_Q_reqCpEo[cmnc_num_cellUNumMax];                      /*均衡需求容量 写入量(数组); */
+extern uint32_T blcv_Q_totalCpEi[cmnc_num_cellUNumMax];                    /*累计均衡容量 读取量(数组); */
+extern uint32_T blcv_Q_totalCpEo[cmnc_num_cellUNumMax];                    /*累计均衡容量 写入量(数组); */
+extern boolean_T blcv_flg_excute[cmnc_num_cellUNumMax];                    /*均衡执行请求标志位 (数组); */
+
+extern boolean_T ihd_flg_HVILFlt;                        /* 保护板上传的高压互锁故障 */
+extern boolean_T ihd_flg_DTCClear;                       /* 上位机发送的故障清楚指令;*/
+extern uint8_T ihd_st_authFaild;                         /* 底层诊断的认证失败故障;*/
+extern int16_T ihd_I_curr;                               /*电池包电流; */
+extern uint8_T ihd_st_chrgConnect;                       /*充电器连接状态; */
+extern uint16_T ihd_P_gas;                               /*气体浓度 */
+extern uint16_T ihd_T_ACPlugT;                           /*慢充插头温度 +40 */
+extern uint16_T ihd_T_DCPlugT;                           /*快充插头温度+40 */
+extern uint16_T ihd_T_bdtemp;                            /*板子温度 */
+extern uint16_T ihd_T_heatPanT1;                         /*加热板温度1+40 */
+extern uint16_T ihd_T_heatPanT2;                         /*加热板温度2 +40 */
+extern uint16_T ihd_T_mosT;                              /*Mos温度+40 */
+extern boolean_T ihd_flg_EESaveFlt;                      /*EE存储故障 */
+extern boolean_T ihd_flg_battULowFlt;                    /*保护板上传的总压欠压故障; */
+extern boolean_T ihd_flg_battUOverFlt;                   /*保护板上传的总压过压故障; */
+extern boolean_T ihd_flg_cellULowFlt;                    /*保护板上传的单体欠压故障; */
+extern boolean_T ihd_flg_cellUOverFlt;                   /*保护板上传的单体过压故障; */
+extern boolean_T ihd_flg_chrgCurrOverFlt;                /*保护板上传的充电过流故障; */
+extern boolean_T ihd_flg_chrgModTLowFlt;                 /*保护板上传的充电模组温度过低故障; */
+extern boolean_T ihd_flg_chrgModTOverFlt;                /*保护板上传的充电模组温度过高故障; */
+extern boolean_T ihd_flg_chrgMosClosFlt;                 /*充电Mos失效 */
+extern boolean_T ihd_flg_chrgMosTOverFlt;                /*保护板上传的充电Mos温度过高故障; */
+extern boolean_T ihd_flg_currOpenFlt;                    /*保护板上传的电流开路故障 */
+extern boolean_T ihd_flg_disChrgCurrOverFlt;             /*保护板上传的放电过流故障; */
+extern boolean_T ihd_flg_disChrgModTLowFlt;              /*保护板上传的放电模组温度过低故障; */
+extern boolean_T ihd_flg_disChrgModTOverFlt;             /*保护板上传的放电模组温度过高故障; */
+extern boolean_T ihd_flg_disChrgMosClosFlt;              /*放电Mos失效 */
+extern boolean_T ihd_flg_disChrgMosTOverFlt;             /*保护板上传的放电Mos温度过高故障; */
+extern boolean_T ihd_flg_urtRecFlt;                      /*内网通讯故障 */
+extern uint16_T ihd_pct_soc;                             /*保护板SOC */
+extern uint16_T ihd_pct_soh;                             /*保护板SOH */
+extern uint8_T ihd_st_workStat;                          /*电池工作状态 */
+extern uint16_T ihd_tm_parkTime;                         /*驻车时间; */
+extern uint16_T ihv_T_modT[cmnc_num_modTNumMax];                           /*模组温度(数组)+40 */
+extern uint16_T ihv_V_cellU[cmnc_num_cellUNumMax];                         /*电池单体电压(数组); */
+extern boolean_T ihd_st_chrgMosControl;    
+extern boolean_T ihd_st_disChrgMosControl; 
+extern boolean_T ihd_st_relayControl;    
+extern uint8_T ihd_st_heatForceControl;
+extern uint8_T ihd_st_EOLState;
+extern boolean_T ihd_flg_urtRecFlg;
+
+extern int16_T sfmd_I_curr;                              /*处理后整包电流 */
+extern uint16_T sfmd_T_modTMax;                          /*处理后模组温度最小 */
+extern uint16_T sfmd_T_modTMin;                          /*处理后模组温度最大 */
+extern uint16_T sfmd_idx_modTMax;                          /*处理后模组温度最小 */
+extern uint16_T sfmd_idx_modTMin;                          /*处理后模组温度最大 */
+extern uint16_T sfmd_V_cellUAvrg;                        /*处理后单体电压平均 */
+extern uint16_T sfmd_V_cellUMax;                         /*处理后单体电压最大 */
+extern uint16_T sfmd_V_cellUMin;                         /*处理后单体电压最小 */
+extern uint16_T sfmd_idx_cellUMin;
+extern uint16_T sfmd_idx_cellUMax;
+extern boolean_T sfmd_flg_cellUDisable;                  /*单体电压有效标志位 ; 0为有效;1为无效 */
+extern boolean_T sfmd_flg_currDisable;                   /*电流有效标志位 ; 0为有效;1为无效 */
+extern boolean_T sfmd_flg_modTDisable;                   /*模组温度有效标志位 ; 0为有效;1为无效 */
+extern uint16_T sfmd_num_fltNum;                         /*故障数量 */
+extern uint8_T sfmd_st_fltAct;                           /*故障禁止指令 */
+extern uint8_T sfmd_st_fltLevel;                         /*故障等级 */
+extern uint16_T sfmv_T_modT[cmnc_num_modTNumMax];                          /*处理后模组温度 */
+extern uint16_T sfmv_V_cellU[cmnc_num_cellUNumMax];                        /*处理后单体电压 */
+extern uint16_T sfmv_idx_fltCode[20];                    /*诊断故障码(数组) */
+extern uint16_T sfmd_V_battU;                            /* 处理过后的总电压 */
+extern boolean_T sfmd_flg_mainCirClosFltEi;              /*主回路常闭故障读取量 */  
+extern boolean_T sfmd_flg_mainCirClosFltEo;              /*主回路常闭故障写入量 */  
+extern boolean_T sfmd_flg_heatCirClosFltEi;              /*加热回路常闭故障读取量 */  
+extern boolean_T sfmd_flg_heatCirClosFltEo;              /*加热回路常闭故障写入量 */  
+extern boolean_T sfmd_flg_heatCirOpenFltEi;              /*加热回路常开故障读取量 */  
+extern boolean_T sfmd_flg_heatCirOpenFltEo;              /*加热回路常开故障写入量 */  
+extern boolean_T sfmd_flg_heatRunFltEi;
+extern boolean_T sfmd_flg_heatRunFltEo;
+extern boolean_T sfmd_flg_iscFltEi;
+extern boolean_T sfmd_flg_iscFltEo;
+
+extern uint16_T socd_pct_ahSoc;                          /*安时SOC; */
+extern uint16_T socd_pct_estSoc;                         /*估算SOC;*/
+extern uint16_T socd_flg_EEsave;                         /*实时存储标志位;*/
+extern uint16_T socd_pct_ekfSoc;                         /*EKFSOC;*/
+extern uint16_T socd_pct_battSoc;                        /*电池真实SOC; */
+extern uint16_T socd_pct_battSocEi;                      /*电池真实SOC 读取量; */
+extern uint16_T socd_pct_battSocEo;                      /*电池真实SOC 写入量; */
+extern uint16_T socd_pct_bcuSoc;                         /*电池显示SOC; */
+extern uint16_T socd_pct_bcuSocEi;                       /*电池显示SOC读取量; */
+extern uint16_T socd_pct_bcuSocEo;                       /*电池显示SOC写入量; */
+extern uint16_T socd_pct_bcuSoc_Delay;                   /*电池显示SOC延时; */
+extern uint16_T socv_pct_cellSoc[cmnc_num_cellUNumMax];
+extern uint16_T socd_pct_cellBattSoc;
+extern boolean_T socd_flg_cellSocDisable;
+
+extern uint16_T sohd_Q_chrgEi;                           /*充入容量读取量; */
+extern uint16_T sohd_Q_chrgEo;                           /*充入容量写入量; */
+extern boolean_T sohd_flg_chrgEndEi;                     /*充电结束标志位读取量; */
+extern boolean_T sohd_flg_chrgEndEo;                     /*充电结束标志位写入量; */
+extern uint16_T sohd_pct_bcuSoh;                         /*电池SOH; */
+extern uint16_T sohd_pct_bcuSoh_Delay;                   /*电池SOH延时; */
+extern uint16_T sohd_tm_chrgStartStatEi;                 /*充电前静置时间读取量; */
+extern uint16_T sohd_tm_chrgStartStatEo;                 /*充电前静置时间写入量; */
+extern uint16_T sohv_Q_cellCap[cmnc_num_cellUNumMax];                      /*单体容量 */
+extern uint16_T sohv_Q_cellCapArrEi[cmnc_num_cellUNumMax];                 /*单体容量(数组) 读取量 */
+extern uint16_T sohv_Q_cellCapArrEo[cmnc_num_cellUNumMax];                 /*单体容量(数组) 写入量 */
+extern uint16_T sohv_Q_packCapArrEi[10];                 /*10次整包容量(数组)读取量; */
+extern uint16_T sohv_Q_packCapArrEo[10];                 /*10次整包容量(数组)写入量; */
+extern uint16_T sohv_V_chrgStartStatEi[cmnc_num_cellUNumMax];              /*充电开始时刻的单体电压(数组)读取量; */
+extern uint16_T sohv_V_chrgStartStatEo[cmnc_num_cellUNumMax];              /*充电开始时刻的单体电压(数组)写入量; */
+
+extern boolean_T iscd_flg_flt;
+extern uint16_T iscv_Q_remainCpEi[cmnc_num_cellUNumMax];
+extern uint32_T iscd_tm_totalEi;
+extern uint16_T iscv_Q_remainCpEo[cmnc_num_cellUNumMax];
+extern uint32_T iscd_tm_totalEo;
+
+extern uint8_T tmsd_st_heatAct;                          /*热管理请求状态; */
+
+extern uint8_T cmd_st_chrgMod;                           /* 充电模式  */
+extern uint8_T cmd_st_chrgSt;                            /* 充电状态  */
+extern int16_T cmd_I_chrgCurrReq;                       /* 充电需求电流  */
+extern uint8_T cmd_idx_chrgEndReason;                    /* 充电结束原因  */
+
+extern uint16_T cand_Nr_cellNr;                          /*循环发送的单体编号; */
+extern uint16_T cand_Q_cellCap;                          /*循环发送的单体容量; */
+extern uint16_T cand_V_chrgStartStat;                    /*循环发送的充电前单体电压; */
+extern uint16_T cand_Q_reqCp;                            /*循环发送的单体需求均衡容量; */
+extern uint16_T cand_Q_totalCp;                          /*循环发送的单体累计均衡容量; */
+
+extern int16_T  cdmv_V_deltOCV[cmnc_num_cellUNumMax];
+extern int16_T  cdmv_ohm_deltR[cmnc_num_cellUNumMax];
+extern boolean_T cdmd_flg_deltOCVDisable;
+
+extern uint16_T test_efkSocMin;
+extern uint16_T test_efkSocMax;
+extern real_T test_UpMin;
+extern real_T test_UpMax;
+

+ 5 - 3
src/EmbeddedCoder_src/BCUCal.c

@@ -9,7 +9,7 @@ const uint16_T blcc_V_low = 10U;    /* 均衡开启电压阈值 */
 const uint16_T cmnc_Q_ratedCp = 500U;                                                                                                    /* 电池容量; */
 const uint16_T cmnc_num_cellUNum = 20U;                                                                                                  /* 电压采样点实际个数; */
 const uint16_T cmnc_num_modTNum = 4U;                                                                                                    /* 温度采样点实际个数; */
-const uint16_T cmnc_tm_parkTime = 1800U;                                                                                                 /* 静置时间阈值; */
+const uint16_T cmnc_tm_parkTime = 30U;                                                                                                 /* 静置时间阈值; */
 const uint16_T cmnm_F_polar[13] = {3880U, 5062U, 10906U, 10798U, 12885U, 12990U, 14331U, 10754U, 9378U, 10340U, 10592U, 11946U, 11515U}; /* 电池放电参数的C数组; */
 const uint16_T cmnm_R_ohm[13] = {2181U, 2043U, 2040U, 1927U, 1850U, 1802U, 1771U, 1743U, 1733U, 1728U, 1748U, 1762U, 1789U};             /* 电池放电参数的Ro数组; */
 const uint16_T cmnm_R_polar[13] = {1837U, 1055U, 1352U, 1453U, 1181U, 1125U, 1205U, 1283U, 1228U, 1187U, 1104U, 1170U, 1049U};           /* 电池放电参数的Rp数组; */
@@ -85,13 +85,15 @@ const uint16_T sfmc_flg_cellUDiffThrRec2 = 250U; /* 压差过大2级故障恢复
 
 const uint16_T sohc_Q_countThr = 60U;            /*soh计算需充入电量阈值*/
 const uint16_T sohc_Q_updateDeltThr = 200U;      /*soh更新 偏差允许阈值*/
+const uint16_T sohc_pct_low = 300U;
+const uint16_T sohc_pct_up = 500U;
 
 const uint16_T socc_pct_battSocLow = 0U;                     /* SOC下限值; */
 const uint16_T socc_pct_battSocUp = 1000U;                   /* SOC上限值; */
 const int16_T socm_I_chrgCor[3] = {50, 100, 150};            /* 充电CCV对应的电流数据; */
-const int16_T socm_I_disChrgCor[3] = {-300, -100, -60};      /* 放电CCV对应的电流数据; */
+const int16_T socm_I_disChrgCor[3] = {-300, - 100, -60};      /* 放电CCV对应的电流数据; */
 const uint16_T socm_V_chrgCor[3] = {4160U, 4175U, 4188U};    /* 充电CCV对应的电压; */
-const uint16_T socm_V_disChrgCor[3] = {3303U, 3359U, 3368U}; /* 放电CCV对应的电压; */
+const uint16_T socm_V_disChrgCor[3] = {3310U, 3350U, 3368U}; /* 放电CCV对应的电压; */
 const uint16_T socc_pct_chrgCor = 980;                       /* 充电CCV对应的SOC; */   
 const uint16_T socc_pct_disChrgCor = 50;                     /* 放电CCV对应的SOC; */   
 const int16_T cmm_T_ChrgCurr[3] = {40,60,80};

+ 10 - 5
src/EmbeddedCoder_src/CDM.c

@@ -23,6 +23,7 @@ void CDM(void)
     real_T arf[cmnc_num_cellUNumMax];
     uint16_T i;
     static uint8_T ihd_st_workStat_Delay;
+	static int16_T sfmd_I_curr_Delay;
 	static uint8_T Cnt;
     //
     if(ihd_st_workStat_Delay == 2 && ihd_st_workStat != 2)
@@ -48,7 +49,7 @@ void CDM(void)
         }
     }
     //
-    if(ihd_st_workStat != 2)
+    if(ihd_st_workStat != 2 &&  (sfmd_I_curr_Delay - sfmd_I_curr > 10 ||sfmd_I_curr_Delay - sfmd_I_curr < -10 ||sfmd_I_curr_Delay ==0 && sfmd_I_curr == 0))
     {
         for (i = 0;i < cmnc_num_cellUNum;i++)
         {
@@ -71,8 +72,7 @@ void CDM(void)
 			
 			if(arf[i] > 0.04 || arf[i] < -0.04)
             {
-                cdmd_flg_deltOCVDisable = true;
-			   
+                cdmd_flg_deltOCVDisable = true;   
             }
 	    }
         //
@@ -98,9 +98,14 @@ void CDM(void)
     }
     else
     {
-        cdmd_flg_deltOCVDisable = false;
+        cdmd_flg_deltOCVDisable = true;
     }
-	
+	//printf("u_:%f %f %f\n",arf[0],arf[1],arf[2]);
+	//printf("E_:%d %d %d\n",cdmv_V_deltOCV[0],cdmv_V_deltOCV[1],cdmv_V_deltOCV[2]);
+	//printf("R_:%d %d %d\n",cdmv_ohm_deltR[0],cdmv_ohm_deltR[1],cdmv_ohm_deltR[2]);
+	//printf("\n");
+	cdmd_flg_deltOCVDisable = true;  ////////
+	sfmd_I_curr_Delay = sfmd_I_curr;
     FirstRun_CDM = false;
 	
 }

+ 2 - 2
src/EmbeddedCoder_src/SFM.c

@@ -604,9 +604,9 @@ void SFM(void)
     sfmd_flg_cellULowFlt1 = DiagThrSystem2(0, !sfmd_flg_interComFlt, sfmd_V_cellUMin, sfmc_V_cellULowThrFlt1, sfmc_V_cellULowThrRec1, 2, 2, &DiagThr.fltNum84, &DiagThr.recNum84, &sfmd_flg_cellULowFlt1) && !sfmd_flg_cellULowFlt2;
 
     //85 压差过大2级
-    sfmd_flg_cellUDiffFlt2 = DiagThrSystem1(1, !sfmd_flg_interComFlt, sfmd_V_cellUMax - sfmd_V_cellUMin, sfmc_flg_cellUDiffThrFlt2, sfmc_flg_cellUDiffThrRec2, 2, 2, &DiagThr.fltNum85, &DiagThr.recNum85, &sfmd_flg_cellUDiffFlt2);
+    sfmd_flg_cellUDiffFlt2 = DiagThrSystem1(1, !sfmd_flg_interComFlt && socd_pct_battSoc > 200, sfmd_V_cellUMax - sfmd_V_cellUMin, sfmc_flg_cellUDiffThrFlt2, sfmc_flg_cellUDiffThrRec2, 2, 2, &DiagThr.fltNum85, &DiagThr.recNum85, &sfmd_flg_cellUDiffFlt2);
     //86 压差过大1级
-    sfmd_flg_cellUDiffFlt1 = DiagThrSystem1(0, !sfmd_flg_interComFlt, sfmd_V_cellUMax - sfmd_V_cellUMin, sfmc_flg_cellUDiffThrFlt1, sfmc_flg_cellUDiffThrRec1, 2, 2, &DiagThr.fltNum86, &DiagThr.recNum86, &sfmd_flg_cellUDiffFlt1) && !sfmd_flg_cellUDiffFlt2;
+    sfmd_flg_cellUDiffFlt1 = DiagThrSystem1(0, !sfmd_flg_interComFlt && socd_pct_battSoc > 200, sfmd_V_cellUMax - sfmd_V_cellUMin, sfmc_flg_cellUDiffThrFlt1, sfmc_flg_cellUDiffThrRec1, 2, 2, &DiagThr.fltNum86, &DiagThr.recNum86, &sfmd_flg_cellUDiffFlt1) && !sfmd_flg_cellUDiffFlt2;
 
     //87 总压过压2级
     sfmd_flg_battUOverFlt2 = DiagThrSystem1(1, !sfmd_flg_interComFlt, sfmd_V_battU, sfmc_V_battUOverThrFlt2, sfmc_V_battUOverThrRec2, 2, 2, &DiagThr.fltNum87, &DiagThr.recNum87, &sfmd_flg_battUOverFlt2);

+ 46 - 31
src/EmbeddedCoder_src/SOC.c

@@ -80,12 +80,11 @@ void SOC(void)
     static uint8_T chrgCntl;
     static uint8_T disChrgCntl;
     //
-    static uint16_T socd_pct_battSoc_Delay;
     //
     static uint8_T statCntl;
     boolean_T statFlg;
     static uint8_T ihd_st_chrgSta_Delay;
-    static uint16_T socn_pct_utrackSoc_Delay;
+    static uint16_T socd_pct_battSoc_Delay;
     static uint16_T socd_pct_battSoc0;
     static uint16_T socd_pct_bcuSoc0;
     uint16_T delSOC;
@@ -96,6 +95,9 @@ void SOC(void)
     boolean_T Flg;
     static boolean_T onceFlg_chrg;
     static boolean_T onceFlg_dischrg;
+
+	static uint16_T socd_pct_battSoc_save;
+	static uint16_T socd_pct_bcuSoc_save;
     uint16_T i;
     //
     if (FirstRun_SOC)
@@ -112,9 +114,11 @@ void SOC(void)
         onceFlg_utrckOver = true;
         onceFlg_utrckLow = true;
         ihd_st_chrgSta_Delay = 0;
-        socn_pct_utrackSoc_Delay = 0;
+        socd_pct_battSoc_Delay = 0;
         onceFlg_chrg = true;
         onceFlg_dischrg = true;
+		socd_pct_battSoc_save = 0;
+		socd_pct_bcuSoc_save = 0;	
     }
     
     //=====================================================================
@@ -122,7 +126,7 @@ void SOC(void)
     //=====================================================================
     if (FirstRun_SOC)
     { //
-        if (socd_pct_battSocEi > 1000 || socd_pct_bcuSocEi > 1000 || ihd_st_EOLState == 0 ||
+        if (socd_pct_battSocEi > 1000 || socd_pct_bcuSocEi > 1000 || ihd_st_EOLState == 0 ||ihd_st_chrgConnect ||
                 (((int16_T)(socd_pct_battSocEi - socd_pct_bcuSocEi) > 300 || (int16_T)(socd_pct_battSocEi - socd_pct_bcuSocEi) < -300) && ihd_tm_parkTime >= cmnc_tm_parkTime))
         {
             socn_pct_battSocEE = look1_iu16lu16n16tu16_binlcase(sfmd_V_cellUAvrg, (&(cmnm_V_ocv[0])), (&(cmnm_pct_soc[0])), 12U);
@@ -290,7 +294,7 @@ void SOC(void)
     }
     socd_pct_ekfSoc = (uint16_T)(((1 - (real_T)(factor * 0.01)) * (real_T)(EKFSOCMin * 0.1) + (real_T)(factor * 0.01) * (real_T)(EKFSOCMax * 0.1)) * 10);
    
-    //printf("4----socd_pct_ekfSoc:%d,EKFSOCMax:%d,EKFSOCMin:%d,\n",socd_pct_ekfSoc,EKFSOCMax,EKFSOCMin);
+   // printf("4----socd_pct_ekfSoc:%d,EKFSOCMax:%d,EKFSOCMin:%d,\n",socd_pct_ekfSoc,EKFSOCMax,EKFSOCMin);
 
    //-------------------------EKFavrg---------------------------------------
     if (FirstRun_SOC)
@@ -404,9 +408,7 @@ void SOC(void)
     {
         socd_pct_ahSoc = (uint16_T)ahSoc;
     }
-	 //  printf("S_%d   %d   %d   %d   %d   %d   %d   %d\n",socd_pct_cellBattSoc,cellSocMax,cellSocMin,socd_pct_ekfSoc,EKFSOCMax,EKFSOCMin,ahSoc,EKFSOCAvrg);
-	 //  printf("E_%d   %d   %d   %d   %d   %d   %d   %d\n",cdmv_V_deltOCV[0],cdmv_V_deltOCV[1],cdmv_V_deltOCV[15],cdmv_V_deltOCV[16],cdmv_ohm_deltR[0],cdmv_ohm_deltR[1],cdmv_ohm_deltR[15],cdmv_ohm_deltR[16]);
-    //printf("5----ahDelay:%f,ahSoc:%d,battcurr:%f,sfmd_I_curr:%d\n",ahDelay,ahSoc,battcurr,sfmd_I_curr);
+	//printf("5----ahDelay:%f,ahSoc:%d,battcurr:%f,sfmd_I_curr:%d\n",ahDelay,ahSoc,battcurr,sfmd_I_curr);
     //======================================================================
     ///////////////////////estSOC//////////////////////////////////////////
     //======================================================================
@@ -445,6 +447,7 @@ void SOC(void)
         socd_pct_estSoc = socc_pct_battSocLow;
     }
     //printf("6----ahSoc0_est:%d,ekfSoc0_est:%d,socd_pct_estSoc:%d\n",ahSoc0_est,ekfSoc0_est,socd_pct_estSoc);
+	
     //======================================================================
     ////////////////////////UtrackSOC//////////////////////////////////////////
     //======================================================================
@@ -454,8 +457,7 @@ void SOC(void)
         chrgCntl = (chrgCntl + 1) > 250 ? 250 : (chrgCntl + 1);
         lowCntl = 0;
         lowFlg = false;
-		//socd_V_chrgCCV = look1_iu16lu16n16tu16_binlcase(socc_pct_chrgCor, (&(cmnm_pct_soc[0])), (&(cmnm_V_ocv[0])), 12U) + sfmd_I_curr * (look1_iu16lu16n16tu16_binlcase(socc_pct_chrgCor, (&(cmnm_pct_soc[0])), (&(cmnm_R_ohm[0])), 12U) + cdmv_ohm_deltR[sfmd_idx_cellUMax]) * 0.001 * 0.1;
-		socd_V_chrgCCV = look1_is16lu16n16tu16_binlcase(sfmd_I_curr,&socm_I_chrgCor[0],&socm_V_chrgCor[0],2U); 
+	    socd_V_chrgCCV = look1_is16lu16n16tu16_binlcase(sfmd_I_curr,&socm_I_chrgCor[0],&socm_V_chrgCor[0],2U); 
 		if (sfmd_V_cellUMax >= socd_V_chrgCCV)
         {
             overCntl = (overCntl + 1) > 250 ? 250 : (overCntl + 1);
@@ -515,7 +517,7 @@ void SOC(void)
             socn_pct_utrackSoc = socn_pct_utrackSoc > (socc_pct_battSocUp - 1) ? (socc_pct_battSocUp - 1) : socn_pct_utrackSoc;
         }
         
-        //printf("7----overCntl:%d,overFlg:%d,fulCntl:%d,fulFlg:%d,ahSoc0_utrckOver:%d,estSoc0_utrckOver:%d,socn_pct_utrackSoc:%d,socTemp:%d\n",overCntl,overFlg,fulCntl,fulFlg,ahSoc0_utrckOver,estSoc0_utrckOver,socn_pct_utrackSoc,socTemp);
+       // printf("7----overCntl:%d,overFlg:%d,fulCntl:%d,fulFlg:%d,ahSoc0_utrckOver:%d,estSoc0_utrckOver:%d,socn_pct_utrackSoc:%d,socTemp:%d\n",overCntl,overFlg,fulCntl,fulFlg,ahSoc0_utrckOver,estSoc0_utrckOver,socn_pct_utrackSoc,socTemp);
     }
     else
     {
@@ -526,8 +528,15 @@ void SOC(void)
         overFlg = false;
         fulFlg = false;
         fulCntl = 0;
+		if (!cdmd_flg_deltOCVDisable)
+		{
+		    socd_V_disChrgCCV = look1_is16lu16n16tu16_binlcase(sfmd_I_curr,&socm_I_disChrgCor[0],&socm_V_disChrgCor[0],2U) + sfmd_I_curr * (cdmv_ohm_deltR[sfmd_idx_cellUMin]) * 0.001 * 0.1;
+		}
+		else
+		{
+		     socd_V_disChrgCCV = look1_is16lu16n16tu16_binlcase(sfmd_I_curr,&socm_I_disChrgCor[0],&socm_V_disChrgCor[0],2U);
+		}
 		
-		socd_V_disChrgCCV = look1_iu16lu16n16tu16_binlcase(socc_pct_disChrgCor, (&(cmnm_pct_soc[0])), (&(cmnm_V_ocv[0])), 12U) + sfmd_I_curr * (look1_iu16lu16n16tu16_binlcase(socc_pct_chrgCor, (&(cmnm_pct_soc[0])), (&(cmnm_R_ohm[0])), 12U) + cdmv_ohm_deltR[sfmd_idx_cellUMin]) * 0.001 * 0.1;
         if (sfmd_V_cellUMin <= socd_V_disChrgCCV)
         {
             lowCntl = (lowCntl + 1) > 250 ? 250 : (lowCntl + 1);
@@ -560,25 +569,14 @@ void SOC(void)
         {
             socn_pct_utrackSoc = socd_pct_estSoc;
         }
-        // printf("8----lowCntl:%d,lowFlg:%d,ahSoc0_utrckLow:%d,estSoc0_utrckLow:%d,socn_pct_utrackSoc:%d\n",lowCntl,lowFlg,ahSoc0_utrckLow,estSoc0_utrckLow,socn_pct_utrackSoc);
+       //  printf("8----lowCntl:%d,lowFlg:%d,ahSoc0_utrckLow:%d,estSoc0_utrckLow:%d,socn_pct_utrackSoc:%d\n",lowCntl,lowFlg,ahSoc0_utrckLow,estSoc0_utrckLow,socn_pct_utrackSoc);
     }
-	//===================================================================
-    //------------------EEsave
-    //==================================================================
     socd_pct_battSoc = socn_pct_utrackSoc;
     socd_pct_battSocEo = socn_pct_utrackSoc;
-    if ((int16_T)(socd_pct_battSoc - socd_pct_battSoc_Delay) > 10 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_Delay) < -10)
-    {
-        socd_flg_EEsave = 1;
-        socd_pct_battSoc_Delay = socd_pct_battSoc;
-    }
-    else
-    {
-        socd_flg_EEsave = 0;
-    }
+
     
     //===============================================================================================================================================================
-    ////////////////////////////////////////////////////////////////////BCUSOC///////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////BCUSOC///////////////////////////////////////////////////////////////////////////////////////////////////////////
     //===============================================================================================================================================================
     
     if (sfmd_I_curr < 10 && sfmd_I_curr > -10)
@@ -591,10 +589,10 @@ void SOC(void)
     }
     statFlg = statCntl > 2;
     
-    Flg = (FirstRun_SOC || (ihd_st_chrgSta_Delay == 2 && ihd_st_workStat != 2) || (ihd_st_chrgSta_Delay != 2 && ihd_st_workStat == 2) || ((int16_T)(socn_pct_utrackSoc - socn_pct_utrackSoc_Delay) > 20 || (int16_T)(socn_pct_utrackSoc - socn_pct_utrackSoc_Delay) < -20) || statFlg);
+    Flg = (FirstRun_SOC || (ihd_st_chrgSta_Delay == 2 && ihd_st_workStat != 2) || (ihd_st_chrgSta_Delay != 2 && ihd_st_workStat == 2) || ((int16_T)(socd_pct_battSoc  - socd_pct_battSoc_Delay) > 20 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_Delay) < -20) || statFlg);
     
     ihd_st_chrgSta_Delay = ihd_st_workStat;
-    socn_pct_utrackSoc_Delay = socn_pct_utrackSoc;
+    socd_pct_battSoc_Delay = socd_pct_battSoc;
     
     //
     if (Flg)
@@ -644,7 +642,7 @@ void SOC(void)
         {
             socd_pct_bcuSoc = socd_pct_bcuSoc > (socc_pct_battSocUp - 1) ? (socc_pct_battSocUp - 1) : socd_pct_bcuSoc;
         }
-        //printf("10-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
+       // printf("10-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
     }
     else
     {
@@ -669,12 +667,29 @@ void SOC(void)
         }
         
         socd_pct_bcuSoc = SOCfitSystem(bcuSoc, &socd_pct_bcuSoc, 1);
-        //printf("11-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
+       // printf("11-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
     }
     //
     socd_pct_bcuSocEo = socd_pct_bcuSoc;
+
+
+    //===================================================================
+    //------------------EEsave
+    //==================================================================
+
+    if ((int16_T)(socd_pct_battSoc - socd_pct_battSoc_save) > 10 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_save) < -10 || (int16_T)(socd_pct_bcuSoc - socd_pct_bcuSoc_save) > 10 || (int16_T)(socd_pct_bcuSoc - socd_pct_bcuSoc_save) < -10 )
+    {
+        socd_flg_EEsave = 1;
+        socd_pct_battSoc_save = socd_pct_battSoc;
+	    socd_pct_bcuSoc_save  = socd_pct_bcuSoc;
+    }
+    else
+    {
+        socd_flg_EEsave = 0;
+    }
+
+	
     FirstRun_SOC = false;
-    //printf("\n");
 }
 
 //-------------------------------------------------------------------------

+ 10 - 5
src/EmbeddedCoder_src/SOH.c

@@ -43,7 +43,7 @@ void SOH(void)
     int32_T  tmp_0; 
     static boolean_T sfmn_flg_currFlt_keep;
     static boolean_T sohn_flg_currFlt;
-    
+    boolean_T DisEn;
     
     if(FirstRun_SOH)
     {   
@@ -103,7 +103,7 @@ void SOH(void)
         {
             sohn_flg_countEn = false;
         }
-
+        
 		//=======================================================================================
         //------------------------SOH 计算-------------------------------------------------------
         //=======================================================================================
@@ -123,9 +123,12 @@ void SOH(void)
                     break;
                 }
             }
-
+            DisEn = (ArrMin((&(soc2[0])) , cmnc_num_cellUNum) > sohc_pct_low &&   ArrMin((&(soc2[0])) , cmnc_num_cellUNum) < sohc_pct_up) 
+                  ||(ArrMax((&(soc2[0])) , cmnc_num_cellUNum) > sohc_pct_low &&   ArrMax((&(soc2[0])) , cmnc_num_cellUNum) < sohc_pct_up)
+                  ||(ArrMin((&(soc1[0])) , cmnc_num_cellUNum) > sohc_pct_low &&   ArrMin((&(soc1[0])) , cmnc_num_cellUNum) < sohc_pct_up)
+                  ||(ArrMax((&(soc1[0])) , cmnc_num_cellUNum) > sohc_pct_low &&   ArrMax((&(soc1[0])) , cmnc_num_cellUNum) < sohc_pct_up);
 			//===================
-            if(sohn_flg_update)
+            if(sohn_flg_update && !DisEn)
             {   
 				for(i = 0;i < cmnc_num_cellUNum;i++)
  				{
@@ -153,7 +156,7 @@ void SOH(void)
              memcpy(sohv_Q_cellCapArrEo,sohn_Q_cellCapArrEE, sizeof(sohv_Q_cellCapArrEo));
          }
 		 memcpy(sohv_Q_cellCap,sohv_Q_cellCapArrEo, sizeof(sohv_Q_cellCapArrEo));
-
+        // printf("sohv_Q_cellCapArrEo[16]:%d,update:%d,En:%d\n",sohv_Q_cellCapArrEo[16],sohn_flg_update,sohn_flg_countEn);
  
          SumQ = 0;
          for(i = 0; i < 10;i++)
@@ -181,6 +184,8 @@ void SOH(void)
      {
         memcpy(sohv_V_chrgStartStatEo,sohn_V_chrgStartStat, sizeof(sohv_V_chrgStartStatEo));
      }
+
+	 
     //printf("sohv_V_chrgStartStatEo[16]:%d\n",sohv_V_chrgStartStatEo[16]);
     //=======================================================================================
     //----------------------充电中信息-------------------------------------------------------