Explorar el Código

优化过热降功率曲线。

hero hace 1 año
padre
commit
0693aef6b5

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2500 - 2500
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 3 - 1
User/Src/can_process.c

@@ -224,7 +224,9 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				}
 				case 0x3500://OBC²éѯÆïÐÐÀúÊ·
 				{
-				  SendData(ID_MC_BC, MODE_REPORT, 0x1510, (uint8_t*)&MC_RideLog.ODO_Km);
+					MC_RideLog.TRIP_Km = 6020;
+					MC_RideLog.ODO_Km = 6020;
+					SendData(ID_MC_BC, MODE_REPORT, 0x1510, (uint8_t*)&MC_RideLog.ODO_Km);
 					break;
 				}
 				case 0x3605://OBCÇå³ýTRIPÐÅÏ¢

+ 21 - 20
User/Src/motor_control.c

@@ -169,19 +169,19 @@ uint16_t MC_LimitSpeed_Cal_K_BySOC(FunctionalState Flag, uint16_t SOC)
 	return Limit_K_BySOC;
 }
 
-//随温度计算助力衰减系数,温度区间25
+//随温度计算助力衰减系数,温度区间20
 uint16_t MC_Cal_K_ByTemperature(uint16_t CoilTemp, uint16_t AlarmTempTH)
 {
   uint32_t CalTemp;
 	uint16_t Result = 1024;
 	
-	if(CoilTemp > AlarmTempTH + 25)
+	if(CoilTemp > AlarmTempTH + 20)
 	{
 	  Result = 256;
 	}
 	else if(CoilTemp > AlarmTempTH)
 	{
-	  Result = 1024 - (CoilTemp - AlarmTempTH) * 30;
+	  Result = 1024 - (CoilTemp - AlarmTempTH) * 38;
 	}
 	else
 	{
@@ -456,7 +456,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasSpeed_Process(MC_GasMode_Struct_t GasMo
 	static uint16_t K_ByVoltage_Set_Old = 1024;
 	uint16_t K_ByVoltage_Set;
 	static uint16_t K_ByVoltage_Result;
-	uint32_t K_ByTemperature_Set, K_ByTemperature_Set1, K_ByTemperature_Set2;
+	uint16_t K_ByTemperature_Set, K_ByTemperature_SetTemp[3];
 	static uint16_t K_ByTemperature_Result;
 
 	//根据电压调节输出
@@ -465,9 +465,10 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasSpeed_Process(MC_GasMode_Struct_t GasMo
   K_ByVoltage_Result = MC_DataSet_Linear_Process(K_ByVoltage_Set, K_ByVoltage_Result, 1, 1); //设定值与给定值线性处理
 	
 	//根据温度调节输出
-	K_ByTemperature_Set1 = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, MC_ConfigParam1.TempTH_Alarm); //根据温度计算衰减比例
-	K_ByTemperature_Set2 = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 15)); //根据温度计算衰减比例
-	K_ByTemperature_Set  = (K_ByTemperature_Set1 * K_ByTemperature_Set2) >> 10;		
+	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 10));     //根据PCB温度衰减系数,85℃到105℃
+	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm + 5));      //根据MOS温度衰减系数,100℃到120℃
+	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm + 15));     //根据电机温度衰减系数,110℃到130℃
+	K_ByTemperature_Set = GetMinData(K_ByTemperature_SetTemp, 3);	
 	K_ByTemperature_Result = MC_DataSet_Linear_Process(K_ByTemperature_Set, K_ByTemperature_Result, 1, 1); //设定值与给定值线性处理
 	
 	#else
@@ -561,7 +562,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasTorque_Process(MC_GasMode_Struct_t GasM
 			case MC_GearSt_Torque_NORM:
 			{
 				//控制输入给定加速斜率
-				TorqueAccStep = 1;
+				TorqueAccStep = 2;
 				//控制输入给定减速斜率
 				TorqueDecStep = 1;	
 				//根据输入调节力矩环给定
@@ -580,7 +581,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasTorque_Process(MC_GasMode_Struct_t GasM
 			case MC_GearSt_Torque_SPORT:
 			{
 				//控制输入给定加速斜率
-				TorqueAccStep = 1;
+				TorqueAccStep = 3;
 				//控制输入给定减速斜率
 				TorqueDecStep = 1;	
 				//根据输入调节力矩环给定
@@ -599,7 +600,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasTorque_Process(MC_GasMode_Struct_t GasM
 			case MC_GearSt_Torque_TURBO: case MC_GearSt_SMART:
 			{
 				//控制输入给定加速斜率
-				TorqueAccStep = 1;
+				TorqueAccStep = 4;
 				//控制输入给定减速斜率
 				TorqueDecStep = 1;
 				//根据输入调节力矩环给定
@@ -627,7 +628,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasTorque_Process(MC_GasMode_Struct_t GasM
 	else if(GasMode_Param.Mode_bit.PowerLimitFlag == 0) //不根据挡位限制功率,按照Turbo参数
 	{
 	  //控制输入给定加速斜率
-		TorqueAccStep = 1;
+		TorqueAccStep = 4;
 		//控制输入给定减速斜率
 		TorqueDecStep = 1;	
 		//根据输入调节力矩环给定
@@ -743,9 +744,9 @@ MC_CalParam_Struct_t MC_AssistRunMode_GasTorque_Process(MC_GasMode_Struct_t GasM
   K_ByVoltage_Result = MC_DataSet_Linear_Process(K_ByVoltage_Set, K_ByVoltage_Result, 1, 1); //设定值与给定值线性处理
 	
 	//根据温度调节输出
-	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 15));     //根据PCB温度衰减系数,80℃到105℃
-	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm - 5));      //根据MOS温度衰减系数,90℃到115
-	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm));         //根据电机温度衰减系数,95℃到120℃
+	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 10));     //根据PCB温度衰减系数,85℃到105℃
+	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm + 5));      //根据MOS温度衰减系数,100℃到120
+	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm + 15));     //根据电机温度衰减系数,110℃到130℃
 	K_ByTemperature_Set = GetMinData(K_ByTemperature_SetTemp, 3);	
 	K_ByTemperature_Result = MC_DataSet_Linear_Process(K_ByTemperature_Set, K_ByTemperature_Result, 1, 1); //设定值与给定值线性处理
 	
