Переглянути джерело

增加起始限速和结束限速;

white.xu 2 роки тому
батько
коміт
0da51c1e9b

Різницю між файлами не показано, бо вона завелика
+ 1672 - 1672
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 3 - 1
User/Inc/var.h

@@ -211,7 +211,9 @@ typedef struct
 	uint16_t u16OverspeedWarnVal;										//超速告警值
 	uint16_t u16EffectVal;													//尾灯亮起有效值
 	uint16_t u16Prediv;															//尾灯亮起时间的分频系数
-	uint8_t RS2[18];
+	int8_t   speedLimitStartAdj;
+	int8_t   speedLimitEndAdj;
+	uint8_t RS2[16];
 }MC_ConfigParam2_Struct_t;
 
 //姿态传感器数值

+ 9 - 10
User/Src/motor_control.c

@@ -976,9 +976,15 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 				break;
 			}
 		}
+		static uint16_t speedLimitStart=250, speedLimitEnd=272, slewRate=52;
+		if((MC_ConfigParam2.speedLimitStartAdj>50) || (MC_ConfigParam2.speedLimitStartAdj<-50)) MC_ConfigParam2.speedLimitStartAdj=0;
+		if((MC_ConfigParam2.speedLimitEndAdj>50) || (MC_ConfigParam2.speedLimitEndAdj<-50)) MC_ConfigParam2.speedLimitEndAdj=0;
 		
+		speedLimitStart = MC_ConfigParam1.SpeedLimit*10 + MC_ConfigParam2.speedLimitStartAdj;
+		speedLimitEnd   = MC_ConfigParam1.SpeedLimit*10 + MC_ConfigParam2.speedLimitEndAdj + 22;
+		slewRate        = 1024/(speedLimitEnd-speedLimitStart-3);		
 		//随车速调节助力比
-		Torque_Temp = (uint16_t)((uint32_t)(Torque_Temp * Function_Linear_3Stage(MC_ConfigParam1.SpeedLimit * 10, 0, MC_ConfigParam1.SpeedLimit * 10, 52, MC_SpeedSensorData.Speed_Data)) >> 10);
+		Torque_Temp = (uint16_t)((uint32_t)(Torque_Temp * Function_Linear_3Stage(speedLimitStart, 0, speedLimitStart, slewRate, MC_SpeedSensorData.Speed_Data)) >> 10);
 			
     //助力输出		
 		MC_TorqueProcess_Param.TorqueRef = Torque_Temp;
@@ -988,7 +994,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 		}
 				
 		//升降速曲线计算
-		if( MC_SpeedSensorData.Speed_Data > (MC_ConfigParam1.SpeedLimit * 10) ) //限速处理
+		if( MC_SpeedSensorData.Speed_Data > speedLimitStart ) //限速处理
 		{
 			if((MC_TorqueProcess_Param.TorqueRef - MC_TorqueProcess_Param.TorqueRefEnd) > 2)
 			{
@@ -1074,24 +1080,17 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 		MC_TorqueProcess_Param.TorqueRefEnd = (MC_TorqueProcess_Param.TorqueRefEnd < 6) ? 6 : MC_TorqueProcess_Param.TorqueRefEnd;
 		
 		//限速点处理
-		if( MC_SpeedSensorData.Speed_Data > (MC_ConfigParam1.SpeedLimit * 10 + 22) ) //限速值 + 2.2
+		if( MC_SpeedSensorData.Speed_Data > speedLimitEnd ) //限速值 + 2.2
 		{
 			MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
 			MC_TorqueProcess_Param.TorqueRefEnd = 0;
 			//停机处理
 			MC_MotorStop(&MC_StarFlag);
 		}
-		#if 0  //低于限速点启动电机
-		else if(MC_RunInfo.BikeSpeed < ((MC_ConfigParam1.SpeedLimit) * 10))
-		{
-		  MC_MotorStar(&MC_StarFlag);
-		}
-		#elif 1  //低于断电点即启动电机
 		else
 		{
 		  MC_MotorStar(&MC_StarFlag);
 		}
-		#endif
 	}
 	
 	#if 1

Деякі файли не було показано, через те що забагато файлів було змінено