|
@@ -578,82 +578,15 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(MC_CadenceResult_Struct_t C
|
|
//设定加减速斜率
|
|
//设定加减速斜率
|
|
TorqueAccStep = 3;
|
|
TorqueAccStep = 3;
|
|
TorqueDecStep = 7;
|
|
TorqueDecStep = 7;
|
|
- //根据档位给定力矩最大值和限流值
|
|
|
|
- switch(GearSt)
|
|
|
|
- {
|
|
|
|
- case MC_GearSt_Torque_ECO:
|
|
|
|
- {
|
|
|
|
- //给定上限
|
|
|
|
- Torque_Temp = (Torque_Temp > MC_AssisParam.Gear_ECO.Upper_Iq) ? MC_AssisParam.Gear_ECO.Upper_Iq : Torque_Temp;
|
|
|
|
- //限流参数设置
|
|
|
|
- CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_ECO.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
|
|
|
|
- CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
|
|
|
|
- PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_ECO.Upper_Iq); //Lower Limit for Output limitation
|
|
|
|
- PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
|
|
|
|
- PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_ECO.Upper_Iq << 10); // 放大1024
|
|
|
|
- PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- case MC_GearSt_Torque_NORM:
|
|
|
|
- {
|
|
|
|
- //给定上限
|
|
|
|
- Torque_Temp = (Torque_Temp > MC_AssisParam.Gear_NORM.Upper_Iq) ? MC_AssisParam.Gear_NORM.Upper_Iq : Torque_Temp;
|
|
|
|
- //限流参数设置
|
|
|
|
- CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_NORM.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
|
|
|
|
- CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
|
|
|
|
- PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_NORM.Upper_Iq); //Lower Limit for Output limitation
|
|
|
|
- PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
|
|
|
|
- PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_NORM.Upper_Iq << 10); // 放大1024
|
|
|
|
- PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- case MC_GearSt_Torque_SPORT:
|
|
|
|
- {
|
|
|
|
- //给定上限
|
|
|
|
- Torque_Temp = (Torque_Temp > MC_AssisParam.Gear_SPORT.Upper_Iq) ? MC_AssisParam.Gear_SPORT.Upper_Iq : Torque_Temp;
|
|
|
|
- //限流参数设置
|
|
|
|
- CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_SPORT.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
|
|
|
|
- CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
|
|
|
|
- PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_SPORT.Upper_Iq); //Lower Limit for Output limitation
|
|
|
|
- PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
|
|
|
|
- PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_SPORT.Upper_Iq << 10); // 放大1024
|
|
|
|
- PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- case MC_GearSt_Torque_TURBO:
|
|
|
|
- {
|
|
|
|
- //给定上限
|
|
|
|
- Torque_Temp = (Torque_Temp > MC_AssisParam.Gear_TURBO.Upper_Iq) ? MC_AssisParam.Gear_TURBO.Upper_Iq : Torque_Temp;
|
|
|
|
- //限流参数设置
|
|
|
|
- CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_TURBO.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
|
|
|
|
- CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
|
|
|
|
- PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_TURBO.Upper_Iq); //Lower Limit for Output limitation
|
|
|
|
- PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
|
|
|
|
- PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_TURBO.Upper_Iq << 10); // 放大1024
|
|
|
|
- PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- case MC_GearSt_SMART:
|
|
|
|
- {
|
|
|
|
- //给定上限
|
|
|
|
- Torque_Temp = (Torque_Temp > MC_AssisParam.Gear_SMART.Upper_Iq) ? MC_AssisParam.Gear_SMART.Upper_Iq : Torque_Temp;
|
|
|
|
- //限流参数设置
|
|
|
|
- CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_SMART.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
|
|
|
|
- CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
|
|
|
|
- PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_SMART.Upper_Iq); //Lower Limit for Output limitation
|
|
|
|
- PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
|
|
|
|
- PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_SMART.Upper_Iq << 10); // 放大1024
|
|
|
|
- PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- default:
|
|
|
|
- {
|
|
|
|
- TorqueAccStep = 0;
|
|
|
|
- TorqueDecStep = 0;
|
|
|
|
- Torque_Temp = 0;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //给定上限
|
|
|
|
+ Torque_Temp = (Torque_Temp > MC_AssisParam.Gear_TURBO.Upper_Iq) ? MC_AssisParam.Gear_TURBO.Upper_Iq : Torque_Temp;
|
|
|
|
+ //设定最大电流
|
|
|
|
+ CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_TURBO.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
|
|
|
|
+ CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
|
|
|
|
+ PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_TURBO.Upper_Iq); //Lower Limit for Output limitation
|
|
|
|
+ PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
|
|
|
|
+ PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_TURBO.Upper_Iq << 10); // 放大1024
|
|
|
|
+ PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -847,7 +780,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(MC_CadenceResult_Struct_t C
|
|
}
|
|
}
|
|
|
|
|
|
//随车速调节助力比
|
|
//随车速调节助力比
|
|
- Torque_Temp = (uint16_t)((uint32_t)(Torque_Temp * Function_Linear_3Stage(0, 0, (MC_ConfigParam1.SpeedLimit * 10), 52, MC_SpeedSensorData.Speed_Data)) >> 10);
|
|
|
|
|
|
+ Torque_Temp = (uint16_t)((uint32_t)(Torque_Temp * Function_Linear_3Stage(0, 0, (MC_ConfigParam1.SpeedLimit * 10 - 20), 52, MC_SpeedSensorData.Speed_Data)) >> 10);
|
|
|
|
|
|
//助力输出
|
|
//助力输出
|
|
MC_TorqueProcess_Param.TorqueRef = Torque_Temp;
|
|
MC_TorqueProcess_Param.TorqueRef = Torque_Temp;
|
|
@@ -857,7 +790,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(MC_CadenceResult_Struct_t C
|
|
}
|
|
}
|
|
|
|
|
|
//升降速曲线计算
|
|
//升降速曲线计算
|
|
- if( MC_SpeedSensorData.Speed_Data > (MC_ConfigParam1.SpeedLimit * 10) ) //限速处理
|
|
|
|
|
|
+ if( MC_SpeedSensorData.Speed_Data > (MC_ConfigParam1.SpeedLimit * 10 - 20) ) //限速处理
|
|
{
|
|
{
|
|
if((MC_TorqueProcess_Param.TorqueRef - MC_TorqueProcess_Param.TorqueRefEnd) > 2)
|
|
if((MC_TorqueProcess_Param.TorqueRef - MC_TorqueProcess_Param.TorqueRefEnd) > 2)
|
|
{
|
|
{
|
|
@@ -943,7 +876,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(MC_CadenceResult_Struct_t C
|
|
MC_TorqueProcess_Param.TorqueRefEnd = (MC_TorqueProcess_Param.TorqueRefEnd < 6) ? 6 : MC_TorqueProcess_Param.TorqueRefEnd;
|
|
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 > (MC_ConfigParam1.SpeedLimit * 10 + 2)) //限速值 + 0.2
|
|
{
|
|
{
|
|
MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
|
|
MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
|
|
MC_TorqueProcess_Param.TorqueRefEnd = 0;
|
|
MC_TorqueProcess_Param.TorqueRefEnd = 0;
|