|
@@ -435,12 +435,13 @@ void ass_voAssitCoef(void)
|
|
|
|
|
|
static SWORD ass_pvt_swVoltCnt=0;
|
|
|
static UWORD ass_pvt_uwTorqAccCnt=0,ass_pvt_uwTorqDecCnt=0,ass_pvt_uwSpd2TorqCnt=0;
|
|
|
+UWORD AssCnt1ms;
|
|
|
static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目圈复杂度无法更改,后续避免" */
|
|
|
{
|
|
|
SLONG slTeTorAssitTmpPu,slTeTorAssitLinerPu,slTeCadAssitTmpPu;
|
|
|
SWORD swTeTorAssitPu1, swTeTorAssitPu2;
|
|
|
SWORD swTeCadAssitPu1, swTeCadAssitPu2;
|
|
|
- SWORD swTmpSpdtoTorqCur;
|
|
|
+ SWORD swTmpSpdtoTorqCur;
|
|
|
SLONG slTmpSmoothCur;
|
|
|
SWORD swTorqCmd1, swTorqCmd, swCadCmd;
|
|
|
UWORD uwTorqAccStep = 50,uwTorqDecStep = 80;
|
|
@@ -481,6 +482,13 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
|
|
|
}
|
|
|
uwTorqDecStep = 80;
|
|
|
|
|
|
+ AssCnt1ms ++;
|
|
|
+ if(AssCnt1ms >= 10000)
|
|
|
+ {
|
|
|
+ AssCnt1ms = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/* Select TorqRef: LPFTorq or MAFTorq */
|
|
|
swTorqCmd1 = (SWORD)(((SLONG)ass_stCalIn.uwtorque * ass_stCalCoef.swTorqFilterGain >> 14) +
|
|
|
((SLONG)ass_stCalIn.uwtorquelpf * (Q14_1 - ass_stCalCoef.swTorqFilterGain) >> 14)); //转矩指令滤波切换,由低通滤波到踏频相关的滑动平均滤波
|
|
@@ -494,7 +502,7 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
|
|
|
slTeTorAssitTmpPu = (SLONG)(ass_slPolynomial(&ass_stCalCoef.uwTorqueAssGain[ass_stCalIn.uwGearSt], &swTorqCmd, 14)); // Q14 转矩助力曲线
|
|
|
if(ass_stCalIn.uwGearSt == 5)
|
|
|
{
|
|
|
- slTeTorAssitLinerPu = (((SLONG)swTorqCmd * LinerAssist[ass_stCalIn.uwGearSt-1] )>> 12) + 273;
|
|
|
+ slTeTorAssitLinerPu = (((SLONG)swTorqCmd * LinerAssist[ass_stCalIn.uwGearSt-1] )>> 12) + 273; // Q14 转矩助力曲线线性段
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -577,24 +585,36 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
|
|
|
else
|
|
|
{
|
|
|
//do nothing
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
ass_stCalOut.swVoltLimitPu = (SWORD)slTmpVoltLim;
|
|
|
|
|
|
- if(slSpdErr <= 1000)
|
|
|
+// if(slSpdErr <= 1000)
|
|
|
+// {
|
|
|
+// ass_stCalCoef.StartFlag = 1;
|
|
|
+// }
|
|
|
+ if(abs(scm_swIqRefPu- scm_swIqFdbLpfPu) > 200)
|
|
|
+ {
|
|
|
+ ass_pvt_swVoltCnt++;
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
+ ass_pvt_swVoltCnt=0;
|
|
|
+ }
|
|
|
+ if(ass_pvt_swVoltCnt > 10)
|
|
|
+ {
|
|
|
+ ass_pvt_swVoltCnt=0;
|
|
|
ass_stCalCoef.StartFlag = 1;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else if(ass_stCalCoef.StartFlag ==1 )
|
|
|
{
|
|
|
- if(ass_stCalOut.swVoltLimitPu < (scm_swVsDcpLimPu - uwVoltAccStep))
|
|
|
+ if(0 == (AssCnt1ms%5))
|
|
|
{
|
|
|
- ass_stCalOut.swVoltLimitPu += (SWORD)uwVoltAccStep;//ass_stCalCoef.uwStartUpGainAddStep;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
|
|
|
+ ass_stCalOut.swVoltLimitPu += ass_stCalCoef.uwStartUpGainAddStep;
|
|
|
+ if (ass_stCalOut.swVoltLimitPu > scm_swVsDcpLimPu)
|
|
|
+ {
|
|
|
+ ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if(slSpdErr <= 100)
|
|
@@ -668,25 +688,28 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
|
|
|
}
|
|
|
|
|
|
/* Reduce Voltage Limit When LPFTorq < Switch1TorqThreshold */
|
|
|
-// if(ass_stCalIn.uwtorquelpf >= ass_stCalCoef.uwSwitch1TorqThreshold)
|
|
|
-// {
|
|
|
- ass_stCalOut.swVoltLimitPu += (SWORD)uwVoltAccStep; //ass_stCalCoef.uwStartUpGainAddStep;
|
|
|
-// }
|
|
|
-// else if (ass_stCalIn.uwtorquelpf <= ass_stCalCoef.uwSwitch1TorqThreshold)
|
|
|
-// {
|
|
|
-// ass_stCalOut.swVoltLimitPu -= uwVoltDecStep; //ass_stCalCoef.uwSpeedConstantCommand;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// }
|
|
|
- if (ass_stCalOut.swVoltLimitPu > scm_swVsDcpLimPu)
|
|
|
- {
|
|
|
- ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
|
|
|
- }
|
|
|
-// else if (ass_stCalOut.swVoltLimitPu <= (swTmpVoltPu + ass_stParaSet.uwStartUpCadNm))
|
|
|
-// {
|
|
|
-// ass_stCalOut.swVoltLimitPu = swTmpVoltPu + ass_stParaSet.uwStartUpCadNm;
|
|
|
-// }
|
|
|
+ if(0 == (AssCnt1ms%5))
|
|
|
+ {
|
|
|
+// if(ass_stCalIn.uwtorque >= ass_stCalCoef.uwSwitch1TorqThreshold)
|
|
|
+// {
|
|
|
+ ass_stCalOut.swVoltLimitPu += ass_stCalCoef.uwStartUpGainAddStep;
|
|
|
+ if (ass_stCalOut.swVoltLimitPu > scm_swVsDcpLimPu)
|
|
|
+ {
|
|
|
+ ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
|
|
|
+ }
|
|
|
+// }
|
|
|
+// else if (ass_stCalIn.uwtorque <= ass_stCalCoef.uwSwitch1TorqThreshold)
|
|
|
+// {
|
|
|
+//// ass_stCalOut.swVoltLimitPu -= ass_stCalCoef.uwSpeedConstantCommand;
|
|
|
+//// if (ass_stCalOut.swVoltLimitPu <= (tmpVoltargetPu + ass_ParaSet.uwStartUpCadNm))
|
|
|
+//// {
|
|
|
+//// ass_stCalOut.swVoltLimitPu = tmpVoltargetPu + ass_ParaSet.uwStartUpCadNm;
|
|
|
+//// }
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// }
|
|
|
+ }
|
|
|
|
|
|
/* TorqueRef Select Coef */
|
|
|
ass_stCalCoef.swTorqFilterGain += 4; // Q14 转矩滤波方式切换系数
|