guohui27 1 год назад
Родитель
Сommit
4b7caebae9

+ 29 - 18
User project/2.MotorDrive/Source/spdctrmode.c

@@ -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)
     {

+ 8 - 2
User project/3.BasicFunction/Source/AssistCurve.c

@@ -511,10 +511,14 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
         AssCnt1ms = 0;
     }
     
-    
+    ass_stCalCoef.swTorqFilterGain = Q14_1;
     /* 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)); //转矩指令滤波切换,由低通滤波到踏频相关的滑动平均滤波
+//    if(Ass_FSM == Startup)
+//    {
+//        swTorqCmd1 = ass_stCalIn.uwtorquePer >> 1;
+//    }
     swTorqCmd = (SWORD)(((SLONG)swTorqCmd1 * ass_stCalCoef.swSmoothGain) >> 12);                             //转矩指令斜坡
     if (swTorqCmd > ass_stParaCong.uwBikeAssTorMaxPu) // 最大转矩限幅
     {
@@ -664,7 +668,9 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
         {
         	//do nothing
         }
-
+        
+        ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
+        
         /* Switch to ReduceCurrent FSM */
         if((ass_stCalIn.uwcadancePer == 0) || (ass_stCalIn.uwGearSt == 0) || BikeBrake_blGetstate() == TRUE)
         {

+ 1 - 1
User project/4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/user.h

@@ -47,7 +47,7 @@ Update Time
 #define MOTOR_WELLING_CITY_48V    0x30
 #define MOTOR_WELLING_MTB_48V     0x31
 
-#define MOTOR_ID_SEL              MOTOR_WELLING_CITY_36V    ///< syspar.h中也需要选择36V/48V系统
+#define MOTOR_ID_SEL              MOTOR_WELLING_MTB_36V    ///< syspar.h中也需要选择36V/48V系统
 /*======================================================================*
     Motor Parameters
 *=======================================================================*/

+ 14 - 8
WLMCP.ewp

@@ -2821,6 +2821,9 @@
                     <file>
                         <name>$PROJ_DIR$\User project\4.BasicHardwSoftwLayer\2.BasicSoftwLayer\Include\mathtool.h</name>
                     </file>
+                    <file>
+                        <name>$PROJ_DIR$\User project\4.BasicHardwSoftwLayer\2.BasicSoftwLayer\Include\notch.h</name>
+                    </file>
                     <file>
                         <name>$PROJ_DIR$\User project\4.BasicHardwSoftwLayer\2.BasicSoftwLayer\Include\queue.h</name>
                     </file>
@@ -2851,6 +2854,9 @@
                     <file>
                         <name>$PROJ_DIR$\User project\4.BasicHardwSoftwLayer\2.BasicSoftwLayer\Source\mathtool.c</name>
                     </file>
+                    <file>
+                        <name>$PROJ_DIR$\User project\4.BasicHardwSoftwLayer\2.BasicSoftwLayer\Source\notch.c</name>
+                    </file>
                     <file>
                         <name>$PROJ_DIR$\User project\4.BasicHardwSoftwLayer\2.BasicSoftwLayer\Source\queue.c</name>
                     </file>
@@ -2863,19 +2869,19 @@
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_adc.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_adc.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_adc.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_cap.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_cap.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_cap.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_dbg.c</name>
@@ -2887,31 +2893,31 @@
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_gpio.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_gpio.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_gpio.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_i2c.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_i2c.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_i2c.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_pwm.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_pwm.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_pwm.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_timer.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_timer.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_timer.h</name>
             </file>
             <file>
                 <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_uart.c</name>
             </file>
             <file>
-                <name>$PROJ_DIR$\User project\5.Api_rt\api_rt_uart.h</name>
+                <name>$PROJ_DIR$\User project\5.api_rt\api_rt_uart.h</name>
             </file>
         </group>
     </group>