|
@@ -31,6 +31,8 @@ Revising History (ECL of this file):
|
|
|
#include "cmdgennew.h"
|
|
|
#include "CodePara.h"
|
|
|
#include "FSM_2nd.h"
|
|
|
+
|
|
|
+#include "notch.h"
|
|
|
/************************************************************************
|
|
|
Constant Table (N/A)
|
|
|
*************************************************************************/
|
|
@@ -214,7 +216,7 @@ void scm_voSpdCtrMdCoef(void)
|
|
|
torqobs_stCoefIn.uwWtcHz = 50; // cp_stControlPara.swAsrPIBandwidth;
|
|
|
torqobs_stCoefIn.uwRatioJm = cp_stControlPara.swAsrSpdInerRate;
|
|
|
torqobs_voCoef(&torqobs_stCoefIn, &torqobs_stCoef);
|
|
|
- mth_voLPFilterCoef(1000000 / 100, FTBS_HZ, &scm_stIqLoadLpf.uwKx); //50Hz
|
|
|
+ mth_voLPFilterCoef(1000000 / 30, FTBS_HZ, &scm_stIqLoadLpf.uwKx); //50Hz
|
|
|
/* Id PI coefficient calculate */
|
|
|
acr_stCurIdPICoefIn.uwFbHz = FBASE;
|
|
|
acr_stCurIdPICoefIn.uwUbVt = VBASE;
|
|
@@ -542,21 +544,29 @@ void scm_voTorqCtrMdTbs(void)
|
|
|
=======================================================================*/
|
|
|
swIqLowerPu = (SWORD)((flx_stCtrlOut.swIqLimPu < ABS(pwr_stPwrLimOut2.swIqLimPu)) ? flx_stCtrlOut.swIqLimPu : ABS(pwr_stPwrLimOut2.swIqLimPu));
|
|
|
/* Torque observe */
|
|
|
- if (scm_swRotateDir > 0)
|
|
|
- {
|
|
|
- torqobs_stCalIn.swIqMaxPu = swIqLowerPu;
|
|
|
- torqobs_stCalIn.swIqMinPu = -swIqLowerPu;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- torqobs_stCalIn.swIqMaxPu = swIqLowerPu;
|
|
|
- torqobs_stCalIn.swIqMinPu = -swIqLowerPu;
|
|
|
- }
|
|
|
- torqobs_stCalIn.swIqfbkPu = scm_swIqFdbLpfPu;
|
|
|
- torqobs_stCalIn.swSpdPu = spi_stResolverOut.swSpdFbkPu;
|
|
|
- torqobs_voCal(&torqobs_stCalIn, &torqobs_stCoef, &torqobs_stCalOut);
|
|
|
- mth_voLPFilter((torqobs_stCalOut.swIqLoadPu + scm_swIqFdbLpfPu), &scm_stIqLoadLpf);
|
|
|
+// if (scm_swRotateDir > 0)
|
|
|
+// {
|
|
|
+// torqobs_stCalIn.swIqMaxPu = swIqLowerPu;
|
|
|
+// torqobs_stCalIn.swIqMinPu = -swIqLowerPu;
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// torqobs_stCalIn.swIqMaxPu = swIqLowerPu;
|
|
|
+// torqobs_stCalIn.swIqMinPu = -swIqLowerPu;
|
|
|
+// }
|
|
|
+// torqobs_stCalIn.swIqfbkPu = scm_swIqFdbLpfPu;
|
|
|
+// torqobs_stCalIn.swSpdPu = spi_stResolverOut.swSpdFbkPu;
|
|
|
+// torqobs_voCal(&torqobs_stCalIn, &torqobs_stCoef, &torqobs_stCalOut);
|
|
|
+// mth_voLPFilter((torqobs_stCalOut.swIqLoadPu + scm_swIqFdbLpfPu), &scm_stIqLoadLpf);
|
|
|
|
|
|
+ /* SpdFbk Compensation */
|
|
|
+// resctrl_stCalIn.swSpdFbkPu = spi_stResolverOut.swSpdFbkPu;
|
|
|
+// resctrl_voCal();
|
|
|
+ mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stIqLoadLpf);
|
|
|
+ scm_swSpdFbkCompPu = spi_stResolverOut.swSpdFbkPu - scm_stIqLoadLpf.slY.sw.hi;
|
|
|
+ swTmpSpdRate = (SLONG)scm_swSpdFbkCompPu * ass_stParaSet.uwSpeedAssistSpdRpm >> 11;
|
|
|
+ mth_voLPFilterCoef(1000000 / 200, FTBS_HZ, &swTmpSpdRateLpf.uwKx);
|
|
|
+ mth_voLPFilter(swTmpSpdRate, &swTmpSpdRateLpf);
|
|
|
|
|
|
// /* Spd Fbk Compensation Calculate */
|
|
|
// swTmpSpdRate = spi_stResolverOut.swSpdFbkPu - swTmpSpdFbkPuZ1; //Q15
|
|
@@ -570,16 +580,17 @@ void scm_voTorqCtrMdTbs(void)
|
|
|
{
|
|
|
/* Open Loop */
|
|
|
//swTestIqref = uart_swTorqRefNm - (((SLONG)swTmpSpdRateLpf.slY.sw.hi * cof_uwJmPu * 2 << 11) / cof_uwFluxPu); //Q15+Q0+Q11-Q12=Q14
|
|
|
-
|
|
|
+ swTestIqref = uart_swTorqRefNm - swTmpSpdRateLpf.slY.sw.hi;
|
|
|
+
|
|
|
/* Observer */
|
|
|
- swTestIqref = uart_swTorqRefNm - scm_stIqLoadLpf.slY.sw.hi;
|
|
|
+ //swTestIqref = uart_swTorqRefNm - scm_stIqLoadLpf.slY.sw.hi;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
swTestIqref = uart_swTorqRefNm;
|
|
|
}
|
|
|
|
|
|
-// swTestIqref = uart_swTorqRefNm;
|
|
|
+ //swTestIqref = uart_swTorqRefNm;
|
|
|
|
|
|
if (swTestIqref > swIqLowerPu)
|
|
|
{
|