فهرست منبع

V3.2.0_20200622
1、adc.c中目前电压采集增加根据母线电流对线阻的补偿;
2、力矩传感器采集由三个的均值,改为增加坏一个时取另外两个均值的处理;
3、增加对三个力矩传感器单独判断,综合处理后决定如何力矩值;
4、修改力矩传感器故障检测的逻辑;
5、版本号:V3.2.0_20200622

dail.zhou 5 سال پیش
والد
کامیت
1b6f9ad617
8فایلهای تغییر یافته به همراه209 افزوده شده و 107 حذف شده
  1. 74 15
      Core/Src/adc.c
  2. BIN
      MDK-ARM/bin/MC_TTKZ010A_V3.2.0_20200622.bin
  3. BIN
      MDK-ARM/bin/QD007A_CTL_APP.bin
  4. 15 0
      User/Inc/torque_sensor.h
  5. 103 64
      User/Src/fault_check.c
  6. 5 27
      User/Src/torque_sensor.c
  7. 4 1
      User/Src/var.c
  8. 8 0
      修改说明.txt

+ 74 - 15
Core/Src/adc.c

@@ -462,6 +462,7 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	//更新母线电压 
 	BusVoltageFltSum += ((ADC1_Result[ADC1_RANK_VIN] << 10) - BusVoltageFltSum) >> 8;
 	MC_RunInfo.BusVoltage = (uint32_t)((BusVoltageFltSum >> 10) * 18507) >> 10;//3300 * 1256 / (4095 * 56)
+	MC_RunInfo.BusVoltage += (MC_RunInfo.BusCurrent >> 7) * 26; //根据母线电流和估算的线阻进行补偿, 补偿电阻 0.2 * 128 = 25.6
 	
 	//更新绕组温度
 	T_Coil_Sum += ADC1_Result[ADC1_RANK_NTC_COIL];
@@ -480,22 +481,80 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	MC_RunInfo.BusCurrent = IdcFltSum >> 10;
 	
 	//更新力矩传感器
-	Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1] - TorqueSensor_1_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_1_Param.Torque_Cal_K;
-	Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
-	MC_RunInfo.TorqueSensorData1 = Temp_16 / 28;
-	Temp_32 = Temp_16;
-	
-	Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_2] - TorqueSensor_2_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_2_Param.Torque_Cal_K;
-	Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
-	MC_RunInfo.TorqueSensorData2 = Temp_16 / 28;
-	Temp_32 += Temp_16;
-	
-	Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_3] - TorqueSensor_3_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_3_Param.Torque_Cal_K;
-	Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
-	MC_RunInfo.TorqueSensorData3 = Temp_16 / 28;
-	Temp_32 += Temp_16;
+	switch(TorsueSensorFaultStatus.FaultStatusCode)
+	{
+	  case 0x00://无传感器异常,取三个传感器的平均值
+		{
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1] - TorqueSensor_1_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_1_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData1 = Temp_16 / 28;
+			Temp_32 = Temp_16;
+			
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_2] - TorqueSensor_2_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_2_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData2 = Temp_16 / 28;
+			Temp_32 += Temp_16;
+			
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_3] - TorqueSensor_3_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_3_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData3 = Temp_16 / 28;
+			Temp_32 += Temp_16;
+			
+			Temp_32 = ((Temp_32 <= 0) ? 0 : Temp_32 / 3);
+			break;
+		}
+		case 0x01://传感器1异常,取传感器2,3平均值
+		{
+		  Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_2] - TorqueSensor_2_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_2_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData2 = Temp_16 / 28;
+			Temp_32 = Temp_16;
+			
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_3] - TorqueSensor_3_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_3_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData3 = Temp_16 / 28;
+			Temp_32 += Temp_16;
+			
+			Temp_32 = ((Temp_32 <= 0) ? 0 : Temp_32 / 2);
+			break;
+		}
+		case 0x02://传感器2异常,取传感器1,3平均值
+		{
+		  Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1] - TorqueSensor_1_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_1_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData1 = Temp_16 / 28;
+			Temp_32 = Temp_16;
+			
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_3] - TorqueSensor_3_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_3_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData3 = Temp_16 / 28;
+			Temp_32 += Temp_16;
+			
+			Temp_32 = ((Temp_32 <= 0) ? 0 : Temp_32 / 2);
+			break;
+		}
+		case 0x04://传感器3异常,取传感器1,2平均值
+		{
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1] - TorqueSensor_1_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_1_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData1 = Temp_16 / 28;
+			Temp_32 = Temp_16;
+			
+			Temp_16 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR_2] - TorqueSensor_2_Param.Torque_OffSetData.PresentData) * 100 / TorqueSensor_2_Param.Torque_Cal_K;
+			Temp_16 = (Temp_16 <= 0) ? 0 : Temp_16;
+			MC_RunInfo.TorqueSensorData2 = Temp_16 / 28;
+			Temp_32 += Temp_16;
+						
+			Temp_32 = ((Temp_32 <= 0) ? 0 : Temp_32 / 2);
+			break;
+		}
+		default://超过2个传感器异常
+		{
+		  Temp_32 = 0;
+			break;
+		}
+	}
 	
