Эх сурвалжийг харах

无感正常切闭环,tbc中读tmag5273启动电机时会死机。

dd 1 долоо хоног өмнө
parent
commit
bc9246535a

+ 6 - 3
1.FrameLayer/Source/main.c

@@ -153,6 +153,8 @@ int  main(void)
     SYSCFG_DL_PWM_0_COPY_init();
     Reset_POWER_LOCK_PORT();
 
+    tmag5273_Init();
+
     //TIMA0  MOTOR_PWM
     DL_Timer_setCaptCompUpdateMethod(MOTOR_PWM_INST,DL_TIMER_CC_UPDATE_METHOD_ZERO_EVT,DL_TIMERA_CAPTURE_COMPARE_0_INDEX);
     DL_Timer_setCaptCompUpdateMethod(MOTOR_PWM_INST,DL_TIMER_CC_UPDATE_METHOD_ZERO_EVT,DL_TIMERA_CAPTURE_COMPARE_1_INDEX);
@@ -258,7 +260,7 @@ int  main(void)
 //    delay_cycles(DELAY);
 //    delay_cycles(DELAY);
 
-    tmag5273_Init();
+//    tmag5273_Init();
     /* Enter infinite loop */
 #if(JSCOPE_EN!=0)
      Jscope_Init();
@@ -275,12 +277,13 @@ int  main(void)
     {
 //        DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);
 //        DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN);
-          AppLoop();
+//        DL_GPIO_togglePins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
+        AppLoop();
 //          PROFILER_BG();
           ACnt++;
 //          Tempe = tmag5273_GetTemp();
 //          DL_GPIO_setPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
-//          Tmag5273_out.Angle = tmag5273_GetAngle();
+          Tmag5273_out.Angle = tmag5273_GetAngle();
 //          Tmag5273_out.MagX = tmag5273_GetXData();
 //          Tmag5273_out.MagY = tmag5273_GetYData();
 //          Tmag5273_out.MagZ = tmag5273_GetZData();

+ 1 - 1
1.FrameLayer/Source/tbc.c

@@ -94,7 +94,7 @@ void tbc_voUpIsr(void)
 //      LoadObsTheta_U.IqFbkPu = scm_swIqFdbLpfPu;
 //      LoadObsTheta_U.ThetamPu = switchhall_stOut.uwLowThetaPu;
 //      LoadObsTheta_step();
-    Tmag5273_out.Angle = tmag5273_GetAngle();
+//    Tmag5273_out.Angle = tmag5273_GetAngle();
     /* Full Order Observer: Hall Angle Filter */
     rtU.AngleIn = switchhall_stOut.uwLowThetaPu;
     Trigger();

+ 20 - 20
2.MotorDrive/Source/spdctrFSM.c

@@ -326,7 +326,7 @@ void ClzLoop_TbcdownHook(void)
         {
             temptheta += cof_sl360DegreePu;
         }
-//        scm_uwAngRefPu=temptheta;
+        scm_uwAngRefPu=temptheta;
         tstThetaCorrect = scm_uwAngRefPu - rtY.Angle_Filtered;
     }
     else if(cp_stFlg.ThetaGetModelSelect == ANG_RESOLVER)
@@ -353,25 +353,25 @@ void ClzLoop_TbcdownHook(void)
     /*======================================================================= 
              Set Iq limit and Id reference for Constant Voltage Break
     =======================================================================*/
-//    cvb_stBrakeIn.uwVdcLpfPu = (SWORD)adc_stUpOut.uwVdcLpfPu;
-//    cvb_stBrakeIn.swIdRefPu = scm_swIdRefPu;
-//    cvb_stBrakeIn.swIqRefPu = swCurRefrompu; //scm_swIqRefPu;
-//    cvb_stBrakeIn.swSpdPu = scm_stSpdFbkLpf.slY.sw.hi;
-//    cvb_stBrakeIn.uwAngelPu = scm_uwAngRefPu;
-//    cvb_stBrakeIn.uwSpdLpfAbsPu = scm_uwSpdFbkLpfAbsPu;
-//    cvb_voBrake(&cvb_stBrakeIn,&cvb_stBrakeCoef,&cvb_stBrakeOut);
-//
-//    scm_swIqRefPu = cvb_stBrakeOut.swIqRefPu;
-//    scm_uwAngRefPu = cvb_stBrakeOut.uwAngelPu;
-
-    scm_swIqRefPu = -500;
-    static UWORD AngleCnt;
-    AngleCnt += 200;
-    if(AngleCnt > 32767)
-    {
-        AngleCnt = 0;
-    }
-    scm_uwAngRefPu = AngleCnt;
+    cvb_stBrakeIn.uwVdcLpfPu = (SWORD)adc_stUpOut.uwVdcLpfPu;
+    cvb_stBrakeIn.swIdRefPu = scm_swIdRefPu;
+    cvb_stBrakeIn.swIqRefPu = swCurRefrompu; //scm_swIqRefPu;
+    cvb_stBrakeIn.swSpdPu = scm_stSpdFbkLpf.slY.sw.hi;
+    cvb_stBrakeIn.uwAngelPu = scm_uwAngRefPu;
+    cvb_stBrakeIn.uwSpdLpfAbsPu = scm_uwSpdFbkLpfAbsPu;
+    cvb_voBrake(&cvb_stBrakeIn,&cvb_stBrakeCoef,&cvb_stBrakeOut);
+
+    scm_swIqRefPu = cvb_stBrakeOut.swIqRefPu;
+    scm_uwAngRefPu = cvb_stBrakeOut.uwAngelPu;
+
+//    scm_swIqRefPu = -500;
+//    static UWORD AngleCnt;
+//    AngleCnt += 200;
+//    if(AngleCnt > 32767)
+//    {
+//        AngleCnt = 0;
+//    }
+//    scm_uwAngRefPu = AngleCnt;
 
     if(cvb_stBrakeIn.uwVdcLpfPu >= cvb_stBrakeCoef.uwVdcStartCvbPu)
     {