Explorar o código

cp_stControlPara结构体中增加数据会导致无感驱动故障,将数据存放至ass_stParaCong

Ye Jin hai 4 meses
pai
achega
49f772c576

+ 6 - 6
User project/1.FrameLayer/Source/main.c

@@ -218,8 +218,8 @@ void mn_voParaSet(void)
 //                cp_stControlPara.swAlmMotorOverHeatCeVal = (SWORD)I2C_uwMControlRead[12];
 //                cp_stControlPara.swAlmMotorRecOHeatVal = (SWORD)I2C_uwMControlRead[13];
 //                cp_stControlPara.swAlmPwrLimitMotorStartTempVal = (SWORD)I2C_uwMControlRead[14];
-                cp_stControlPara.uwControlFunEN = I2C_uwMControlRead[15];
-                cp_stControlPara.uwThrottleGearEN = I2C_uwMControlRead[16];
+                ass_stParaCong.uwControlFunEN = I2C_uwMControlRead[15];
+                ass_stParaCong.uwThrottleGearEN = I2C_uwMControlRead[16];
                 
                 cp_stControlPara.swAlmRecOVVal = (SWORD)(cp_stControlPara.swAlmOverVolVal1 - ALM_VLT_REC_ERRVAL);//updata recover data
                 cp_stControlPara.swAlmRecUVVal = (SWORD)(cp_stControlPara.swAlmUnderVolVal1 + ALM_VLT_REC_ERRVAL);
@@ -390,8 +390,8 @@ void mn_voParaUpdate(void)
 //        cp_stControlPara.swAlmMotorOverHeatCeVal = MC_UpcInfo.stMContorlInfo.uwAlamMotorOverHeatCe;
 //        cp_stControlPara.swAlmMotorRecOHeatVal = MC_UpcInfo.stMContorlInfo.uwAlamMotorRecHeatCe;
 //        cp_stControlPara.swAlmPwrLimitMotorStartTempVal = MC_UpcInfo.stMContorlInfo.uwPwrLimitMotorStartCe;
-        cp_stControlPara.uwControlFunEN = MC_UpcInfo.stMContorlInfo.uwControlFunEN;
-        cp_stControlPara.uwThrottleGearEN = MC_UpcInfo.stMContorlInfo.uwThrottleGearEN;
+        ass_stParaCong.uwControlFunEN = MC_UpcInfo.stMContorlInfo.uwControlFunEN;
+        ass_stParaCong.uwThrottleGearEN = MC_UpcInfo.stMContorlInfo.uwThrottleGearEN;
         
         cp_stControlPara.swAlmRecOVVal = (SWORD)(cp_stControlPara.swAlmOverVolVal1 - ALM_VLT_REC_ERRVAL);
         cp_stControlPara.swAlmRecUVVal = (SWORD)(cp_stControlPara.swAlmUnderVolVal1 + ALM_VLT_REC_ERRVAL);
@@ -574,8 +574,8 @@ void mn_voEEUperParaUpdate(void)
 //        Syspara2.stMControlPara.uwAlamMotorOverHeatCe.uwReal = (UWORD)cp_stControlPara.swAlmMotorOverHeatCeVal;
 //        Syspara2.stMControlPara.uwAlamMotorRecHeatCe.uwReal = (UWORD)cp_stControlPara.swAlmMotorRecOHeatVal;
 //        Syspara2.stMControlPara.uwPwrLimitMotorStartCe.uwReal = (UWORD)cp_stControlPara.swAlmPwrLimitMotorStartTempVal;