-	Temp_32 = ((Temp_32 <= 0) ? 0 : Temp_32 / 3);
 	#if 1 //采用原始采集值
 	ADC_SensorData.TorqueSensor = Temp_32;
 	#else  //采用滤波值

BIN
MDK-ARM/bin/MC_TTKZ010A_V3.2.0_20200622.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 15 - 0
User/Inc/torque_sensor.h

@@ -24,11 +24,26 @@ typedef struct
 	uint8_t Torque_Cal_K;//标定系数
 }TorqueSensor_Param_Struct_t;
 
+//传感器故障状态
+typedef union
+{
+  struct
+	{
+	  uint8_t Sensor1 :1;  //传感器1故障状态位
+		uint8_t Sensor2 :1;  //传感器2故障状态位
+		uint8_t Sensor3 :1;  //传感器3故障状态位
+		uint8_t RS      :5;
+	}FaultBit;
+	uint8_t  FaultStatusCode;
+}TorsueSensorFaultStatus_Struct_t;
+
 //全局变量声明
 extern TorqueSensor_Param_Struct_t TorqueSensor_1_Param;
 extern TorqueSensor_Param_Struct_t TorqueSensor_2_Param;
 extern TorqueSensor_Param_Struct_t TorqueSensor_3_Param;
 
+extern TorsueSensorFaultStatus_Struct_t TorsueSensorFaultStatus;
+
 extern uint16_t TorqueStartData;
 extern TrueOrFalse_Flag_Struct_t IsTorqueOffSetUpdateEnable;
 

+ 103 - 64
User/Src/fault_check.c

@@ -81,82 +81,121 @@ void MC_Fault_SpeedSensor_Process(TrueOrFalse_Flag_Struct_t IsStopFlag, MC_Caden
 }
 
 //力矩传感器故障检测
