Explorar o código

解决电压低时,SOC=0xFF的问题。

Dail hai 1 ano
pai
achega
94976f5ea1
Modificáronse 3 ficheiros con 2546 adicións e 2528 borrados
  1. 2512 2512
      MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex
  2. BIN=BIN
      MDK-ARM/bin/QD007A_CTL_APP.bin
  3. 34 16
      User/Src/remain_distance.c

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2512 - 2512
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN=BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 34 - 16
User/Src/remain_distance.c

@@ -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)

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio