|
@@ -38,7 +38,7 @@ Revising History (ECL of this file):
|
|
|
#include "emcdeal.h"
|
|
|
#include "LoadObsTheta.h"
|
|
|
#include "obs.h"
|
|
|
-
|
|
|
+#include "FSM_1st.h"
|
|
|
#include "cmdgennew.h"
|
|
|
/************************************************************************
|
|
|
Constant Table (N/A)
|
|
@@ -736,6 +736,9 @@ UWORD testtheta = 0;
|
|
|
SWORD IQqqqqq = 0, SwitchFlggg = 1;
|
|
|
SLONG IQCNT = 0;
|
|
|
UWORD uwIqStopCnt;
|
|
|
+SLONG swUqmax,swUqmin;
|
|
|
+SLONG swUdmax,swUdmin;
|
|
|
+UWORD UqDecCount = 0, UdDecCount = 0;
|
|
|
void scm_voSpdCtrMdDownTbc(void)
|
|
|
{
|
|
|
/*=======================================================================
|
|
@@ -807,11 +810,35 @@ void scm_voSpdCtrMdDownTbc(void)
|
|
|
}
|
|
|
else if (DCPswitch == 0)
|
|
|
{
|
|
|
- acr_stCurIdPIIn.swUmaxPu = scm_swVsDcpLimPu - acr_stUdqDcpOut.swUdPu; // Q14
|
|
|
- acr_stCurIdPIIn.swUminPu = -scm_swVsDcpLimPu - acr_stUdqDcpOut.swUdPu; // Q14
|
|
|
+ if(switch_flg.SysRun_Flag == FALSE)
|
|
|
+ {
|
|
|
+ if(UdDecCount>=100) // each 100/8000s decrease to 1000/1024*U
|
|
|
+ {
|
|
|
+ UdDecCount = 0;
|
|
|
+ acr_stCurIdPIIn.swUmaxPu = (SWORD)(((SLONG)swUdmax*1020)>>10);
|
|
|
+ acr_stCurIdPIIn.swUminPu = (SWORD)(((SLONG)swUdmin*1020)>>10);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ UdDecCount++;
|
|
|
+ acr_stCurIdPIIn.swUmaxPu = swUdmax; // Q14
|
|
|
+ acr_stCurIdPIIn.swUminPu = swUdmin; // Q14
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ acr_stCurIdPIIn.swUmaxPu = scm_swVsDcpLimPu - acr_stUdqDcpOut.swUdPu; // Q14
|
|
|
+ acr_stCurIdPIIn.swUminPu = -scm_swVsDcpLimPu - acr_stUdqDcpOut.swUdPu; // Q14
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{}
|
|
|
+ // if(switch_flg.SysRun_Flag == TRUE)
|
|
|
+ {
|
|
|
+ swUdmin = acr_stCurIqPIIn.swUminPu;
|
|
|
+ swUdmax = acr_stCurIqPIIn.swUmaxPu;
|
|
|
+ }
|
|
|
+
|
|
|
acr_voCurPI(&acr_stCurIdPIIn, &acr_stCurIdPICoef, &acr_stCurIdPIOut);
|
|
|
|
|
|
/*=======================================================================
|
|
@@ -889,54 +916,73 @@ void scm_voSpdCtrMdDownTbc(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- acr_stCurIqPIIn.swUmaxPu = scm_swVsDcpLimPu - acr_stUdqDcpOut.swUqPu; // Q14
|
|
|
- acr_stCurIqPIIn.swUminPu = -scm_swVsDcpLimPu - acr_stUdqDcpOut.swUqPu; // Q14
|
|
|
+ if(switch_flg.SysRun_Flag == FALSE)
|
|
|
+ {
|
|
|
+ if(UqDecCount>=100) // each 100/8000s decrease to 1000/1024*U
|
|
|
+ {
|
|
|
+ UqDecCount = 0;
|
|
|
+ acr_stCurIqPIIn.swUmaxPu = (SWORD)(((SLONG)swUqmax*1010)>>10);
|
|
|
+ acr_stCurIqPIIn.swUminPu = (SWORD)(((SLONG)swUqmin*1010)>>10);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ UqDecCount++;
|
|
|
+ acr_stCurIqPIIn.swUmaxPu = swUqmax; // Q14
|
|
|
+ acr_stCurIqPIIn.swUminPu = swUqmin; // Q14
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ acr_stCurIqPIIn.swUmaxPu = scm_swVsDcpLimPu - acr_stUdqDcpOut.swUqPu; // Q14
|
|
|
+ acr_stCurIqPIIn.swUminPu = -scm_swVsDcpLimPu - acr_stUdqDcpOut.swUqPu; // Q14
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{}
|
|
|
|
|
|
-
|
|
|
+ swUqmin = acr_stCurIqPIIn.swUminPu;
|
|
|
+ swUqmax = acr_stCurIqPIIn.swUmaxPu;
|
|
|
//-------------------------------------------------
|
|
|
-// if(0 == scm_swIqRefPu)
|
|
|
-// {
|
|
|
-// uwIqStopCnt++;
|
|
|
-// if(uwIqStopCnt >= 500)
|
|
|
-// {
|
|
|
-// uwIqStopCnt = 500;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// uwIqStopCnt = 0;
|
|
|
-// }
|
|
|
-// if((500 == uwIqStopCnt) && (scm_uwSpdFbkLpfAbsPu < 1500))
|
|
|
-// {
|
|
|
-// if((cp_stFlg.RotateDirectionSelect == BackwardRotate)
|
|
|
-// && (scm_swIqFdbLpfPu > 0))
|
|
|
-// {
|
|
|
-// acr_stCurIqPIIn.swCurRefPu = 0; // Q14
|
|
|
-// acr_stCurIqPIIn.swCurFdbPu = 0;
|
|
|
-// acr_stCurIqPIOut.swURefPu=0;
|
|
|
-// acr_stCurIqPIOut.slURefPu=0;
|
|
|
-// scm_swUqRefPu=0;
|
|
|
-// }
|
|
|
-// else if((cp_stFlg.RotateDirectionSelect == ForwardRotate)
|
|
|
-// && (scm_swIqFdbLpfPu < 0))
|
|
|
-// {
|
|
|
-// acr_stCurIqPIIn.swCurRefPu = 0; // Q14
|
|
|
-// acr_stCurIqPIIn.swCurFdbPu = 0;
|
|
|
-// acr_stCurIqPIOut.swURefPu=0;
|
|
|
-// acr_stCurIqPIOut.slURefPu=0;
|
|
|
-// scm_swUqRefPu=0;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// acr_stCurIqPIIn.swCurRefPu = scm_swIqRefPu; // Q14
|
|
|
-// acr_stCurIqPIIn.swCurFdbPu = scm_swIqFdbLpfPu;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
+ if(0 == scm_swIqRefPu)
|
|
|
+ {
|
|
|
+ uwIqStopCnt++;
|
|
|
+ if(uwIqStopCnt >= 500)
|
|
|
+ {
|
|
|
+ uwIqStopCnt = 500;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ uwIqStopCnt = 0;
|
|
|
+ }
|
|
|
+ if((500 == uwIqStopCnt) && (scm_uwSpdFbkLpfAbsPu < 1500))
|
|
|
+ {
|
|
|
+ if((cp_stFlg.RotateDirectionSelect == BackwardRotate)
|
|
|
+ && (scm_swIqFdbLpfPu > 0))
|
|
|
+ {
|
|
|
+ acr_stCurIqPIIn.swCurRefPu = 0; // Q14
|
|
|
+ acr_stCurIqPIIn.swCurFdbPu = 0;
|
|
|
+ acr_stCurIqPIOut.swURefPu=0;
|
|
|
+ acr_stCurIqPIOut.slURefPu=0;
|
|
|
+ scm_swUqRefPu=0;
|
|
|
+ }
|
|
|
+ else if((cp_stFlg.RotateDirectionSelect == ForwardRotate)
|
|
|
+ && (scm_swIqFdbLpfPu < 0))
|
|
|
+ {
|
|
|
+ acr_stCurIqPIIn.swCurRefPu = 0; // Q14
|
|
|
+ acr_stCurIqPIIn.swCurFdbPu = 0;
|
|
|
+ acr_stCurIqPIOut.swURefPu=0;
|
|
|
+ acr_stCurIqPIOut.slURefPu=0;
|
|
|
+ scm_swUqRefPu=0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ acr_stCurIqPIIn.swCurRefPu = scm_swIqRefPu; // Q14
|
|
|
+ acr_stCurIqPIIn.swCurFdbPu = scm_swIqFdbLpfPu;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
acr_stCurIqPIIn.swCurRefPu = scm_swIqRefPu; // Q14
|
|
|
acr_stCurIqPIIn.swCurFdbPu = scm_swIqFdbLpfPu;
|