소스 검색

V7r1r2_20220509
1 指拨模式下执行单向器打滑故障检测;
2 增加常转测试代码;
3 版本号变为V7r1r2_20220509;

white.xu 3 년 전
부모
커밋
98c85c40c2
7개의 변경된 파일2166개의 추가작업 그리고 2161개의 파일을 삭제
  1. 1 1
      Core/Inc/main.h
  2. 4 4
      Core/Src/adc.c
  3. 2150 2150
      MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex
  4. BIN
      MDK-ARM/bin/QD007A_CTL_APP.bin
  5. 6 4
      User/Src/fault_check.c
  6. 1 1
      User/Src/motor_control.c
  7. 4 1
      User/Src/var.c

+ 1 - 1
Core/Inc/main.h

@@ -49,7 +49,7 @@
 
 /* Private define ------------------------------------------------------------*/
 #define DEBUG 1
-
+#define NormalWork 1
 #define BREAK_IN_Pin GPIO_PIN_12
 #define BREAK_IN_GPIO_Port GPIOB
 #define BREAK_IN_EXTI_IRQn EXTI15_10_IRQn

+ 4 - 4
Core/Src/adc.c

@@ -480,11 +480,11 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	//更新母线电压 
 	BusVoltageFltSum += ((ADC1_Result[ADC1_RANK_VIN] << 10) - BusVoltageFltSum) >> 9;
 	MC_RunInfo.BusVoltage = (uint32_t)((BusVoltageFltSum >> 10) * 18382) >> 10;//3300 * 1047 / (4095 * 47)
-	MC_RunInfo.BusVoltage += (MC_RunInfo.BusCurrent >> 7) * 13; //根据母线电流和估算的线阻进行补偿, 补偿电阻 0.2 * 128 = 25.6
+	MC_RunInfo.BusVoltage += (MC_RunInfo.BusCurrent >> 7) * 12; //根据母线电流和估算的线阻进行补偿, 补偿电阻 0.2 * 128 = 25.6
 	
 	//更新母线电流
 	Temp_32 = (ADC1_Result[ADC1_RANK_CURRENT] - uw_current_offset) * 50000 >> 11;
-	Temp_32 = (Temp_32 <= 0) ? 0 : Temp_32;
+	Temp_32 = (Temp_32 <= 0) ? 0 : ((Temp_32 >= 50000) ? 50000 : Temp_32);
 	IdcFltSum += ((Temp_32 << 10) - IdcFltSum) >> 9;
 	MC_RunInfo.BusCurrent = IdcFltSum >> 10;
 	
@@ -580,7 +580,7 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 			Temp_32 = Temp_16;
 			break;
 		}	
-		default://超过2个传感器异常
+		default://超过3个传感器异常
 		{
 		  Temp_32 = 0;
 			break;
@@ -588,7 +588,7 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	}
 	
 	#if 1 //采用原始采集值
-	  #if 1 //正常运行
+	  #if NormalWork //正常运行
 	  ADC_SensorData.TorqueSensor = Temp_32;
 	  #else //用于寿命测试,模拟输入力矩
 	  if(HAL_GetTick() < 5000)

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2150 - 2150
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 6 - 4
User/Src/fault_check.c

@@ -844,7 +844,7 @@ void MC_Fault_Circuit_Process(MC_ErrorCode_Struct_t* p_MC_ErrorCode)
 
 
 //机械故障
-void MC_Fault_Machine_Process(uint16_t MotorSpeed, uint16_t CadenceSpeed, uint16_t TorqueApp, uint16_t speedratio, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
+void MC_Fault_Machine_Process(uint16_t MotorSpeed, uint16_t CadenceSpeed, ADC_SensorData_Struct_t SensorData, uint16_t speedratio, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
 {
 	static uint32_t TimeCount_ClutchFault=0;
 	static uint16_t ClutchFaultCount=0;
@@ -854,17 +854,19 @@ void MC_Fault_Machine_Process(uint16_t MotorSpeed, uint16_t CadenceSpeed, uint16
 		if( (HAL_GetTick()-TimeCount_ClutchFault)>=20 )  //20ms执行一次故障判断
 		{
 			TimeCount_ClutchFault = HAL_GetTick();
-			if( (MotorSpeed > 500)&&(CadenceSpeed >= 15)&&(TorqueApp > 200) )
+			if( (MotorSpeed > 500)&&(CadenceSpeed >= 15)&&(SensorData.TorqueSensor > 200)&&(SensorData.GasSensor < 50) )
 			{
 				if( speedratio > 1500 ) 
 				{
 					ClutchFaultCount++;
 					if( ClutchFaultCount>= 50)                  //速比连续出错50次判断为故障,时间将近1s
 					{
+						ClutchFaultCount=0;
 						p_MC_ErrorCode->ERROR_Bit.Fault_Machine = 1;
 						//记录故障日志
 						MC_ErrorLogSaveInfo.NotesInfo1 = 1;       //单向器打滑故障
-						MC_ErrorLogSaveInfo.NotesInfo2 = speedratio;
+						MC_ErrorLogSaveInfo.NotesInfo2 = SensorData.TorqueSensor;
+						MC_ErrorLogSaveInfo.NotesInfo3 = SensorData.GasSensor;
 						ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
 						IsErrorLogSaveInfoUpdateFlag = TRUE;
 						//存储故障次数
@@ -1185,7 +1187,7 @@ void MC_Fault_Check_Process(void)
 	MC_Fault_Circuit_Process(&MC_ErrorCode);
 	
 	//单向器打滑故障检测
-	MC_Fault_Machine_Process(MC_RunInfo.MotorSpeed, MC_CadenceResult.Cadence_Data, ADC_SensorData.TorqueSensor, SpeedRatio, &MC_ErrorCode);
+	MC_Fault_Machine_Process(MC_RunInfo.MotorSpeed, MC_CadenceResult.Cadence_Data, ADC_SensorData, SpeedRatio, &MC_ErrorCode);
 
 	//硬件识别故障
 	MC_Fault_Hardware_Identify(IsComOK_TE.IsOK_Flag, MC_TE_SyncClockFreqScan, ADC1_Result_Filt[ADC1_RANK_HARDWARE_VER], &MC_HallSensorData.InverterExistFlag, &MC_ErrorCode);

+ 1 - 1
User/Src/motor_control.c

@@ -662,7 +662,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 	uint16_t SoftStartAcc = 0;
 	#endif
 
-	#if 1
+	#if NormalWork
 	
 	//²È̤Á¦¾ØÊäÈë
   MC_TorqueProcess_Param.TorqueApp = SenorData;

+ 4 - 1
User/Src/var.c

@@ -498,7 +498,10 @@ void Var_Init(void)
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
 	strncpy(MC_VerInfo.HW_Version, (char*)"TTKZ010D.       ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V7r1r2_20220428.", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V7r1r2_20220509C", 16);
+  #if NormalWork
+	MC_VerInfo.FW_Version[15] = '.';
+  #endif
 	strncpy(Firmware_Special, (char*)"TC011000-MS0000-V0r0.           ", 32);
 	if(MCUManufacturer == NoName) MC_VerInfo.HW_Version[10] = '0';
 	else if(MCUManufacturer == STM32F103RBT6) MC_VerInfo.HW_Version[10] = '1';

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.