-void MC_Fault_TorqueSensor_Process(uint16_t ADC_Data, MC_GearSt_Struct_t GearSt, MC_CadenceResult_Struct_t CadenceData, MC_AssistRunMode_Struct_t AstMode, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
+typedef struct
+{
+	uint32_t TrigTimeCnt_1;
+	uint32_t TrigTimeCnt_2;
+	uint16_t TorqueArray[25];
+	uint16_t FaultType;
+	uint32_t DiffStdResult;
+}ToruqeSensorFaultCheck_Struct_t;
+
+//单个力矩传感器故障检测
+void MC_Fault_TorqueSensor_Process_Single(uint16_t ADC_Data, uint8_t Num, ToruqeSensorFaultCheck_Struct_t* p_SensorCheck, uint8_t Cadence,
+	                                        TorsueSensorFaultStatus_Struct_t* SensorFaultStatus)
 {
-  static uint32_t TrigTimeCnt_1 = 0;
-	static uint32_t TrigTimeCnt_2 = 0;
-	static uint16_t TorqueArray[25] = {0};
-	static uint32_t DiffSqrtResult = 0;
 	uint16_t i;
 	uint16_t DelayTime;
-	static uint32_t PeriodTimeCnt = 0;
+
+	for(i=0; i<(sizeof(p_SensorCheck->TorqueArray) / 2 - 1); i++)
+	{
+		p_SensorCheck->TorqueArray[i] = p_SensorCheck->TorqueArray[i + 1];
+	}
+	p_SensorCheck->TorqueArray[sizeof(p_SensorCheck->TorqueArray) / 2 - 1] = ADC_Data;
+
+	p_SensorCheck->DiffStdResult = GetStandardDeviation(p_SensorCheck->TorqueArray, sizeof(p_SensorCheck->TorqueArray) / 2);
+	//标准差较小
+	if(p_SensorCheck->DiffStdResult < 12)
+	{
+		DelayTime = 15000 / Cadence;  //根据踏频计算踩踏1/4圈的时间,要考虑空踩情况
+		DelayTime = (DelayTime < 250) ? 250 : DelayTime;
+		if((HAL_GetTick() - p_SensorCheck->TrigTimeCnt_1) > (DelayTime * 2))
+		{
+			SensorFaultStatus->FaultStatusCode |= 1 << (Num - 1);
+			p_SensorCheck->FaultType = 1;
+			return;
+		}
+	}
+	else
+	{
+		p_SensorCheck->TrigTimeCnt_1 = HAL_GetTick();
+	}
 	
-	if(HAL_GetTick() < 5000)
+	//传感器短路或开路检测
+	if((ADC_Data < 50) || (ADC_Data > 4050))
 	{
-	  TrigTimeCnt_1 = HAL_GetTick();
-		TrigTimeCnt_2 = HAL_GetTick();
+		if((HAL_GetTick() - p_SensorCheck->TrigTimeCnt_2) > 250)
+		{
+			SensorFaultStatus->FaultStatusCode |= 1 << (Num - 1);
+			p_SensorCheck->FaultType = 2;
+			return;
+		}
+	}
+	else
+	{
+		p_SensorCheck->TrigTimeCnt_2 = HAL_GetTick();
+	}
+}
+
+//力矩传感器故障综合检测
+void MC_Fault_TorqueSensor_Process(uint16_t* SensorData, 
+	                                 MC_GearSt_Struct_t GearSt, MC_CadenceResult_Struct_t CadenceData, MC_AssistRunMode_Struct_t AstMode, 
+                                   TorsueSensorFaultStatus_Struct_t* SensorFaultStatus, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
+{
+	static uint32_t PeriodTimeCnt = 0;
+	
+	static ToruqeSensorFaultCheck_Struct_t ToruqeSensorFaultCheck_Struct_t[3]; //用于传感器1\2\3的判断
+		
+	if((HAL_GetTick() < 5000) || (MC_WorkMode == MC_WorkMode_Config))
+	{	  
+		ToruqeSensorFaultCheck_Struct_t[0].TrigTimeCnt_1 = HAL_GetTick();
+		ToruqeSensorFaultCheck_Struct_t[0].TrigTimeCnt_2 = HAL_GetTick();
+		ToruqeSensorFaultCheck_Struct_t[1].TrigTimeCnt_1 = HAL_GetTick();
+		ToruqeSensorFaultCheck_Struct_t[1].TrigTimeCnt_2 = HAL_GetTick();
+		ToruqeSensorFaultCheck_Struct_t[2].TrigTimeCnt_1 = HAL_GetTick();
+		ToruqeSensorFaultCheck_Struct_t[2].TrigTimeCnt_2 = HAL_GetTick();
 	}
 	
-	if( MC_WorkMode == MC_WorkMode_Config) return;
 	//运行周期20ms
 	if((HAL_GetTick() - PeriodTimeCnt) >= 20)
 	{
-	  PeriodTimeCnt = HAL_GetTick();
-		for(i=0; i<(sizeof(TorqueArray) / 2 - 1); i++)
+		PeriodTimeCnt = HAL_GetTick();
+		
+		//力矩助力模式、踏频正转且大于30rpm
+		if(((GearSt != 0x22) && ((GearSt & 0x0F) != 0)) && (CadenceData.Cadence_Data > 30) && (CadenceData.Cadence_Dir == MC_Cadence_Forward) && (AstMode == MC_AssistRunMode_TORQUE))
 		{
-			TorqueArray[i] = TorqueArray[i + 1];
-		}
-		TorqueArray[sizeof(TorqueArray) / 2 - 1] = ADC_Data;
+		  //判断传感器1
+		  MC_Fault_TorqueSensor_Process_Single(SensorData[0], 1, &ToruqeSensorFaultCheck_Struct_t[0], CadenceData.Cadence_Data, SensorFaultStatus);
+		
+	  	//判断传感器2
+		  MC_Fault_TorqueSensor_Process_Single(SensorData[1], 2, &ToruqeSensorFaultCheck_Struct_t[1], CadenceData.Cadence_Data, SensorFaultStatus);
 		
-		if(p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor == 0)
+		  //判断传感器3
+		  MC_Fault_TorqueSensor_Process_Single(SensorData[2], 3, &ToruqeSensorFaultCheck_Struct_t[2], CadenceData.Cadence_Data, SensorFaultStatus);
+			
+		}	
+	}
+
+	//综合判断
+	if(p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor == 0)
+	{
+	  if((SensorFaultStatus->FaultBit.Sensor1 + SensorFaultStatus->FaultBit.Sensor2 + SensorFaultStatus->FaultBit.Sensor3) > 1)//超过2个传感器异常
 		{
-			DiffSqrtResult = GetStandardDeviation(TorqueArray, sizeof(TorqueArray) / 2);
-			//传感器感应失效检测,进入力矩助力模式、踏频正转大于10rpm、标准差较小
-			if(((GearSt != 0x22) && ((GearSt & 0x0F) != 0)) && (CadenceData.Cadence_Data > 30) && (CadenceData.Cadence_Dir == MC_Cadence_Forward) && (AstMode == MC_AssistRunMode_TORQUE) && (DiffSqrtResult < 10))
-			{
-				DelayTime = 15000 / CadenceData.Cadence_Data;  //根据踏频计算踩踏1/4圈的时间,要考虑空踩情况
-				DelayTime = (DelayTime < 250) ? 250 : DelayTime;
-				if((HAL_GetTick() - TrigTimeCnt_1) > (DelayTime * 2))
-				{
-					p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor = 1;
-					//记录故障日志
-					MC_ErrorLogSaveInfo.NotesInfo1 = 1;
-					MC_ErrorLogSaveInfo.NotesInfo2 = (uint16_t)(DiffSqrtResult);
-					ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
-					IsErrorLogSaveInfoUpdateFlag = TRUE;	
-					//存储故障次数
-					MC_RunLog1.TQS_FaultCnt++;
-					RunLogSaveIndex = 1;
-					
-					return;
-				}
-			}
-			else
-			{
-				TrigTimeCnt_1 = HAL_GetTick();
-			}
-			//传感器短路或开路检测
-			if((ADC_Data < 50) || (ADC_Data > 4050))
-			{
-				if((HAL_GetTick() - TrigTimeCnt_2) > 200)
-				{
-					p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor = 1;
-					//记录故障日志
-					MC_ErrorLogSaveInfo.NotesInfo1 = 2;
-					MC_ErrorLogSaveInfo.NotesInfo2 = ADC_Data;
-					ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
-					IsErrorLogSaveInfoUpdateFlag = TRUE;
-					//存储故障次数
-					MC_RunLog1.TQS_FaultCnt++;
-					RunLogSaveIndex = 1;
-					
-					return;
-				}
-			}
-			else
-			{
-				TrigTimeCnt_2 = HAL_GetTick();
-			}
+		  p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor = 1;
+			//记录故障日志
+			MC_ErrorLogSaveInfo.NotesInfo1 = (SensorFaultStatus->FaultStatusCode << 8);    //高8位存储3个传感器的故障状态
+			MC_ErrorLogSaveInfo.NotesInfo1 |= (ToruqeSensorFaultCheck_Struct_t[0].FaultType) + 
+			                                  (ToruqeSensorFaultCheck_Struct_t[1].FaultType << 2) +
+			                                  (ToruqeSensorFaultCheck_Struct_t[2].FaultType << 4);   //依次存储3个传感器的故障类型
+			MC_ErrorLogSaveInfo.NotesInfo2 = (ToruqeSensorFaultCheck_Struct_t[0].DiffStdResult) +    //依次存储传感器1、2的标准差
+			                                 (ToruqeSensorFaultCheck_Struct_t[1].DiffStdResult << 8);
+			MC_ErrorLogSaveInfo.NotesInfo3 = (ToruqeSensorFaultCheck_Struct_t[2].DiffStdResult);     //存储传感器3的标准差
+			ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
+			IsErrorLogSaveInfoUpdateFlag = TRUE;	
+			//存储故障次数
+			MC_RunLog1.TQS_FaultCnt++;
+			RunLogSaveIndex = 1;
+			return;
 		}
 	}
 }
@@ -994,7 +1033,7 @@ void MC_Fault_Check_Process(void)
 	}
 
 	//力矩传感器故障检测
