|
@@ -1182,7 +1182,7 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
}
|
|
|
|
|
|
Te_Tor_Assit_tempPu = (SLONG)(Polynomial(&ass_CalCoef.uwTorqueAssGain[ass_CalIn.uwGearSt], &TorqCmd, 14)); // Q14 转矩助力曲线
|
|
|
- Te_Tor_Assit_LinerPu = (SLONG)(((TorqCmd * LinerAssist[ass_CalIn.uwGearSt] )>> 12) + 136);
|
|
|
+ Te_Tor_Assit_LinerPu = (SLONG)(((TorqCmd * LinerAssist[ass_CalIn.uwGearSt -1] )>> 12) + 136);
|
|
|
if (Te_Tor_Assit_tempPu < Te_Tor_Assit_LinerPu)
|
|
|
{
|
|
|
Te_Tor_Assit_tempPu = Te_Tor_Assit_LinerPu;
|
|
@@ -1271,54 +1271,6 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
}
|
|
|
|
|
|
|
|
|
-// if(ass_CalCoef.StartFlag ==0 )
|
|
|
-// {
|
|
|
-//
|
|
|
-// VoltCnt++;
|
|
|
-// ass_CalOut.swVoltLimitPu = tmpVoltargetPu;
|
|
|
-// if(VoltCnt>=30)
|
|
|
-// {
|
|
|
-// ass_CalCoef.StartFlag=1;
|
|
|
-// VoltCnt=0;
|
|
|
-// }
|
|
|
-//// if (ass_CalOut.swVoltLimitPu < (tmpVoltargetPu-200))
|
|
|
-//// {
|
|
|
-//// ass_CalOut.swVoltLimitPu +=200;
|
|
|
-////
|
|
|
-//// }
|
|
|
-//// else
|
|
|
-//// {
|
|
|
-//// ass_CalOut.swVoltLimitPu = tmpVoltargetPu;
|
|
|
-//// ass_CalCoef.StartFlag=1;
|
|
|
-//// }
|
|
|
-// }
|
|
|
-// else if(ass_CalCoef.StartFlag ==1)
|
|
|
-// {
|
|
|
-// ass_CalOut.swVoltLimitPu += ass_CalCoef.uwStartUpGainAddStep;
|
|
|
-// if(abs(ass_CalIn.swCurRefPu - ass_CalIn.swCurFdbPu)<200)
|
|
|
-// {
|
|
|
-// VoltCnt++;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// VoltCnt--;
|
|
|
-// if (VoltCnt<0)
|
|
|
-// {
|
|
|
-// VoltCnt=0;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// if(VoltCnt > 30)
|
|
|
-// {
|
|
|
-// Ass_FSM = TorqueAssit;
|
|
|
-// ass_CalCoef.StartFlag=0;
|
|
|
-// VoltCnt = (((SLONG)abs(ass_CalOut.swVoltLimitPu - tmpVoltargetPu))<<12)/scm_swVsDcpLimPu;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-
|
|
|
/*启动停机判断,瞬时转矩小于停机值持续1/4圈*/
|
|
|
if(ass_CalIn.uwcadancePer == 0)
|
|
|
{
|
|
@@ -1384,11 +1336,11 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
|
|
|
///////////test/////////
|
|
|
|
|
|
- if(ass_CalIn.uwtorquePer >= ass_CalCoef.uwSwitch1TorqThreshold)
|
|
|
+ if(ass_CalIn.uwtorque >= ass_CalCoef.uwSwitch1TorqThreshold)
|
|
|
{
|
|
|
ass_CalOut.swVoltLimitPu += ass_CalCoef.uwStartUpGainAddStep;
|
|
|
}
|
|
|
- else if (ass_CalIn.uwtorquePer <= ass_CalCoef.uwSwitch1TorqThreshold)
|
|
|
+ else if (ass_CalIn.uwtorque <= ass_CalCoef.uwSwitch1TorqThreshold)
|
|
|
{
|
|
|
ass_CalOut.swVoltLimitPu -= ass_CalCoef.uwSpeedConstantCommand;
|
|
|
}
|
|
@@ -1638,7 +1590,7 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
break;
|
|
|
|
|
|
case ReduceCurrent:
|
|
|
- if ((ass_CalCoef.swSmoothGain <= 0) && (abs(ass_CalIn.swSpdFbkPu)< 400))
|
|
|
+ if (abs(ass_CalIn.swSpdFbkPu)< 500)
|
|
|
{
|
|
|
ass_CalCoef.swSmoothGain = 0;
|
|
|
ass_CalCoef.swTorqFilterGain = 0;
|
|
@@ -1647,22 +1599,31 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
ass_CalOut.swSpeedRef = ass_CalIn.uwSpdFbkAbsPu; // Q15 Q10 (9.625)
|
|
|
asr_stTorqSpdPIOut.slIqRefPu = ((SLONG)ass_CalOut.swTorAssistCurrent) << 16;
|
|
|
asr_stTorqSpdPIOut.swIqRefPu = ass_CalOut.swTorAssistCurrent;
|
|
|
- Ass_FSM = StopAssit;
|
|
|
-
|
|
|
+ Ass_FSM = StopAssit;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ass_CalCoef.swSmoothGain -= 40;
|
|
|
- ass_CalOut.swVoltLimitPu -= 20;
|
|
|
- if(ass_CalOut.swVoltLimitPu <= 0)
|
|
|
+ if(ass_CalCoef.swSmoothGain >=40)
|
|
|
+ {
|
|
|
+ ass_CalCoef.swSmoothGain -=40;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ass_CalCoef.swSmoothGain=0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ass_CalOut.swVoltLimitPu >=20)
|
|
|
+ {
|
|
|
+ ass_CalOut.swVoltLimitPu -= 20;
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
ass_CalOut.swVoltLimitPu = 0;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
break;
|
|
|
+
|
|
|
case StopAssit:
|
|
|
-
|
|
|
ass_CalOut.swTorSpdLoopCurrentTemp = 0;
|
|
|
/* 启动判断*/
|
|
|
if (ass_CalIn.uwbikespeed < 449) // 0.3Hz, (2.19m轮径下 2.36km/h )
|
|
@@ -1692,22 +1653,6 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// if (ass_CalIn.uwtorquelpf > ass_CalCoef.uwAssThreshold && ass_CalIn.uwcadance > 0)
|
|
|
-// {
|
|
|
-//// hw_voPWMOn();
|
|
|
-// if (ass_CalIn.uwbikespeed == 0)
|
|
|
-// {
|
|
|
-// Ass_FSM = Startup;
|
|
|
-// ass_CalCoef.swTorqFilterGain = 0;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// ass_CalCoef.swTorqFilterGain = 0;
|
|
|
-// Ass_FSM = Spd2Torq;
|
|
|
-// ass_CalOut.swSpeedRef = ass_CalIn.uwSpdFbkAbsPu;
|
|
|
-// }
|
|
|
-// ass_CalCoef.sw2StopCNT = 0;
|
|
|
-// }
|
|
|
/* 退出助力判断*/
|
|
|
if (ass_CalIn.uwcadance == 0 || ass_CalIn.uwtorquelpf < ass_CalCoef.uwAssStopThreshold)
|
|
|
{
|
|
@@ -1766,16 +1711,42 @@ SWORD AssitCuvApplPerVolt(void)
|
|
|
{
|
|
|
ass_CalOut.swCadAss2CurrentTemp = ass_CalCoef.swCurrentmax_cadAssPu;
|
|
|
}
|
|
|
- ass_CalOut.swTorRefTarget = ass_CalOut.swTorAss2CurrentTemp + ass_CalOut.swCadAss2CurrentTemp;
|
|
|
- ass_CalOut.swTorRefEnd = ass_CalOut.swTorRefTarget;
|
|
|
- if (ass_CalCoef.StartFlag==0)
|
|
|
- {
|
|
|
- ass_CalOut.swTorAssistCurrentTemp = ass_CalIn.swDirection * 13000;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ ass_CalOut.swTorRefTarget = ass_CalOut.swTorAss2CurrentTemp + ass_CalOut.swCadAss2CurrentTemp;
|
|
|
+ if((ass_CalOut.swTorRefTarget - ass_CalOut.swTorRefEnd) > 2)
|
|
|
+ {
|
|
|
+ TorquAccCnt++;
|
|
|
+ if(TorquAccCnt >= 2)
|
|
|
+ {
|
|
|
+ ass_CalOut.swTorRefEnd += TorqueAccStep;
|
|
|
+ TorquAccCnt = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(((ass_CalOut.swTorRefTarget - ass_CalOut.swTorRefEnd) < (-1)))
|
|
|
+ {
|
|
|
+ if (ass_CalIn.uwcadance != ass_CalIn.uwcadancelast)
|
|
|
+ {
|
|
|
+ ass_CalOut.swTorRefEnd -= TorqueDecStep;
|
|
|
+ }
|
|
|
+// TorquDecCnt++;
|
|
|
+// if(TorquDecCnt >= 10)
|
|
|
+// {
|
|
|
+// ass_CalOut.swTorRefEnd += TorqueAccStep;
|
|
|
+// TorquDecCnt = 0;
|
|
|
+// }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ass_CalOut.swTorRefEnd = ass_CalOut.swTorRefTarget;
|
|
|
+ }
|
|
|
+
|
|
|
+// if (ass_CalCoef.StartFlag==0)
|
|
|
+// {
|
|
|
+// ass_CalOut.swTorAssistCurrentTemp = ass_CalIn.swDirection * 13000;
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
ass_CalOut.swTorAssistCurrentTemp = ass_CalIn.swDirection *ass_CalOut.swTorRefEnd;
|
|
|
- }
|
|
|
+// }
|
|
|
|
|
|
|
|
|
break;
|