|
@@ -474,18 +474,26 @@ uint8_t Battery_SocCal(Battery_Info_t* p_Battery_Info, BatterCellInfo_Struct_t*
|
|
|
//查表计算SOC
|
|
|
for(i=0; i<TableNum; i++)
|
|
|
{
|
|
|
- if(p_CellInfo->CellParam[i] <= u16MaxVoltage)
|
|
|
+ if(i >= (TableNum - 1))
|
|
|
{
|
|
|
- BatteryRemainQ = p_CellInfo->DesignCap - i * p_CellInfo->DesignCap / 100;
|
|
|
- break;
|
|
|
- }
|
|
|
- else//电池电压低于最小值
|
|
|
+ BatteryRemainQ = 0;
|
|
|
+ p_Battery_Info->Q_remain_record = BatteryRemainQ;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- BatteryRemainQ = 0;
|
|
|
+ if(p_CellInfo->CellParam[i] <= u16MaxVoltage)
|
|
|
+ {
|
|
|
+ BatteryRemainQ = p_CellInfo->DesignCap - i * p_CellInfo->DesignCap / 100;
|
|
|
+ p_Battery_Info->Q_remain_record = BatteryRemainQ;
|
|
|
+ return TableNum - i - 1;
|
|
|
+ }
|
|
|
+ else//电池电压低于最小值
|
|
|
+ {
|
|
|
+ BatteryRemainQ = 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- p_Battery_Info->Q_remain_record = BatteryRemainQ;
|
|
|
- return TableNum - i - 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -509,18 +517,28 @@ uint8_t Battery_SocCal(Battery_Info_t* p_Battery_Info, BatterCellInfo_Struct_t*
|
|
|
//查表计算SOC
|
|
|
for(i=0; i<TableNum; i++)
|
|
|
{
|
|
|
- if(p_CellInfo->CellParam[i] <= u16MaxVoltage)
|
|
|
+ if(i >= (TableNum - 1))
|
|
|
{
|
|
|
- BatteryRemainQ = p_CellInfo->DesignCap - i * p_CellInfo->DesignCap / 100;
|
|
|
+ BatteryRemainQ = 0;
|
|
|
+ p_Battery_Info->Q_remain_record = BatteryRemainQ;
|
|
|
+ Result = 0;
|
|
|
break;
|
|
|
- }
|
|
|
- else//电池电压低于最小值
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- BatteryRemainQ = 0;
|
|
|
- }
|
|
|
+ if(p_CellInfo->CellParam[i] <= u16MaxVoltage)
|
|
|
+ {
|
|
|
+ BatteryRemainQ = p_CellInfo->DesignCap - i * p_CellInfo->DesignCap / 100;
|
|
|
+ p_Battery_Info->Q_remain_record = BatteryRemainQ;
|
|
|
+ Result = TableNum - i - 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ else//电池电压低于最小值
|
|
|
+ {
|
|
|
+ BatteryRemainQ = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- p_Battery_Info->Q_remain_record = BatteryRemainQ;
|
|
|
- Result = TableNum - i - 1;
|
|
|
|
|
|
//电量上升时,突变较小,取上次计算值
|
|
|
if(Result > Result_Pre)
|