-	MC_Fault_TorqueSensor_Process(ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1], MC_ControlCode.GearSt, MC_CadenceResult, MC_CalParam.AssistRunMode, &MC_ErrorCode);
+	MC_Fault_TorqueSensor_Process(&ADC1_Result[ADC1_RANK_TORQUE_SENSOR_1], MC_ControlCode.GearSt, MC_CadenceResult, MC_CalParam.AssistRunMode, &TorsueSensorFaultStatus, &MC_ErrorCode);
 	
 	//相线故障检测
 	MC_Fault_PhaseLine_Process(MC_CalParam.Foc_Flag, MC_RunInfo.BusCurrent, MC_RunInfo.MotorSpeed, ADC_3ShuntCurrent_RMSValue, &MC_ErrorCode);

+ 5 - 27
User/Src/torque_sensor.c

@@ -10,6 +10,8 @@ TorqueSensor_Param_Struct_t TorqueSensor_1_Param;//
 TorqueSensor_Param_Struct_t TorqueSensor_2_Param;//传感器2参数
 TorqueSensor_Param_Struct_t TorqueSensor_3_Param;//传感器3参数
 
+TorsueSensorFaultStatus_Struct_t TorsueSensorFaultStatus;//3个传感器的故障状态
+
 uint16_t TorqueStartData = TORQUE_SENSOR_STARTDATA;//启动值
 TrueOrFalse_Flag_Struct_t IsTorqueOffSetUpdateEnable = FALSE;//运行中零点值动态更新标志
 
