Selaa lähdekoodia

On XiaoYaPan_NoSysConfig: OBS_Debug

dd 2 kuukautta sitten
vanhempi
sitoutus
cdab77a8be

+ 129 - 202
2.MotorDrive/Source/spdctrFSM.c

@@ -107,16 +107,15 @@ void Open2Clz_TbcupHook(void)
 
     flx_stCtrlOut.swIqLimPu = (SWORD)cof_uwCurMaxPu;
     
-//    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//    {
-//        align_stIn.uwObsElecThetaPu = obs_stObsOutPu.uwElecThetaPu;
-//    }
-//    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
-//    {
-//        //align_stIn.uwObsElecThetaPu = spi_stResolverOut.uwSpiThetaPu;
-//    }
-//    else
-        if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
+    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+    {
+        align_stIn.uwObsElecThetaPu = obs_stObsOutPu.uwElecThetaPu;
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
+    {
+        //align_stIn.uwObsElecThetaPu = spi_stResolverOut.uwSpiThetaPu;
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
     {
         align_stIn.uwObsElecThetaPu = switchhall_stOut.uwLowThetaPu;
         //align_stIn.uwObsElecThetaPu = rtY.Angle_Filtered;
@@ -218,21 +217,21 @@ void StartUp_TbcdownHook(void)
 {
 
 /* Speed feedback LPF */
-//    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//    {
-//        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
-//        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-//    }
-//    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
-//    {
-//      //  mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stSpdFbkLpf);
-//    }
-//    else
+    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+    {
+        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
+        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
+        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
+        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
+        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
+        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
+        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
+    {
+      //  mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stSpdFbkLpf);
+    }
+    else
         if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
     {
         scm_stSpdFbkLpf.slY.sw.hi = switchhall_stOut.swLowSpdLpfPu;
@@ -258,13 +257,13 @@ void Open2Clz_TbcdownHook(void)
     /* Speed feedback LPF */
     if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
     {
-//        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-////        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-////        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
+        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
+        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
+        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
+        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
+        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
+        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
+        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
     }
     else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
     {
@@ -307,46 +306,16 @@ void ClzLoop_TbcdownHook(void)
     ULONG ulTmp1;
     SWORD swAngCompPu; // Q15
     
-/* Speed feedback LPF */
-//    obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//    obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//    obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//    obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//    obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//    obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-    
-    /* Angle Switch */
-//    if(scm_stSpdFbkLpf.slY.sw.hi > 7801)  // 2000rpm
-//    {
-//        cp_stFlg.ThetaGetModelSelect = ANG_OBSERVER;
-//    }
-//    else
-//    {
-//        if(scm_stSpdFbkLpf.slY.sw.hi < 5851)  // 1500rpm
-//        {
-//            cp_stFlg.ThetaGetModelSelect = ANG_SWITCHHALL;
-//        }
-//    }
-        
-    
-//    obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//    obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//    obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//    obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//    obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//    obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-//    mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
-    
-//    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//    {
-//        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-//        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
-////        scm_uwAngRefPu = obs_stObsOutPu.uwElecThetaPu;
+    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+    {
+        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
+        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
+        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
+        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
+        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
+        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
+        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
+        scm_uwAngRefPu = obs_stObsOutPu.uwElecThetaPu;
 //        temptheta = (SWORD)obs_stObsOutPu.uwElecThetaPu + thetaoffset;
 //
 //        if (temptheta >= cof_sl360DegreePu)
@@ -358,17 +327,14 @@ void ClzLoop_TbcdownHook(void)
 //            temptheta += cof_sl360DegreePu;
 //        }
 //        scm_uwAngRefPu=temptheta;
-//        tstThetaCorrect=scm_uwAngRefPu-rtY.Angle_Filtered;
-//
-//
-//    }
-//    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
-//    {
-//      //  mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stSpdFbkLpf);
-//      //  scm_uwAngRefPu = spi_stResolverOut.uwSpiThetaPu;
-//    }
-//    else
-        if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
+//        tstThetaCorrect=scm_uwAngRefPu - rtY.Angle_Filtered;
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
+    {
+      //  mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stSpdFbkLpf);
+      //  scm_uwAngRefPu = spi_stResolverOut.uwSpiThetaPu;
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
     {
 //        mth_voLPFilter(switchhall_stOut.swLowSpdPu, &scm_stSpdFbkLpf);
         //mth_voLPFilter(switchhall_stOut.swLowSpdLpfPu, &scm_stSpdFbkLpf);
@@ -409,16 +375,15 @@ void ClzLoop_TbcdownHook(void)
     /* Get angle for park transformation */
     scm_uwAngParkPu = scm_uwAngRefPu; // Q15
 
-//    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//    {
-//        swAngCompPu = ((SLONG)obs_stObsOutPu.swElecFreqPu * TBC_TM) >> 10; // Q15
-//    }
-//    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
-//    {
-//       // swAngCompPu = ((SLONG)spi_stResolverOut.swSpdFbkPu * TBC_TM) >> 10; // Q15
-//    }
-//    else
-        if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
+    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+    {
+        swAngCompPu = ((SLONG)obs_stObsOutPu.swElecFreqPu * TBC_TM) >> 10; // Q15
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
+    {
+       // swAngCompPu = ((SLONG)spi_stResolverOut.swSpdFbkPu * TBC_TM) >> 10; // Q15
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
     {
         swAngCompPu = ((SLONG)switchhall_stOut.swLowSpdLpfPu * TBC_TM) >> 10; // Q15
     }
@@ -456,68 +421,35 @@ void Clz2Stop_TbcdownHook(void)
     ULONG ulTmp1;
     SWORD swAngCompPu; // Q15
 
-/* Speed feedback LPF */
-//    obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//    obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//    obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//    obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//    obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//    obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-
-    /* Angle Switch */
-//    if(scm_stSpdFbkLpf.slY.sw.hi > 7801)  // 2000rpm
-//    {
-//        cp_stFlg.ThetaGetModelSelect = ANG_OBSERVER;
-//    }
-//    else
-//    {
-//        if(scm_stSpdFbkLpf.slY.sw.hi < 5851)  // 1500rpm
-//        {
-//            cp_stFlg.ThetaGetModelSelect = ANG_SWITCHHALL;
-//        }
-//    }
-
-
-//    obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//    obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//    obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//    obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//    obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//    obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-//    mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
-
-//    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//    {
-//        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
-//        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
-//        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
-//        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
-//        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
-//        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
-//        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
-////        scm_uwAngRefPu = obs_stObsOutPu.uwElecThetaPu;
-//        temptheta = (SWORD)obs_stObsOutPu.uwElecThetaPu + thetaoffset;
-//
-//        if (temptheta >= cof_sl360DegreePu)
-//        {
-//            temptheta -= cof_sl360DegreePu;
-//        }
-//        else if (temptheta < (-(cof_sl360DegreePu)))
-//        {
-//            temptheta += cof_sl360DegreePu;
-//        }
-//        scm_uwAngRefPu=temptheta;
-//        tstThetaCorrect=scm_uwAngRefPu-rtY.Angle_Filtered;
-//
-//
-//    }
-//    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
-//    {
-//      //  mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stSpdFbkLpf);
-//      //  scm_uwAngRefPu = spi_stResolverOut.uwSpiThetaPu;
-//    }
-//    else
-        if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
+    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+    {
+        obs_stObsCalcIn.swUalphaPu = scm_swUalphaPu;              // Q14
+        obs_stObsCalcIn.swUbetaPu = scm_swUbetaPu;                // Q14
+        obs_stObsCalcIn.swIalphaPu = crd_stCurClarkOut.swAlphaPu; // Q14
+        obs_stObsCalcIn.swIbetaPu = crd_stCurClarkOut.swBetaPu;   // Q14
+        obs_stObsCalcIn.uwVdcPu = adc_stUpOut.uwVdcLpfPu;
+        obs_voObsCalc(&obs_stObsCalcIn, &obs_stObsCoefPu, &obs_stObsOutPu);
+        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
+        scm_uwAngRefPu = obs_stObsOutPu.uwElecThetaPu;
+        temptheta = (SWORD)obs_stObsOutPu.uwElecThetaPu + thetaoffset;
+
+        if (temptheta >= cof_sl360DegreePu)
+        {
+            temptheta -= cof_sl360DegreePu;
+        }
+        else if (temptheta < (-(cof_sl360DegreePu)))
+        {
+            temptheta += cof_sl360DegreePu;
+        }
+        scm_uwAngRefPu=temptheta;
+        tstThetaCorrect=scm_uwAngRefPu - rtY.Angle_Filtered;
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
+    {
+      //  mth_voLPFilter(spi_stResolverOut.swSpdFbkPu, &scm_stSpdFbkLpf);
+      //  scm_uwAngRefPu = spi_stResolverOut.uwSpiThetaPu;
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
     {
 //        mth_voLPFilter(switchhall_stOut.swLowSpdPu, &scm_stSpdFbkLpf);
         //mth_voLPFilter(switchhall_stOut.swLowSpdLpfPu, &scm_stSpdFbkLpf);
@@ -558,16 +490,15 @@ void Clz2Stop_TbcdownHook(void)
     /* Get angle for park transformation */
     scm_uwAngParkPu = scm_uwAngRefPu; // Q15
 
-//    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//    {
-//        swAngCompPu = ((SLONG)obs_stObsOutPu.swElecFreqPu * TBC_TM) >> 10; // Q15
-//    }
-//    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
-//    {
-//       // swAngCompPu = ((SLONG)spi_stResolverOut.swSpdFbkPu * TBC_TM) >> 10; // Q15
-//    }
-//    else
-        if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
+    if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+    {
+        swAngCompPu = ((SLONG)obs_stObsOutPu.swElecFreqPu * TBC_TM) >> 10; // Q15
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
+    {
+       // swAngCompPu = ((SLONG)spi_stResolverOut.swSpdFbkPu * TBC_TM) >> 10; // Q15
+    }
+    else if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
     {
         swAngCompPu = ((SLONG)switchhall_stOut.swLowSpdLpfPu * TBC_TM) >> 10; // Q15
     }
@@ -686,17 +617,13 @@ void scm_voSpdCtrMdFSM(void)
             }
             else if(cp_stFlg.RunModelSelect == ClZLOOP)
             {
-//                if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//                  {
-//                    Switch_speed_FSM(&StartUp_state);
-//                  }
-////                  else if(cp_stFlg.ThetaGetModelSelect == ANG_SWITCHHALL)
-////                  {
-////                    Switch_speed_FSM(&StartUp_state);
-////                  }
-//                else
+                if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
                 {
-                Switch_speed_FSM(&ClzLoop_state);
+                    Switch_speed_FSM(&StartUp_state);
+                }
+                else
+                {
+                    Switch_speed_FSM(&ClzLoop_state);
                 }
             }
             else
@@ -717,28 +644,28 @@ void scm_voSpdCtrMdFSM(void)
         {
             Switch_speed_FSM(&Clz2Stop_state);
         }
-//        if (scm_StartUpOvrFlg == TRUE)
-//        {
-//            if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)  //|| cp_stFlg.ThetaGetModelSelect ==ANG_SWITCHHALL
-//            {
-//                if(cp_stFlg.RunModelSelect == ClZLOOP || cp_stFlg.RunModelSelect == CadAssist || cp_stFlg.RunModelSelect == TorqAssist)
-//                {
-//                    if (FSM2nd_Run_state.state == Boost)
-//                    {
-//                        cmd_stCmdOut.slIntRefPu = (((SLONG)scm_stSpdFbkLpf.slY.sw.hi * 5) << 12); // Q29  5/4
-//                    }
-//                    else if (FSM2nd_Run_state.state == Assistance)
-//                    {}
-//                    else
-//                    {}
-//                    Switch_speed_FSM(&Open2Clz_state);
-//                }
-//            }
-//            else
-//            {
-//
-//            }
-//        }
+        if (scm_StartUpOvrFlg == TRUE)
+        {
+            if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)  //|| cp_stFlg.ThetaGetModelSelect ==ANG_SWITCHHALL
+            {
+                if(cp_stFlg.RunModelSelect == ClZLOOP || cp_stFlg.RunModelSelect == CadAssist || cp_stFlg.RunModelSelect == TorqAssist)
+                {
+                    if (FSM2nd_Run_state.state == Boost)
+                    {
+                        cmd_stCmdOut.slIntRefPu = (((SLONG)scm_stSpdFbkLpf.slY.sw.hi * 5) << 12); // Q29  5/4
+                    }
+                    else if (FSM2nd_Run_state.state == Assistance)
+                    {}
+                    else
+                    {}
+                    Switch_speed_FSM(&Open2Clz_state);
+                }
+            }
+            else
+            {
+
+            }
+        }
         /* Command run disable */
         break;
     case Open2Clz:
@@ -805,11 +732,11 @@ void scm_voSpdCtrMdFSM(void)
 
             if(cp_stFlg.RunModelSelect == ClZLOOP || cp_stFlg.RunModelSelect == CadAssist || cp_stFlg.RunModelSelect == TorqAssist)
             {
-//                if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
-//                {
-//                    Switch_speed_FSM(&InitPosDet_state);
-//                }
-//                else
+                if(cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
+                {
+                    Switch_speed_FSM(&InitPosDet_state);
+                }
+                else
                 {   
                     Switch_speed_FSM(&ClzLoop_state);
                 }

+ 17 - 17
2.MotorDrive/Source/spdctrmode.c

@@ -67,7 +67,7 @@ void scm_voSpdCtrMdInit(void)
     /* Current decoupling init */
     acr_voUdqDcpInit();
     /* Sensorless observer init */
-//    obs_voObsInit();
+    obs_voObsInit();
     /* SPI position sensor init */
     //spi_voResolverInit();
     /* Speed PI init */
@@ -194,20 +194,20 @@ void scm_voSpdCtrMdCoef(void)
         }
     }
     /* Sensorless observer coefficient calculate */
-//    obs_stObsCoefIn.uwRbOm = cof_uwRbOm;                                        // Real Value, unit: 0.01Ohm, Resistance base
-//    obs_stObsCoefIn.uwLbHm = cof_uwLbHm;                                        // Real Value, unit: 0.01mH, Inductance base
-//    obs_stObsCoefIn.uwFluxbWb = cof_uwFluxbWb;                                  // Real Value, unit: 0.01mWb, Flux linkage base
-//    obs_stObsCoefIn.uwFbHz = cof_uwFbHz;                                        // Real Value, Unit:Hz  frequency base
-//    obs_stObsCoefIn.uwRsOm = cp_stMotorPara.swRsOhm;                            // Real Value, unit: 0.01Ohm, Resistance base
-//    obs_stObsCoefIn.uwLqHm = ((ULONG)scm_uwLqPu * cof_uwLbHm) >> 10;            // Real Value, unit: 0.01mH, q Inductance
-//    obs_stObsCoefIn.uwLdHm = cp_stMotorPara.uwLdmH;                             // Real Value, unit: 0.01mH, d Inductance
-//    obs_stObsCoefIn.uwFluxWb = cp_stMotorPara.swFluxWb;                         // Real Value, unit: 0.01mWb, Flux linkage
-//    obs_stObsCoefIn.uwFreqTbcHz = FTBC_HZ;                                      // Real Value, Unit:Hz  Tbc
-//    obs_stObsCoefIn.uwFluxDampingRatio = cp_stControlPara.swObsFluxPIDampratio; // Real Value, unit:0.1
-//    obs_stObsCoefIn.uwFluxCrossFreqHz = cp_stControlPara.swObsFluxPICrossfreHz; // Real Value, unit:Hz
-//    obs_stObsCoefIn.uwSpdPllWvcHz = cp_stControlPara.swObsSpdPLLBandWidthHz;    // Real Value, Unit:Hz
-//    obs_stObsCoefIn.uwSpdPllMcoef = cp_stControlPara.swObsSpdPLLM;
-//    obs_voObsCoef(&obs_stObsCoefIn, &obs_stObsCoefPu);
+    obs_stObsCoefIn.uwRbOm = cof_uwRbOm;                                        // Real Value, unit: 0.01Ohm, Resistance base
+    obs_stObsCoefIn.uwLbHm = cof_uwLbHm;                                        // Real Value, unit: 0.01mH, Inductance base
+    obs_stObsCoefIn.uwFluxbWb = cof_uwFluxbWb;                                  // Real Value, unit: 0.01mWb, Flux linkage base
+    obs_stObsCoefIn.uwFbHz = cof_uwFbHz;                                        // Real Value, Unit:Hz  frequency base
+    obs_stObsCoefIn.uwRsOm = cp_stMotorPara.swRsOhm;                            // Real Value, unit: 0.01Ohm, Resistance base
+    obs_stObsCoefIn.uwLqHm = ((ULONG)scm_uwLqPu * cof_uwLbHm) >> 10;            // Real Value, unit: 0.01mH, q Inductance
+    obs_stObsCoefIn.uwLdHm = cp_stMotorPara.uwLdmH;                             // Real Value, unit: 0.01mH, d Inductance
+    obs_stObsCoefIn.uwFluxWb = cp_stMotorPara.swFluxWb;                         // Real Value, unit: 0.01mWb, Flux linkage
+    obs_stObsCoefIn.uwFreqTbcHz = FTBC_HZ;                                      // Real Value, Unit:Hz  Tbc
+    obs_stObsCoefIn.uwFluxDampingRatio = cp_stControlPara.swObsFluxPIDampratio; // Real Value, unit:0.1
+    obs_stObsCoefIn.uwFluxCrossFreqHz = cp_stControlPara.swObsFluxPICrossfreHz; // Real Value, unit:Hz
+    obs_stObsCoefIn.uwSpdPllWvcHz = cp_stControlPara.swObsSpdPLLBandWidthHz;    // Real Value, Unit:Hz
+    obs_stObsCoefIn.uwSpdPllMcoef = cp_stControlPara.swObsSpdPLLM;
+    obs_voObsCoef(&obs_stObsCoefIn, &obs_stObsCoefPu);
     /* Speed PI coefficient calculate */
     asr_stSpdPICoefIn.uwUbVt = VBASE;
     asr_stSpdPICoefIn.uwIbAp = IBASE;
@@ -432,7 +432,7 @@ void  scm_voSpdCtrMdTbs(void)
 
     if (cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
     {
-//        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
+        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
     }
     else if (cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
     {
@@ -579,7 +579,7 @@ void    scm_voTorqCtrMdTbs(void)
 
     if (cp_stFlg.ThetaGetModelSelect == ANG_OBSERVER)
     {
-//        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
+        mth_voLPFilter(obs_stObsOutPu.swElecFreqPu, &scm_stSpdFbkLpf);
     }
     else if (cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
     {

+ 1 - 1
4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/syspar.h

@@ -63,7 +63,7 @@ Update Time
    0 - PA19和PA20做前灯DCDC控制时,不可仿真;
    1 - PA19和PA20作SWD调试接口时,前灯DCDC不可控制
 *=======================================================================*/
-#define  SIMULATION        0
+#define  SIMULATION        1
 /*======================================================================*
    //仪表协议选择
 // //0-5s,1-锂电2号,2-概念智慧, 3-八方,4-澜风2.6,无适配仪表,暂未使用, 5-J协议,6-澜风9.0