Forráskód Böngészése

V7r2r0_20221009
1 增加掉电保护功能;
2 屏蔽温度故障检测;
3 版本号更新为V7r2r0_20221009;

white.xu 2 éve
szülő
commit
b5778171a0

+ 1 - 0
Core/Inc/adc.h

@@ -122,6 +122,7 @@ extern void ADC_Start(void);
 extern void ADC_SensorData_Filt(uint16_t* p_ADC1_Result_Filt, uint16_t* p_ADC2_Result_Filt);
 extern void PhaseCurrent_CalRMSValue(ADC_3ShuntCurrent_Struct_t* ADC_3ShuntCurrent, ADC_3ShuntCurrent_Struct_t* PhaseCurrent_RMS);
 extern void MOS_NTC_Init( void );
+extern void PowerDownProtection( uint16_t BusVoltage_AD );
 /* USER CODE END Prototypes */
 
 #ifdef __cplusplus

+ 20 - 0
Core/Src/adc.c

@@ -50,6 +50,7 @@
 #include "gas_sensor.h"
 #include "torque_sensor.h"
 #include "math_tools.h"
+#include "motor_control.h"
 
 uint16_t ADC1_Result[ADC1_DATA_NUM] = {0};
 uint16_t ADC1_Result_Filt[ADC1_DATA_NUM] = {0};
@@ -667,6 +668,8 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	//更新硬件版本AD
 	HardwareVersionADFltSum += ((ADC1_Result[ADC1_RANK_HARDWARE_VER] << 10) - HardwareVersionADFltSum) >> 9;
 	HardwareVersion_AD = (uint16_t)(HardwareVersionADFltSum >> 10);
+	
+	PowerDownProtection(ADC1_Result[ADC1_RANK_VIN]);
 }
 
 //ADC1和ADC2数据滑动滤波
@@ -767,6 +770,23 @@ void MOS_NTC_Init( void )
 		_Error_Handler(__FILE__, __LINE__);
 	}	
 }
+
+void PowerDownProtection( uint16_t BusVoltage_AD )
+{
+	static uint16_t powerdowncount=0;
+	
+	if( BusVoltage_AD < 1393 )  //1393对应的母线电压为25V
+	{
+		if( ++powerdowncount > 60 ) //电压小于20V并连续60次,大约持续20ms左右
+		{
+			Disable_PwmGpio_Out();
+		}
+	}
+	else
+	{
+		powerdowncount=0;
+	}
+}
 /* USER CODE END 1 */
 
 /**

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2183 - 2183
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 6 - 5
MDK-ARM/startup_stm32f103xb.lst

@@ -524,11 +524,12 @@ ork --depend=.\qd007a_ctl_app\startup_stm32f103xb.d -o.\qd007a_ctl_app\startup_
 ARM Macro Assembler    Page 9 
 
 
-stm32f103xb.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019A\TT-KZ-010A_CTRL_APP\MDK-ARM\RTE\
-_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:\Keil_v
-5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefine="__MICROLIB SETA
- 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" --prede
-fine="STM32F10X_MD SETA 1" --list=startup_stm32f103xb.lst startup_stm32f103xb.s
+stm32f103xb.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019X\Pegasi\TT-KZ-010A_CTRL_APP\MDK-A
+RM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:
+\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include --predefine="__MICROL
+IB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" 
+--predefine="STM32F10X_MD SETA 1" --list=startup_stm32f103xb.lst startup_stm32f
+103xb.s
 
 
 

+ 7 - 6
MDK-ARM/stm32f1xx_stucpuregsaddressing.lst

@@ -123,18 +123,19 @@ ARM Macro Assembler    Page 2
    99 00000096                 END
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=.\qd007a_ctl_app\stm32f1xx_stucpuregsaddressing.d -o.\qd007a_ctl_a
-pp\stm32f1xx_stucpuregsaddressing.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019A\TT-KZ-010A
-_CTRL_APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMS
-IS\Include -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --pred
-efine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine=
-"_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuregsadd
+pp\stm32f1xx_stucpuregsaddressing.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019X\Pegasi\TT-
+KZ-010A_CTRL_APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.
+0.0\CMSIS\Include -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include
+ --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --pre
+define="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpu
 
 
 
 ARM Macro Assembler    Page 3 
 
 
-ressing.lst ..\SelfTestUser\src_specific\stm32f1xx_STUCpuRegsAddressing.s
+regsaddressing.lst ..\SelfTestUser\src_specific\stm32f1xx_STUCpuRegsAddressing.
+s
 
 
 

+ 6 - 6
MDK-ARM/stm32f1xx_stucpuwalkpatkeil.lst

@@ -1593,12 +1593,12 @@ ARM Macro Assembler    Page 25
  1172 000006D0                 END
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=.\qd007a_ctl_app\stm32f1xx_stucpuwalkpatkeil.d -o.\qd007a_ctl_app\
-stm32f1xx_stucpuwalkpatkeil.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019A\TT-KZ-010A_CTRL_
-APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Inc
-lude -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefine=
-"__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_
- SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuwalkpatkeil.l
-st ..\SelfTestUser\src_specific\stm32f1xx_STUCpuWalkpatKEIL.s
+stm32f1xx_stucpuwalkpatkeil.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019X\Pegasi\TT-KZ-010
+A_CTRL_APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CM
+SIS\Include -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pre
+define="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine
+="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuwalkpa
+tkeil.lst ..\SelfTestUser\src_specific\stm32f1xx_STUCpuWalkpatKEIL.s
 
 
 

+ 6 - 6
MDK-ARM/stm32f1xx_sturamwalkpatkeil.lst

@@ -430,12 +430,12 @@ ARM Macro Assembler    Page 7
   331 000001F2                 END
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=.\qd007a_ctl_app\stm32f1xx_sturamwalkpatkeil.d -o.\qd007a_ctl_app\
-stm32f1xx_sturamwalkpatkeil.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019A\TT-KZ-010A_CTRL_
-APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Inc
-lude -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefine=
-"__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_
- SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_sturamwalkpatkeil.l
-st ..\SelfTestUser\src_specific\stm32f1xx_STURamWalkpatKEIL.s
+stm32f1xx_sturamwalkpatkeil.o -ID:\MOTINOVAϵͳ\Motor\TTKZ019X\Pegasi\TT-KZ-010
+A_CTRL_APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CM
+SIS\Include -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pre
+define="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine
+="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_sturamwalkpa
+tkeil.lst ..\SelfTestUser\src_specific\stm32f1xx_STURamWalkpatKEIL.s
 
 
 

+ 57 - 57
User/Src/fault_check.c

@@ -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;
+//			}
+//		}		
 	}
 }
 

+ 1 - 1
User/Src/var.c

@@ -500,7 +500,7 @@ void Var_Init(void)
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
 	strncpy(MC_VerInfo.HW_Version, (char*)"TTKZ010D.       ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V7r2r0_20220909C", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V7r2r0_20221009C", 16);
   #if NormalWork
 	MC_VerInfo.FW_Version[15] = '.';
   #endif

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott