|
@@ -95,7 +95,7 @@ void MC_Fault_TorqueSensor_Process_Single(uint16_t ADC_Data, uint8_t Num, Toruqe
|
|
|
TorsueSensorFaultStatus_Struct_t* SensorFaultStatus)
|
|
|
{
|
|
|
uint16_t i;
|
|
|
- uint16_t DelayTime;
|
|
|
+// uint16_t DelayTime;
|
|
|
|
|
|
for(i=0; i<(sizeof(p_SensorCheck->TorqueArray) / 2 - 1); i++)
|
|
|
{
|
|
@@ -301,23 +301,23 @@ void MC_Fault_NTCSensor_Process(uint8_t T_PCB_Result, uint8_t T_Coil_Result, MC_
|
|
|
{
|
|
|
static uint32_t TrigTimeCnt_PCB = 0; //PCB NTC采集异常计时
|
|
|
static uint32_t TrigTimeCnt_Coil = 0; //绕组 NTC采集异常计时
|
|
|
- static uint32_t NTC_Check_PeriodTimeCnt = 0; //NTC检测,母线电流采集周期
|
|
|
- static uint16_t NTC_Check_Count = 0;
|
|
|
- static uint32_t BusCurrentSum = 0;
|
|
|
- static uint16_t BusCurrentAvg1 = 0, BusCurrentAvg2 = 0;
|
|
|
- static uint8_t T_PCB_Old = 0;
|
|
|
- static uint8_t T_Coil_Old = 0;
|
|
|
+// static uint32_t NTC_Check_PeriodTimeCnt = 0; //NTC检测,母线电流采集周期
|
|
|
+// static uint16_t NTC_Check_Count = 0;
|
|
|
+// static uint32_t BusCurrentSum = 0;
|
|
|
+// static uint16_t BusCurrentAvg1 = 0, BusCurrentAvg2 = 0;
|
|
|
+// static uint8_t T_PCB_Old = 0;
|
|
|
+// static uint8_t T_Coil_Old = 0;
|
|
|
|
|
|
//初始化5s,且50度以上,不检测NTC故障
|
|
|
if((HAL_GetTick() < 5000) || (T_PCB_Result > 90))
|
|
|
{
|
|
|
TrigTimeCnt_PCB = HAL_GetTick();
|
|
|
TrigTimeCnt_PCB = HAL_GetTick();
|
|
|
- NTC_Check_PeriodTimeCnt = HAL_GetTick();
|
|
|
- NTC_Check_Count = 0;
|
|
|
-
|
|
|
- T_PCB_Old = T_PCB_Result;
|
|
|
- T_Coil_Old = T_Coil_Result;
|
|
|
+// NTC_Check_PeriodTimeCnt = HAL_GetTick();
|
|
|
+// NTC_Check_Count = 0;
|
|
|
+//
|
|
|
+// T_PCB_Old = T_PCB_Result;
|
|
|
+// T_Coil_Old = T_Coil_Result;
|
|
|
|
|
|
return;
|
|
|
}
|
|
@@ -372,51 +372,51 @@ void MC_Fault_NTCSensor_Process(uint8_t T_PCB_Result, uint8_t T_Coil_Result, MC_
|
|
|
TrigTimeCnt_Coil = HAL_GetTick();
|
|
|
}
|
|
|
|
|
|
- //NTC为固定值的检测,分别计算2个6.8min内母线电流平均值,当两段母线电流平均值不相等时判断NTC是否发生变化
|
|
|
- if((HAL_GetTick() - NTC_Check_PeriodTimeCnt) >= 100)
|
|
|
- {
|
|
|
- NTC_Check_PeriodTimeCnt = HAL_GetTick();
|
|
|
- BusCurrentSum += (uint16_t)((MC_RunInfo.BusCurrent > 20000) ? 156
|
|
|
- : MC_RunInfo.BusCurrent >> 7);//按照mA / 128 判断,约0.1A,限幅20A
|
|
|
- NTC_Check_Count++;
|
|
|
- if(NTC_Check_Count == 4096) //计算第一个6.8min平均值
|
|
|
- {
|
|
|
- //avg1 = (x1 + x2 + ... + x4096) / 4096
|
|
|
- BusCurrentAvg1 = BusCurrentSum >> 12;
|
|
|
- }
|
|
|
- else if(NTC_Check_Count >= 8192) //第二个6.8min
|
|
|
- {
|
|
|
- NTC_Check_Count = 0;
|
|
|
- //avg2 = (x4097 + x4098 + ... +x8192) / 4096 = 2 * (x1 + x2 + ... + x8192) / 8192 - avg1
|
|
|
- BusCurrentAvg2 = (BusCurrentSum >> 12) - BusCurrentAvg1;
|
|
|
- BusCurrentSum = 0;
|
|
|
- //总平均电流超过10A时,当两段平均电流变化超过3A,判断温度是否发生变化
|
|
|
- if(((BusCurrentAvg1 + BusCurrentAvg2) >> 1) > 79) //79 * 128 = 10.1A
|
|
|
- {
|
|
|
- if(abs(BusCurrentAvg1 - BusCurrentAvg2) >= 25) //25 * 128 = 3.2A
|
|
|
- {
|
|
|
- if((abs(T_PCB_Result - T_PCB_Old) < 1) || //PCB 温升小于1度
|
|
|
- (abs(T_Coil_Result - T_Coil_Old) < 1)) //绕组温升小于1度
|
|
|
- {
|
|
|
- p_MC_ErrorCode->ERROR_Bit.Fault_NtcSensor = 1;
|
|
|
- //记录故障日志
|
|
|
- MC_ErrorLogSaveInfo.NotesInfo1 = 3;
|
|
|
- MC_ErrorLogSaveInfo.NotesInfo2 = (BusCurrentAvg1 << 8) + (BusCurrentAvg2);
|
|
|
- MC_ErrorLogSaveInfo.NotesInfo3 = (uint16_t)((abs(T_PCB_Result - T_PCB_Old) << 8)
|
|
|
- + (abs(T_Coil_Result - T_Coil_Old) < 2));
|
|
|
- ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
|
|
|
- IsErrorLogSaveInfoUpdateFlag = TRUE;
|
|
|
- //存储故障次数
|
|
|
- MC_RunLog1.NTC_FaultCnt++;
|
|
|
- RunLogSaveIndex = 1;
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- T_PCB_Old = T_PCB_Result;
|
|
|
- T_Coil_Old = T_Coil_Result;
|
|
|
- }
|
|
|
- }
|
|
|
+// //NTC为固定值的检测,分别计算2个6.8min内母线电流平均值,当两段母线电流平均值不相等时判断NTC是否发生变化
|
|
|
+// if((HAL_GetTick() - NTC_Check_PeriodTimeCnt) >= 100)
|
|
|
+// {
|
|
|
+// NTC_Check_PeriodTimeCnt = HAL_GetTick();
|
|
|
+// BusCurrentSum += (uint16_t)((MC_RunInfo.BusCurrent > 20000) ? 156
|
|
|
+// : MC_RunInfo.BusCurrent >> 7);//按照mA / 128 判断,约0.1A,限幅20A
|
|
|
+// NTC_Check_Count++;
|
|
|
+// if(NTC_Check_Count == 4096) //计算第一个6.8min平均值
|
|
|
+// {
|
|
|
+// //avg1 = (x1 + x2 + ... + x4096) / 4096
|
|
|
+// BusCurrentAvg1 = BusCurrentSum >> 12;
|
|
|
+// }
|
|
|
+// else if(NTC_Check_Count >= 8192) //第二个6.8min
|
|
|
+// {
|
|
|
+// NTC_Check_Count = 0;
|
|
|
+// //avg2 = (x4097 + x4098 + ... +x8192) / 4096 = 2 * (x1 + x2 + ... + x8192) / 8192 - avg1
|
|
|
+// BusCurrentAvg2 = (BusCurrentSum >> 12) - BusCurrentAvg1;
|
|
|
+// BusCurrentSum = 0;
|
|
|
+// //总平均电流超过10A时,当两段平均电流变化超过3A,判断温度是否发生变化
|
|
|
+// if(((BusCurrentAvg1 + BusCurrentAvg2) >> 1) > 79) //79 * 128 = 10.1A
|
|
|
+// {
|
|
|
+// if(abs(BusCurrentAvg1 - BusCurrentAvg2) >= 25) //25 * 128 = 3.2A
|
|
|
+// {
|
|
|
+// if((abs(T_PCB_Result - T_PCB_Old) < 1) || //PCB 温升小于1度
|
|
|
+// (abs(T_Coil_Result - T_Coil_Old) < 1)) //绕组温升小于1度
|
|
|
+// {
|
|
|
+// p_MC_ErrorCode->ERROR_Bit.Fault_NtcSensor = 1;
|
|
|
+// //记录故障日志
|
|
|
+// MC_ErrorLogSaveInfo.NotesInfo1 = 3;
|
|
|
+// MC_ErrorLogSaveInfo.NotesInfo2 = (BusCurrentAvg1 << 8) + (BusCurrentAvg2);
|
|
|
+// MC_ErrorLogSaveInfo.NotesInfo3 = (uint16_t)((abs(T_PCB_Result - T_PCB_Old) << 8)
|
|
|
+// + (abs(T_Coil_Result - T_Coil_Old) < 2));
|
|
|
+// ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
|
|
|
+// IsErrorLogSaveInfoUpdateFlag = TRUE;
|
|
|
+// //存储故障次数
|
|
|
+// MC_RunLog1.NTC_FaultCnt++;
|
|
|
+// RunLogSaveIndex = 1;
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// T_PCB_Old = T_PCB_Result;
|
|
|
+// T_Coil_Old = T_Coil_Result;
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
|