@@ -133,15 +135,7 @@ void TorqueOffSetData_Present_Update1(uint16_t* PresentData, uint16_t AdcData, u
 	}
 	if((HAL_GetTick() - ErrorDelayTimeCnt) > 10000)
 	{
-	  p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor = 1;
-		//记录故障日志
-		MC_ErrorLogSaveInfo.NotesInfo1 = 3;
-		MC_ErrorLogSaveInfo.NotesInfo2 = *PresentData;
-		ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
-		IsErrorLogSaveInfoUpdateFlag = TRUE;
-		//存储故障次数
-		MC_RunLog1.TQS_FaultCnt++;
-		RunLogSaveIndex = 1;
+	  TorsueSensorFaultStatus.FaultBit.Sensor1 = 1;	
 	}
 }
 
@@ -190,15 +184,7 @@ void TorqueOffSetData_Present_Update2(uint16_t* PresentData, uint16_t AdcData, u
 	}
 	if((HAL_GetTick() - ErrorDelayTimeCnt) > 10000)
 	{
-	  p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor = 1;
-		//记录故障日志
-		MC_ErrorLogSaveInfo.NotesInfo1 = 3;
-		MC_ErrorLogSaveInfo.NotesInfo2 = *PresentData;
-		ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
-		IsErrorLogSaveInfoUpdateFlag = TRUE;
-		//存储故障次数
-		MC_RunLog1.TQS_FaultCnt++;
-		RunLogSaveIndex = 1;
+	  TorsueSensorFaultStatus.FaultBit.Sensor2 = 1;
 	}
 }
 
@@ -247,14 +233,6 @@ void TorqueOffSetData_Present_Update3(uint16_t* PresentData, uint16_t AdcData, u
 	}
 	if((HAL_GetTick() - ErrorDelayTimeCnt) > 10000)
 	{
-	  p_MC_ErrorCode->ERROR_Bit.Fault_TorqueSensor = 1;
-		//记录故障日志
-		MC_ErrorLogSaveInfo.NotesInfo1 = 3;
-		MC_ErrorLogSaveInfo.NotesInfo2 = *PresentData;
-		ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
-		IsErrorLogSaveInfoUpdateFlag = TRUE;
-		//存储故障次数
-		MC_RunLog1.TQS_FaultCnt++;
-		RunLogSaveIndex = 1;
+	  TorsueSensorFaultStatus.FaultBit.Sensor3 = 1;
 	}
 }

+ 4 - 1
User/Src/var.c

@@ -463,6 +463,9 @@ void Var_Init(void)
 	//TE故障码初始化为0
 	MC_TE_SensorStatus.TE_ErrorCode.Code = 0;
 	
+  //力矩传感器故障状态清零
+	TorsueSensorFaultStatus.FaultStatusCode = 0;
+	
 	//设备在线检测结果初始化为离线
 	DeviceOnLine_Status.Status = 0x07;
 					
@@ -483,7 +486,7 @@ void Var_Init(void)
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
   strncpy(MC_VerInfo.HW_Version, (char*)"TT_KZ_010C.     ", 16);//TT_KZ_010A
-	strncpy(MC_VerInfo.FW_Version, (char*)"V3r1r1_20200506", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V3r2r0_20200622", 16);
 	
 	//电机型号
 	strncpy(MC_VerInfo.Mode, (char*)"PG8000 & PSX000.", 16);

+ 8 - 0
修改说明.txt

@@ -282,6 +282,14 @@ V3.1.1_20200506
 1、CAN错误中断回调中清除中断标志;
 2、版本号:V3.1.1_20200506
 
+V3.2.0_20200622
+1、adc.c中目前电压采集增加根据母线电流对线阻的补偿;
+2、力矩传感器采集由三个的均值,改为增加坏一个时取另外两个均值的处理;
+3、增加对三个力矩传感器单独判断,综合处理后决定如何力矩值;
+4、修改力矩传感器故障检测的逻辑;
+5、版本号:V3.2.0_20200622
+
+