|
@@ -60,6 +60,7 @@ UBYTE MC_WorkMode;
|
|
|
UBYTE MC_BC_COM = 0;
|
|
|
static LPF_OUT BMS_swCurIdcLpf;
|
|
|
static BOOL blBMSCommFault = FALSE;
|
|
|
+static UWORD uwRemainDistanceCal;
|
|
|
|
|
|
void Can_voUpdateMC_UpcInfo(void)
|
|
|
{
|
|
@@ -260,7 +261,7 @@ void Can_voInitMC_Run(void)
|
|
|
BMS_VoltEstimat.uwInterResistpu = (UWORD)(((ULONG)1700 << 15) / cof_uwRbOm); // Q15 0.1mOhm BMS internal resistance 150mOhm + 20mOhm
|
|
|
mth_voLPFilterCoef(1000000 / 100, EVENT_1MS_HZ, &BMS_swCurIdcLpf.uwKx); // 100Hz
|
|
|
|
|
|
- MC_RunInfo.RemainDistance = 0xffff; // init invalid value
|
|
|
+ uwRemainDistanceCal = 0xffff; // init invalid value
|
|
|
}
|
|
|
|
|
|
void Can_voMC_Run_1ms(void) /* parasoft-suppress METRICS-28 "本项目圈复杂度无法更改,后续避免" */
|
|
@@ -601,6 +602,10 @@ void Can_voMC_Run_200ms(void)
|
|
|
{
|
|
|
blBMSCommFault = TRUE; // communication abnormal
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ blBMSCommFault = FALSE; // communication normal
|
|
|
+ }
|
|
|
|
|
|
Can_GearSt_switch();
|
|
|
SizeMCUP = sizeof(MC_UpcInfo.stAssistInfo);
|
|
@@ -672,12 +677,12 @@ void Can_voMC_Run_200ms(void)
|
|
|
{
|
|
|
MC_RunInfo.PowerPerKm =
|
|
|
(UBYTE)(*(&cp_stHistoryPara.uwG1AvgPwrConsumption + (cp_stBikeRunInfoPara.uwBikeGear - 1)) / 10); //平均功耗 0.01Ah/km /* parasoft-suppress MISRA2004-17_4 "本项目无法更改,后续避免非数组索引指针运算" */
|
|
|
- MC_RunInfo.RemainDistance = BMS_RunInfo.RC / MC_RunInfo.PowerPerKm / 10;
|
|
|
+ uwRemainDistanceCal = BMS_RunInfo.RC / MC_RunInfo.PowerPerKm / 10;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MC_RunInfo.PowerPerKm = 0;
|
|
|
- MC_RunInfo.RemainDistance = 0xffff; //invalid value
|
|
|
+ uwRemainDistanceCal = 0xffff; //invalid value
|
|
|
}
|
|
|
|
|
|
cp_stBikeRunInfoPara.BMSRestChargeLast = BMS_RunInfo.RC;
|
|
@@ -693,6 +698,10 @@ void Can_voMC_Run_200ms(void)
|
|
|
{
|
|
|
MC_RunInfo.RemainDistance = 0xeeee; /* no bms info*/
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MC_RunInfo.RemainDistance = uwRemainDistanceCal;
|
|
|
+ }
|
|
|
|
|
|
MC_RunInfo.T_PCB = (UBYTE)adc_stUpOut.PCBTemp + (UBYTE)40; //>PCB温度 +40℃
|
|
|
MC_RunInfo.T_Coil = (UBYTE)adc_stUpOut.PCBTemp + (UBYTE)40; //绕组温度 +40℃
|
|
@@ -837,7 +846,7 @@ void Can_RemainTrip_Cal(void)
|
|
|
uwCruisCoef = 4096;
|
|
|
}
|
|
|
|
|
|
- MC_RunInfo.RemainDistance = BMS_RunInfo.RC / MC_RunInfo.PowerPerKm / 10;
|
|
|
+ uwRemainDistanceCal = BMS_RunInfo.RC / MC_RunInfo.PowerPerKm / 10;
|
|
|
}
|
|
|
}
|
|
|
}
|