|
@@ -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
|