|
@@ -403,14 +403,22 @@ void ass_voAssistCoefCal(void)
|
|
void ass_voParameterInput(void)
|
|
void ass_voParameterInput(void)
|
|
{
|
|
{
|
|
/** Motor Max Speed calculate according to bike speed limit */
|
|
/** Motor Max Speed calculate according to bike speed limit */
|
|
- if( ass_stCadAssParaPro.uwAssitMode == 7)
|
|
|
|
- {
|
|
|
|
- ass_stCadAssCoef.swMSpdpuLimit =ass_stCadAssCoef.swThrottleMaxspd;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- ass_stCadAssCoef.swMSpdpuLimit =ass_stCadAssCoef.swAssistMaxSpd;
|
|
|
|
- }
|
|
|
|
|
|
+ if(MC_WorkMode == 1) //配置模式不限制电机最高转速
|
|
|
|
+ {
|
|
|
|
+ ass_stCadAssCoef.swMSpdpuLimit = (SLONG)(cp_stMotorPara.swRSpeedRpm << 15) / cof_uwVbRpm;
|
|
|
|
+ }
|
|
|
|
+ else //运行模式
|
|
|
|
+ {
|
|
|
|
+ if( ass_stCadAssParaPro.uwAssitMode == 7) //转把模式限速
|
|
|
|
+ {
|
|
|
|
+ ass_stCadAssCoef.swMSpdpuLimit =ass_stCadAssCoef.swThrottleMaxspd;
|
|
|
|
+ }
|
|
|
|
+ else //助力或Walk
|
|
|
|
+ {
|
|
|
|
+ ass_stCadAssCoef.swMSpdpuLimit =ass_stCadAssCoef.swAssistMaxSpd;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/** Flux current limit input */
|
|
/** Flux current limit input */
|
|
ass_stCadAssParaIn.swFlxIqLimitPu = abs(flx_stCtrlOut.swIqLimPu);
|
|
ass_stCadAssParaIn.swFlxIqLimitPu = abs(flx_stCtrlOut.swIqLimPu);
|
|
|
|
|
|
@@ -678,7 +686,7 @@ void ass_voAssistCmdDeal(void)
|
|
tmp_slAssistSpdCmd = (SLONG)ass_stCadAssCoef.swKmhToMSpdPu*((SLONG)CadAssistSped.uwGearTwo ) >> 4;
|
|
tmp_slAssistSpdCmd = (SLONG)ass_stCadAssCoef.swKmhToMSpdPu*((SLONG)CadAssistSped.uwGearTwo ) >> 4;
|
|
#else
|
|
#else
|
|
tmp_slAssistSpdCmd = (SLONG)ass_stCadAssCoef.swKmhToMSpdPu*((((SLONG)ass_stCadAssCoef.uwAssistMaxBikeSpeed - ASS_GEAR1_SPEED)>>2) + ASS_GEAR1_SPEED) >> 4;
|
|
tmp_slAssistSpdCmd = (SLONG)ass_stCadAssCoef.swKmhToMSpdPu*((((SLONG)ass_stCadAssCoef.uwAssistMaxBikeSpeed - ASS_GEAR1_SPEED)>>2) + ASS_GEAR1_SPEED) >> 4;
|
|
- #endif
|
|
|
|
|
|
+ #endif
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
else if(ass_stCadAssParaIn.uwGearSt == 3)
|
|
else if(ass_stCadAssParaIn.uwGearSt == 3)
|
|
@@ -881,7 +889,7 @@ void ass_voAssistCmdDeal(void)
|
|
/** Q15 * Q4 / Q4 = Q15 */
|
|
/** Q15 * Q4 / Q4 = Q15 */
|
|
if(MC_WorkMode == 1)
|
|
if(MC_WorkMode == 1)
|
|
{
|
|
{
|
|
- tmp_slAssistSpdCmd = ((SLONG)ass_stCadAssCoef.swKmhToMSpdPu * (SLONG)ass_stCadAssCoef.uwThrottleMaxBikeSpeed) >> 4;
|
|
|
|
|
|
+ tmp_slAssistSpdCmd = (SLONG)(cp_stMotorPara.swRSpeedRpm << 15) / cof_uwVbRpm;
|
|
tmp_slAssistSpdCmd= ((SLONG)MC_MotorSPD_rpm_Percent * tmp_slAssistSpdCmd) / 100;
|
|
tmp_slAssistSpdCmd= ((SLONG)MC_MotorSPD_rpm_Percent * tmp_slAssistSpdCmd) / 100;
|
|
|
|
|
|
if(MC_MotorSPD_rpm_Percent<=2)
|
|
if(MC_MotorSPD_rpm_Percent<=2)
|
|
@@ -1261,6 +1269,7 @@ void ass_voAssInitVoltageCal(void)
|
|
void ass_voAssCurCalFunc(void)
|
|
void ass_voAssCurCalFunc(void)
|
|
{
|
|
{
|
|
SWORD tmp_swAssMeshCur = 0;
|
|
SWORD tmp_swAssMeshCur = 0;
|
|
|
|
+ static UWORD Cnt = 0;
|
|
|
|
|
|
/**< Assist current calculate state machine */
|
|
/**< Assist current calculate state machine */
|
|
switch (ass_enCadAssStatus)
|
|
switch (ass_enCadAssStatus)
|
|
@@ -1469,9 +1478,11 @@ void ass_voAssCurCalFunc(void)
|
|
{
|
|
{
|
|
ass_stCadAssSpdCtl.uwACTPidKp= ass_stCadAssSpdCtl.uwPidKp;
|
|
ass_stCadAssSpdCtl.uwACTPidKp= ass_stCadAssSpdCtl.uwPidKp;
|
|
}
|
|
}
|
|
|
|
+
|
|
ass_voSpdPidCtrl(&ass_stCadAssSpdCtl);
|
|
ass_voSpdPidCtrl(&ass_stCadAssSpdCtl);
|
|
ass_stCadAssParaPro.swVoltageStep = ass_stCadAssSpdCtl.swPidOut;
|
|
ass_stCadAssParaPro.swVoltageStep = ass_stCadAssSpdCtl.swPidOut;
|
|
ass_stCadAssParaPro.slVoltageSum += ass_stCadAssParaPro.swVoltageStep;
|
|
ass_stCadAssParaPro.slVoltageSum += ass_stCadAssParaPro.swVoltageStep;
|
|
|
|
+
|
|
/** voltage limit */
|
|
/** voltage limit */
|
|
if(ass_stCadAssParaPro.slVoltageSum >= ((SLONG)ass_stCadAssParaIn.swAssMaxVolLimpu<<8))
|
|
if(ass_stCadAssParaPro.slVoltageSum >= ((SLONG)ass_stCadAssParaIn.swAssMaxVolLimpu<<8))
|
|
{
|
|
{
|