فهرست منبع

新思维定制力矩模式车速分档

Ye Jin 5 ماه پیش
والد
کامیت
892518800b
3فایلهای تغییر یافته به همراه25 افزوده شده و 11 حذف شده
  1. 3 3
      3.BasicFunction/Include/uart_Lidian2.h
  2. 6 6
      3.BasicFunction/Source/AssistCurve.c
  3. 16 2
      3.BasicFunction/Source/uart_Lidian2.c

+ 3 - 3
3.BasicFunction/Include/uart_Lidian2.h

@@ -64,9 +64,9 @@ typedef union OBC_CtrlInfo2
     struct
     {
         UBYTE ucAssistedMagnetSteel: 4;//助力磁钢盘磁钢个数
+        UBYTE ThrottleGearEnable: 1;//转把分档
         UBYTE RS1: 1;//备用
-        UBYTE RS2: 1;//备用
-        UBYTE CuriseEnabele: 4;//自动巡航标志 0: 无自动巡航, 1: 有自动巡航
+        UBYTE CuriseEnabele: 1;//自动巡航标志 0: 无自动巡航, 1: 有自动巡航
         UBYTE Reverse: 1;//0: 无效,1: 倒车
     } Ctrl_Bit;
     
@@ -143,7 +143,7 @@ void Lidian2_OBCSetPara(void);
 void Lidian2_USART_DataProcess(USART_Buf_TypeDef* ptUartTx, UBYTE* Data);
 void Lidian2_SendData_OBC(USART_Buf_TypeDef* ptUartTx);
 void Lidian2_USART_RxData_Process(USART_Buf_TypeDef* ptUartTx, UBYTE* buf, UWORD dataCount);
-void Lidian2_XinSiWeiLimitThrottleSpd(UWORD speedPWM);
+void Lidian2_XinSiWeiLimitThrottleSpd(UBYTE throttleGear, UWORD speedPWM);
 
 #endif
 

+ 6 - 6
3.BasicFunction/Source/AssistCurve.c

@@ -281,22 +281,22 @@ void AssitCoefInit(void)
 
 #if(BIKE_TORQUESPDLIMIT_EN!=0)
     /*设置档位限制车速速度*/
-    Gear_Sped_Cof.uwAssistLimitSpdStart[0]=ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltPerimeter;
+    Gear_Sped_Cof.uwAssistLimitSpdStart[0]=ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltaBikeSpeedLimit;
      Gear_Sped_Cof.uwAssistLimitSpdStop[0]=Gear_Sped_Cof.uwAssistLimitSpdStart[0]+2;
 
-     Gear_Sped_Cof.uwAssistLimitSpdStart[1]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ass_ParaCong.swDeltPerimeter)*12/25;//48%
+     Gear_Sped_Cof.uwAssistLimitSpdStart[1]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ass_ParaCong.swDeltaBikeSpeedLimit)*12/25;//48%
      Gear_Sped_Cof.uwAssistLimitSpdStop[1]=Gear_Sped_Cof.uwAssistLimitSpdStart[1]+2;
 
-     Gear_Sped_Cof.uwAssistLimitSpdStart[2]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltPerimeter)*15/25;//60%
+     Gear_Sped_Cof.uwAssistLimitSpdStart[2]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltaBikeSpeedLimit)*15/25;//60%
      Gear_Sped_Cof.uwAssistLimitSpdStop[2]=Gear_Sped_Cof.uwAssistLimitSpdStart[2]+2;
 
-     Gear_Sped_Cof.uwAssistLimitSpdStart[3]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltPerimeter)*18/25;//72%
+     Gear_Sped_Cof.uwAssistLimitSpdStart[3]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltaBikeSpeedLimit)*18/25;//72%
      Gear_Sped_Cof.uwAssistLimitSpdStop[3]=Gear_Sped_Cof.uwAssistLimitSpdStart[3]+2;
 
