|
@@ -25,7 +25,8 @@
|
|
|
extern const MC_AvgPower_Struct_t MC_AvgPower_Default;
|
|
|
|
|
|
//续航计算相关参数
|
|
|
-Remain_Dis_t RemainDis;
|
|
|
+
|
|
|
+Remain_Dis_t RemainDis = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFFFF, 0, 0, FALSE, 0};
|
|
|
//电池信息
|
|
|
Battery_Info_t Battery_Info;
|
|
|
|
|
@@ -52,10 +53,10 @@ static void RD_getQRemainRecord(uint16_t Volgate)
|
|
|
BusVoltage = Volgate;
|
|
|
|
|
|
//查表读取电池电量
|
|
|
- num = sizeof(battery_VoltageQuantity)/4;
|
|
|
+ num = sizeof(battery_VoltageQuantity) / 4;
|
|
|
batteryTotalQ = battery_VoltageQuantity[num-1][1];
|
|
|
batteryRemainQ = batteryTotalQ;
|
|
|
- for(i=0;i<num;i++)
|
|
|
+ for(i=0; i<num; i++)
|
|
|
{
|
|
|
if(battery_VoltageQuantity[i][0] <= BusVoltage)
|
|
|
{
|
|
@@ -86,30 +87,33 @@ static void RD_getQRemainRecord(uint16_t Volgate)
|
|
|
* 20181221 V1.2 Damon modify
|
|
|
*
|
|
|
*******************************************************************************/
|
|
|
-void RD_RemainDis_Init(uint16_t uwWheelLength, uint16_t BusVoltage, uint8_t DesignVol)
|
|
|
+void RD_RemainDis_Init(uint16_t uwWheelLength, TrueOrFalse_Flag_Struct_t BMS_COM_OK, uint16_t BusVoltage, uint8_t DesignVol, uint16_t BMS_RC)
|
|
|
{
|
|
|
Battery_Info.Q_discharged = 0;
|
|
|
Battery_Info.Q_remain_real = 0;
|
|
|
Battery_Info.Q_remain_record = BATTERY_TATAL_Q_MAH;
|
|
|
Battery_Info.Q_remain_real_last = 0;
|
|
|
|
|
|
-#if RD_BATTERY_INFO_TABLE
|
|
|
- /*配置不带CAN通讯的电池时调用,上电读取电池电压,查表获得剩余电量,放电曲线是按照36V,针对48V或24V做等效转换*/
|
|
|
- RD_getQRemainRecord(BusVoltage * 36 / DesignVol);
|
|
|
- RemainDis.IsBMS_ComOK_Flag = FALSE;
|
|
|
-#endif
|
|
|
+ if(BMS_COM_OK == TRUE) //电池通讯正常时,直接获取电池容量
|
|
|
+ {
|
|
|
+ Battery_Info.Q_remain_real = BMS_RC;
|
|
|
+ }
|
|
|
+ else //电池不含通讯时,根据母线电压估算剩余容量
|
|
|
+ {
|
|
|
+ RD_getQRemainRecord(BusVoltage * 36 / DesignVol); //放电曲线是按照36V,针对48V或24V做等效转换
|
|
|
+ }
|
|
|
|
|
|
- RemainDis.acc_period = Q_ADD_TIME_MS;
|
|
|
- RemainDis.wheel_Count = 0;
|
|
|
+ RemainDis.start = 0;
|
|
|
RemainDis.I_motor = 0;
|
|
|
+ RemainDis.acc_period = Q_ADD_TIME_MS;
|
|
|
RemainDis.Q_add = 0;
|
|
|
RemainDis.wheelLength = uwWheelLength;
|
|
|
- RemainDis.flag_saveInfo = 0;
|
|
|
- RemainDis.flag_helpModeChange = 0;
|
|
|
+ RemainDis.wheel_Count = 0;
|
|
|
RemainDis.Power_per_km = 0;
|
|
|
RemainDis.Power_per_km_average = 0;
|
|
|
RemainDis.remainDistance = 0xFFFF;//码表显示---km
|
|
|
- RemainDis.start = 0;
|
|
|
+ RemainDis.flag_saveInfo = 0;
|
|
|
+ RemainDis.flag_helpModeChange = 0;
|
|
|
RemainDis.IsBMS_ComOK_Flag = FALSE;
|
|
|
RemainDis.BMS_Com_DelayTimeCnt = HAL_GetTick();
|
|
|
|