-        Syspara2.stMControlPara.uwControlFunEN.uwReal = cp_stControlPara.uwControlFunEN;
-        Syspara2.stMControlPara.uwThrottleGearEN.uwReal = cp_stControlPara.uwThrottleGearEN;
+        Syspara2.stMControlPara.uwControlFunEN.uwReal = ass_stParaCong.uwControlFunEN;
+        Syspara2.stMControlPara.uwThrottleGearEN.uwReal = ass_stParaCong.uwThrottleGearEN;
     }
     if (MC_UpcInfo.stSensorInfo.uwSaveFlg == TRUE)
     {

+ 2 - 2
User project/2.MotorDrive/Source/spdctrFSM.c

@@ -769,9 +769,9 @@ UWORD StartUp_SpiSensorTest(void)
     }
     else
     {
-        if(uwAngle < ((uwAngle_sector+1)*cof_sl60DegreePu - (scm_slDragSpdPu * TBC_TM >> 10)))
+        if(uwAngle < ((uwAngle_sector+1)*cof_sl60DegreePu - (scm_swRotateDir*scm_slDragSpdPu * TBC_TM >> 10)))
         {
-          uwAngle += ((SQWORD)scm_slDragSpdPu * TBC_TM >> 10);
+          uwAngle += ((SQWORD)scm_swRotateDir*scm_slDragSpdPu * TBC_TM >> 10);
         }
         else
         {

+ 1 - 1
User project/2.MotorDrive/Source/spdctrmode.c

@@ -391,7 +391,7 @@ void scm_voLimit_Power(UWORD uwBikeGear, UWORD *uwCurLim, UBYTE *ucCurrentGain)
 {
     if((uwBikeGear <= 5) && (uwBikeGear > 0))
     {
-        pwr_stPwrLimCofIn.swPwrLimW = (SWORD)(((((SLONG)cp_stControlPara.swPwrLimitValWt * uwCurLim[uwBikeGear]) >> 10) * ucCurrentGain[uwBikeGear-1] * 10) >>10);
+        pwr_stPwrLimCofIn.swPwrLimW = (SWORD)((((SLONG)cp_stControlPara.swPwrLimitValWt * uwCurLim[uwBikeGear]) >> 10) * ucCurrentGain[uwBikeGear-1] / 100);
     }
     else if(uwBikeGear == 0x22)
     {

+ 10 - 0
User project/3.BasicFunction/Include/AssistCurve.h

@@ -71,6 +71,10 @@ extern "C" {
     {                                      \
         1024, 512, 716, 870, 1024, 1024 \
     } // 电流0-100% 1-50% 2-70% 3-85% 4-100% 5-100% Q10  
+//#define CUR_LIM_DEFAULT                    \
+//    {                                      \
+//        1024, 1024, 1024, 1024, 1024, 1024 \
+//    } // 电流0-100% 1-50% 2-70% 3-85% 4-100% 5-100% Q10  
 #define ASS_LIM_DEFAULT                    \
     {                                      \
         {0, 716, 870, 1024, 1024, 1024}, 0 \
@@ -208,6 +212,12 @@ typedef struct
     UWORD uwRearLightCycle;
     UWORD uwRearLightDuty;
     SWORD swDeltaBikeSpeedLimit;
+    
+    //    SWORD swAlmMotorOverHeatCeVal;
+//    SWORD swAlmMotorOverHeatTM;
+//    SWORD swAlmPwrLimitMotorStartTempVal;
+    UWORD uwControlFunEN;
+    UWORD uwThrottleGearEN;
 
     UWORD uwCadPulsePerCirc;
     UWORD uwBikeAssTorMaxPu;

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

@@ -530,7 +530,7 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
     }
     else
     {
-        ass_stCalCoef.uwSpeedAssistIMaxA = (UWORD)(((ULONG)ass_stParaSet.uwSpeedAssistIMaxA * ass_stCalCoef.ucAssistAccelerationGain[ass_stCalIn.uwGearSt-1] *10) >>10);//助力加速度增益
+        ass_stCalCoef.uwSpeedAssistIMaxA = (UWORD)((ULONG)ass_stParaSet.uwSpeedAssistIMaxA * ass_stCalCoef.ucAssistAccelerationGain[ass_stCalIn.uwGearSt-1] / 100);//助力加速度增益
     }
     
     AssCnt1ms ++;
@@ -588,7 +588,7 @@ static void AssitCuvApplPerVolt(void) /* parasoft-suppress METRICS-28 "本项目
     }
     else
     {
-        slTeTorAssitTmpPu = ((slTeTorAssitTmpPu * ass_stCalCoef.ucAssistRatioGain[ass_stCalIn.uwGearSt-1] *10) >>10);//助力比增益
+        slTeTorAssitTmpPu = (slTeTorAssitTmpPu * ass_stCalCoef.ucAssistRatioGain[ass_stCalIn.uwGearSt-1] / 100);//助力比增益
     }
 #else
     slTeTorAssitTmpPu = (SLONG)giant_slPolynomial(&swTorqCmd);
@@ -1206,7 +1206,7 @@ static void ass_voAssitCurLim(UWORD gear, UWORD uwBikeSpeedHzPu, UWORD uwCurMaxP
     
     if(gear > 0)
     {
-      uwIqLimitTemp1 = (UWORD)(((ULONG)ass_stCalCoef.ucMaxTorqueGain[gear-1] * uwIqLimitTemp1 * 10) >> 10);//最大力矩增益
+      uwIqLimitTemp1 = (UWORD)((ULONG)ass_stCalCoef.ucMaxTorqueGain[gear-1] * uwIqLimitTemp1 / 100);//最大力矩增益
     }
     if(uwIqLimitTemp1 > uwCurMaxPu)
     {

+ 1 - 1
User project/3.BasicFunction/Source/bikespeed.c

@@ -96,7 +96,7 @@ void bikespeed_voBikeSpeedCof(void)
 void bikespeed_voSetThrottleMaxSpd(UWORD uwBikeGear)
 {
     UWORD uwBikeSpdThresHold2;
-    if((cp_stControlPara.uwThrottleGearEN & 0xFF) == 0xAA)
+    if((ass_stParaCong.uwThrottleGearEN & 0xFF) == 0xAA)
     {
         switch(uwBikeGear)
         {

+ 1 - 1
User project/3.BasicFunction/Source/bikethrottle.c

@@ -171,7 +171,7 @@ void bikethrottle_voBikeThrottleADC(void) // need to match ADC_StartConversion(A
 ****************************************************************/
 void bikethrottle_voThrottlecruise(void)
 {
-    if((cp_stControlPara.uwControlFunEN & 0xFF) == 0xAA)
+    if((ass_stParaCong.uwControlFunEN & 0xFF) == 0xAA)
     {
         if((bikethrottle_stBikeThrottleOut.uwThrottleVolPu < (bikeCruise.ThrottlekeepVault+180)) && (bikethrottle_stBikeThrottleOut.uwThrottleVolPu > (bikeCruise.ThrottlekeepVault-180)))
         {

+ 2 - 2
User project/3.BasicFunction/Source/canAppl.c

@@ -109,8 +109,8 @@ void Can_voUpdateMC_UpcInfo(void)
 //    MC_UpcInfo.stMContorlInfo.uwAlamMotorOverHeatCe = cp_stControlPara.swAlmMotorOverHeatCeVal;
 //    MC_UpcInfo.stMContorlInfo.uwAlamMotorRecHeatCe = cp_stControlPara.swAlmMotorRecOHeatVal;
 //    MC_UpcInfo.stMContorlInfo.uwPwrLimitMotorStartCe = cp_stControlPara.swAlmPwrLimitMotorStartTempVal;
-    MC_UpcInfo.stMContorlInfo.uwControlFunEN = cp_stControlPara.uwControlFunEN;
-    MC_UpcInfo.stMContorlInfo.uwThrottleGearEN = cp_stControlPara.uwThrottleGearEN;
+    MC_UpcInfo.stMContorlInfo.uwControlFunEN = ass_stParaCong.uwControlFunEN;
+    MC_UpcInfo.stMContorlInfo.uwThrottleGearEN = ass_stParaCong.uwThrottleGearEN;
 
     MC_UpcInfo.stSensorInfo.uwTorSensorOffsetOrigin = torsensor_stTorSensorCof.uwTorqueOffsetOrign;
     MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow1 = torsensor_stTorSensorCof.uwTorqueOffsetNow1;

+ 0 - 5
User project/4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/CodePara.h

@@ -153,11 +153,6 @@ typedef struct
     SWORD swAlmOverHeatCeVal;
     SWORD swAlmOverHeatTM;
     SWORD swAlmPwrLimitStartTempVal;
-//    SWORD swAlmMotorOverHeatCeVal;
-//    SWORD swAlmMotorOverHeatTM;
-//    SWORD swAlmPwrLimitMotorStartTempVal;
-    UWORD uwControlFunEN;
-    UWORD uwThrottleGearEN;
 
     SWORD swAlmThrPhsShrtFrcTM;
     SWORD swAlmPWMOffTM;

+ 2 - 2
User project/4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Source/CodePara.c

@@ -125,8 +125,8 @@ void CodeParaInit(void)
     cp_stControlPara.swAlmPwrLimitStartTempVal = PWRLIM_START_THRESHOLD_TEMP;
 //    cp_stControlPara.swAlmMotorOverHeatCeVal = ALM_MOTOR_OVR_HEAT_VAL;
 //    cp_stControlPara.swAlmPwrLimitMotorStartTempVal = PWRLIM_START_THRESHOLD_MOTOR_TEMP;
-    cp_stControlPara.uwControlFunEN = THOTTLECRUISE_EN;
-    cp_stControlPara.uwThrottleGearEN = THROTTLEGEAR_ENABLE;
+    ass_stParaCong.uwControlFunEN = THOTTLECRUISE_EN;
+    ass_stParaCong.uwThrottleGearEN = THROTTLEGEAR_ENABLE;
 
     cp_stControlPara.swAlmThrPhsShrtFrcTM = ALM_THR_PHS_SHRT_FRC_TM;
     cp_stControlPara.swAlmPWMOffTM = ALM_PWM_OFF_TM;