@@ -874,9 +875,9 @@ MC_CalParam_Struct_t MC_AssistRunMode_Walk_Process(MC_WorkMode_Struct_t p_MC_Wor
   K_ByVoltage_Result = MC_DataSet_Linear_Process(K_ByVoltage_Set, K_ByVoltage_Result, 1, 1); //设定值与给定值线性处理
 	
 	//根据温度调节输出
-	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 15));     //根据PCB温度衰减系数,80℃到105℃
-	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm - 5));      //根据MOS温度衰减系数,90℃到115
-	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm));         //根据电机温度衰减系数,95℃到120℃
+	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 10));     //根据PCB温度衰减系数,85℃到105℃
+	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm + 5));      //根据MOS温度衰减系数,100℃到120
+	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm + 15));     //根据电机温度衰减系数,110℃到130℃
 	K_ByTemperature_Set = GetMinData(K_ByTemperature_SetTemp, 3);	
 	K_ByTemperature_Result = MC_DataSet_Linear_Process(K_ByTemperature_Set, K_ByTemperature_Result, 1, 1); //设定值与给定值线性处理
 	
@@ -1364,9 +1365,9 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
   K_ByVoltage_Result = MC_DataSet_Linear_Process(K_ByVoltage_Set, K_ByVoltage_Result, 1, 1); //设定值与给定值线性处理
 	
 	//根据温度调节输出
-	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 15));     //根据PCB温度衰减系数,80℃到105
-	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm - 5));      //根据MOS温度衰减系数,90℃到115
-	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm));         //根据电机温度衰减系数,95℃到120℃
+	K_ByTemperature_SetTemp[0] = MC_Cal_K_ByTemperature(MC_RunInfo.T_PCB, (MC_ConfigParam1.TempTH_Alarm - 15));     //根据PCB温度衰减系数,80℃到100
+	K_ByTemperature_SetTemp[1] = MC_Cal_K_ByTemperature(MC_RunInfo.T_MCU, (MC_ConfigParam1.TempTH_Alarm + 5));      //根据MOS温度衰减系数,100℃到120
+	K_ByTemperature_SetTemp[2] = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, (MC_ConfigParam1.TempTH_Alarm + 15));     //根据电机温度衰减系数,110℃到130℃
 	K_ByTemperature_Set = GetMinData(K_ByTemperature_SetTemp, 3);	
 	K_ByTemperature_Result = MC_DataSet_Linear_Process(K_ByTemperature_Set, K_ByTemperature_Result, 1, 1); //设定值与给定值线性处理
 	

+ 3 - 3
User/Src/protect_check.c

@@ -264,14 +264,14 @@ void MC_Protect_OverHeat_Process(uint8_t T_MCU, uint8_t T_PCB, uint8_t T_Coil, u
 		}
 		//新板有MOS温度传感器,根据PCB温度、MOS温度、绕组温度
 		else
-		{ //单片机105度保护,绕组135度保护,MOS管115度保护
-			if( (T_PCB < (TH - 20))&&(T_Coil < (TH + 10))&&(T_MCU < (TH - 10)) ) 
+		{ //单片机105度保护,绕组135度保护,MOS管125度保护
+			if( (T_PCB < (TH - 20))&&(T_Coil < (TH + 10))&&(T_MCU < (TH)) ) 
 			{
 				OT_Set_TimeCnt = HAL_GetTick();
 			}
 		}
 		//过热保护判断
-		if((HAL_GetTick() - OT_Set_TimeCnt) > 5000)
+		if((HAL_GetTick() - OT_Set_TimeCnt) > 10000)
 		{
 			OT_Reset_TimeCnt = HAL_GetTick();
 			p_MC_ErrorCode->ERROR_Bit.Protect_OverTemp = 1;

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio