|
@@ -405,16 +405,25 @@ void ass_voParameterInput(void)
|
|
|
if(MC_WorkMode == 1) //配置模式不限制电机最高转速
|
|
|
{
|
|
|
ass_stCadAssCoef.swMSpdpuLimit = (SLONG)(cp_stMotorPara.swRSpeedRpm << 15) / cof_uwVbRpm;
|
|
|
+ ass_stCadAssCoef.swBikeSpeedLimit = (ass_stCadAssCoef.uwThrottleMaxBikeSpeed > ass_stCadAssCoef.uwAssistMaxBikeSpeed) ?
|
|
|
+ ass_stCadAssCoef.uwThrottleMaxBikeSpeed : ass_stCadAssCoef.uwAssistMaxBikeSpeed;
|
|
|
}
|
|
|
else //运行模式
|
|
|
{
|
|
|
if( ass_stCadAssParaPro.uwAssitMode == 7) //转把模式限速
|
|
|
{
|
|
|
- ass_stCadAssCoef.swMSpdpuLimit =ass_stCadAssCoef.swThrottleMaxspd;
|
|
|
+ ass_stCadAssCoef.swMSpdpuLimit = ass_stCadAssCoef.swThrottleMaxspd;
|
|
|
+ ass_stCadAssCoef.swBikeSpeedLimit = ass_stCadAssCoef.uwThrottleMaxBikeSpeed + ASS_SPD_LIMIT_ERR;
|
|
|
}
|
|
|
- else //助力或Walk
|
|
|
+ if(ass_stCadAssParaPro.uwAssitMode == 6) //Walk限速
|
|
|
{
|
|
|
- ass_stCadAssCoef.swMSpdpuLimit =ass_stCadAssCoef.swAssistMaxSpd;
|
|
|
+ ass_stCadAssCoef.swMSpdpuLimit = ass_stCadAssCoef.uwCartMaxBikeSpeed;
|
|
|
+ ass_stCadAssCoef.swBikeSpeedLimit = ass_stCadAssCoef.uwCartMaxBikeSpeed + ASS_SPD_LIMIT_ERR;
|
|
|
+ }
|
|
|
+ else //助力
|
|
|
+ {
|
|
|
+ ass_stCadAssCoef.swMSpdpuLimit = ass_stCadAssCoef.swAssistMaxSpd;
|
|
|
+ ass_stCadAssCoef.swBikeSpeedLimit = ass_stCadAssCoef.uwAssistMaxBikeSpeed + ASS_SPD_LIMIT_ERR;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1153,6 +1162,7 @@ void ass_voAssistCmdDeal(void)
|
|
|
*/
|
|
|
void ass_voAssMaxCurCal(void)
|
|
|
{
|
|
|
+#if 0 //限制电机转速
|
|
|
/* Local variable */
|
|
|
/* Calculate the Speed use for speed limit */
|
|
|
SLONG tmp_slMotorSpd = (SLONG)ass_stCadAssParaIn.swSpdFbkPu * (SLONG)ass_stCadAssParaIn.swDirection;
|
|
@@ -1176,6 +1186,25 @@ void ass_voAssMaxCurCal(void)
|
|
|
{
|
|
|
ass_stCadAssParaPro.swCurrentMaxPu = 0; /**< Q14 */
|
|
|
}
|
|
|
+#else 1 //限制车速
|
|
|
+ SLONG tmp_slBikeSpeed = (SLONG)cp_stBikeRunInfoPara.BikeSpeedKmH << 4; //Q4 0.1km/h
|
|
|
+ SLONG tmp_slBikeSpeedError = tmp_slBikeSpeed - ((SLONG)ass_stCadAssCoef.swBikeSpeedLimit - ASS_SPD_LIMIT_ERR); //提前限制电流
|
|
|
+ SLONG tmp_slBikeSpeedLimitCoef = 0;
|
|
|
+ if (tmp_slBikeSpeedError <= 0)
|
|
|
+ {
|
|
|
+ ass_stCadAssParaPro.swCurrentMaxPu = ass_stCadAssCoef.uwCofCurMaxPu;
|
|
|
+ }
|
|
|
+ else if(tmp_slBikeSpeedError < (SLONG)ASS_SPD_LIMIT_ERR)
|
|
|
+ {
|
|
|
+ tmp_slBikeSpeedLimitCoef = (tmp_slBikeSpeedError << 13) / ASS_SPD_LIMIT_ERR;
|
|
|
+ ass_stCadAssParaPro.swCurrentMaxPu = ((SLONG)ass_stCadAssCoef.uwCofCurMaxPu * (SLONG)(8192L - tmp_slBikeSpeedLimitCoef) >> 13);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ass_stCadAssParaPro.swCurrentMaxPu = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+#endif
|
|
|
|
|
|
/* Calculate the min value of speed limit,flux limit,power limit and Bms limit. Q14 */
|
|
|
ass_stCadAssParaPro.swCurrentMaxPu = (ass_stCadAssParaPro.swCurrentMaxPu < ass_stCadAssParaIn.swPwrIqLimitPu) ? ass_stCadAssParaPro.swCurrentMaxPu : ass_stCadAssParaIn.swPwrIqLimitPu;
|