-     Gear_Sped_Cof.uwAssistLimitSpdStart[4]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltPerimeter)*21/25;//84%
+     Gear_Sped_Cof.uwAssistLimitSpdStart[4]=(ass_ParaSet.uwAssistLimitBikeSpdStart+ ass_ParaCong.swDeltaBikeSpeedLimit)*21/25;//84%
      Gear_Sped_Cof.uwAssistLimitSpdStop[4]=Gear_Sped_Cof.uwAssistLimitSpdStart[4]+2;
 
-     Gear_Sped_Cof.uwAssistLimitSpdStart[5]=ass_ParaSet.uwAssistLimitBikeSpdStart + ass_ParaCong.swDeltPerimeter;//100%
+     Gear_Sped_Cof.uwAssistLimitSpdStart[5]=ass_ParaSet.uwAssistLimitBikeSpdStart + ass_ParaCong.swDeltaBikeSpeedLimit;//100%
      Gear_Sped_Cof.uwAssistLimitSpdStop[5]=Gear_Sped_Cof.uwAssistLimitSpdStart[5]+2;
 
     Gear_Sped_Cof.uwLimitdSpeed_S[0] = ((SQWORD)1000 << 20) * Gear_Sped_Cof.uwAssistLimitSpdStart[5] /

+ 16 - 2
3.BasicFunction/Source/uart_Lidian2.c

@@ -133,7 +133,7 @@ void Lidian2_OBCSetPara(void)
         }
     }
 
-    Lidian2_XinSiWeiLimitThrottleSpd(Lidian2_stOBC2MCInfo.uwThrottlePWM);
+    Lidian2_XinSiWeiLimitThrottleSpd(Lidian2_stOBC2MCInfo.stCtrlInfo2.Ctrl_Bit.ThrottleGearEnable,Lidian2_stOBC2MCInfo.uwThrottlePWM);
 }
 /***************************************************************
  Function: SP_USART_DataProcess;
@@ -383,11 +383,25 @@ void Lidian2_USART_RxData_Process(USART_Buf_TypeDef* ptUartTx, UBYTE* buf, UWORD
     }
 }
 
-void Lidian2_XinSiWeiLimitThrottleSpd(UWORD speedPWM)
+void Lidian2_XinSiWeiLimitThrottleSpd(UBYTE throttleGear, UWORD speedPWM)
 {
 #if(HEYBIKEXINSIWEI_ENABLE == 1)
 
     speedPWM = (speedPWM & 0xFF);//只取低字节
+
+    //助力始终分档限速
+    ass_CurLimCoef.uwBikeSpdThresHold1 = ((SQWORD)1000 << 20) * (ass_ParaSet.uwAssistLimitBikeSpdStart + ass_ParaCong.swDeltaBikeSpeedLimit) *speedPWM / 255 /
+                                                 ((SQWORD)36 * (ass_ParaCong.uwWheelPerimeter + ass_ParaCong.swDeltPerimeter) * FBASE); // Q20    3216 = Q10(3.1415926)
+    ass_CurLimCoef.uwBikeSpdThresHold2 = ((SQWORD)1000 << 20) * (ass_ParaSet.uwAssistLimitBikeSpdStop + ass_ParaCong.swDeltaBikeSpeedLimit) *speedPWM / 255 /
+                                                 ((SQWORD)36 * (ass_ParaCong.uwWheelPerimeter + ass_ParaCong.swDeltPerimeter) * FBASE); // Q20    3216 = Q10(3.1415926)
+    ass_CurLimCoef.ulBikeSpdDeltInv = (1 << 20) / (ass_CurLimCoef.uwBikeSpdThresHold2 - ass_CurLimCoef.uwBikeSpdThresHold1);
+
+    //转把有分档和不分档
+    if(throttleGear == 1)
+    {
+        speedPWM = 255;
+    }
+
     ass_stCadAssCoef.uwThrottleMaxBikeSpeed = (((ass_ParaCong.uwThrottleMaxSpdKmH+ass_ParaCong.swDeltaBikeSpeedLimit)<<4) + 8)*speedPWM/255;
     ass_stCadAssCoef.swThrottleMaxspd = ass_stCadAssCoef.swKmhToMSpdPu*((SLONG) ass_stCadAssCoef.uwThrottleMaxBikeSpeed + ASS_SPD_LIMIT_ERR)  >> 4;