Browse Source

明睿定制5S协议,1)故障码定制,2)限速+20;3)档位pwm定制。
uart新增刹车故障。

CN\zhouxiong9 3 months ago
parent
commit
6c3fbd09b1

+ 2 - 1
2.MotorDrive/Include/alarm.h

@@ -120,7 +120,7 @@ typedef union
         UWORD Throttle : 1;   // 3
         UWORD PCBNTC : 1;     // 4
         UWORD MotorNTC : 1;   // 5
-        UWORD Rsvd1 : 1;      // 6
+        UWORD Brake : 1;      // 6
         UWORD Rsvd2 : 1;      // 7
         UWORD Rsvd3 : 1;      // 8
         UWORD Rsvd4 : 1;      // 9
@@ -204,6 +204,7 @@ typedef struct
     UWORD uwThrottleFlt;
     UWORD uwPCBNTCFlt;
     UWORD uwMotorNTCFlt;
+    UWORD uwBrakeFlt;
 } ALM_DETECT_COUNT;
 
 typedef enum

+ 16 - 1
2.MotorDrive/Source/alarm.c

@@ -129,6 +129,7 @@ void alm_voInit(void)
     alm_stDecCt.uwThrottleFlt = 0;
     alm_stDecCt.uwPCBNTCFlt = 0;
     alm_stDecCt.uwMotorNTCFlt = 0;
+    alm_stDecCt.uwBrakeFlt = 0;
 
     /* Private variables init */
     alm_pvt_blIPMOTReCheckFlg = FALSE;
@@ -1467,7 +1468,21 @@ void alm_voDetec200MS(const ALM_BIKE_IN *in, const ALM_DETEC200MS_COF *coef)
         {
             alm_stDecCt.uwMotorNTCFlt = 0;
         }
-    }  
+    }
+
+    /*1)上电后检测到刹车有效则判定刹车故障,持续检测到刹车无效则退出刹车故障,此后不再检测;2)上电检测到刹车无效,则此后不再检测刹车故障*/
+    if(alm_stDecCt.uwBrakeFlt < 1)
+    {
+        if(BikeBrake_blGetstate() == TRUE)
+        {
+            alm_unBikeCode.bit.Brake = 1;
+        }
+        else
+        {
+            alm_unBikeCode.bit.Brake = 0;
+            alm_stDecCt.uwBrakeFlt = 1;
+        }
+    }
 }
 
 /***************************************************************

+ 1 - 0
3.BasicFunction/Include/Customization.h

@@ -13,5 +13,6 @@
 *=======================================================================*/
 #define TORG4BBTORQU_ENABLE                     0   //0-标准程序,1-塔基传感器定制
 #define HEYBIKEXINSIWEI_ENABLE                  0   //0-标准程序,1-heybike-新思维定制
+#define MINGRUI_ENABLE                          0   //0-标准程序,1-h明睿Ebike定制
 
 #endif /* 3_BASICFUNCTION_INCLUDE_CUSTOMIZATION_H_ */

+ 2 - 2
3.BasicFunction/Source/uart_J.c

@@ -234,10 +234,10 @@ void J_SendData_OBC(USART_Buf_TypeDef* ptUartTx, UBYTE checkAdjust)
     {
         errorCode = 0x24;//电机霍尔异常
     }
-    /*else if(0)
+    else if(1 == alm_unBikeCode.bit.Brake)
     {
         errorCode = 0x25;//刹车异常
-    }*/
+    }
     
     databuf[0] = 0x46;//'F'
     databuf[1] = Vlot;

+ 2 - 2
3.BasicFunction/Source/uart_lanfeng.c

@@ -243,10 +243,10 @@ void Lanfeng_SendData_OBC(USART_Buf_TypeDef* ptUartTx, UBYTE Cmd)
         {
             databuf[5] |= 0x04;//电机霍尔异常
         }
-        /*else if(0)
+        else if(1 == alm_unBikeCode.bit.Brake)
         {
             databuf[5] |= 0x05;//刹车异常
-        }*/
+        }
         else if(1 == MC_ErrorCode.ERROR_Bit.Protect_UnderVoltage)
         {
             databuf[5] |= 0x06;//欠压

+ 2 - 2
3.BasicFunction/Source/uart_lanfeng9.c

@@ -318,10 +318,10 @@ void Lanfeng9_SendData_OBC(USART_Buf_TypeDef* ptUartTx, UBYTE FrameBegin)
         {
             databuf[5] = 0x04;//电机霍尔异常
         }
-        /*else if(0)
+        else if(1 == alm_unBikeCode.bit.Brake)
         {
             databuf[5] = 0x05;//刹车异常
-        }*/
+        }
         else if(1 == MC_ErrorCode.ERROR_Bit.Protect_UnderVoltage)
         {
             databuf[5] = 0x06;//欠压

+ 104 - 4
3.BasicFunction/Source/usart.c

@@ -198,7 +198,92 @@ void KM5S_USART_RxData_Process(USART_Buf_TypeDef* ptUartTx, UBYTE* buf, UWORD da
         }
     }
 }
-
+void KM5S_MingruiTxErrorCodeUpdata(void)
+{
+#if(MINGRUI_ENABLE == 1)
+    if(1 == MC_ErrorCode.ERROR_Bit.Protect_OverVoltage)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x26;//过压保护
+    }
+    else if(1 == MC_ErrorCode.ERROR_Bit.Protect_UnderVoltage)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x11;//欠压保护
+    }
+    else if(1 == MC_ErrorCode.ERROR_Bit.Protect_LockRotor)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x29;//电机堵转保护
+    }
+    else if((1 == MC_ErrorCode.ERROR_Bit.Protect_OverTemp) || (1 == MC_ErrorCode.ERROR_Bit.Protect_MotorOverTemp))
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x13;//控制器或电机过温
+    }
+    /*else if(0)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x17;//飞车保护
+    }*/
+    else if(1 == MC_ErrorCode.ERROR_Bit.Fault_CadenceSensor)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x18;//踏频传感器故障
+    }
+    else if(1 == MC_ErrorCode.ERROR_Bit.Fault_BikeSpdSensor)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x19;//电机测速传感器故障
+    }
+    else if(1 == MC_ErrorCode.ERROR_Bit.Protect_OverCurrent)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x21;//控制器过流
+    }
+    else if(1 == MC_ErrorCode.ERROR_Bit.Fault_Throttle)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x22;//转把故障
+    }
+    else if(1 == MC_ErrorCode.ERROR_Bit.Fault_HallSensor)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x24;//电机霍尔故障
+    }
+    else if(1 == alm_unBikeCode.bit.Brake)
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x25;//刹车异常
+    }
+    else
+    {
+        stMC2OBC_RRunInfo.ErrorCode = 0x00;
+    }
+#endif
+}
+void KM5S_MingruiRxGearStUpdata(void)
+{
+#if(MINGRUI_ENABLE == 1)
+    if(stOBC_RunInfo.ucWalk == 1)
+    {
+        MC_ControlCode.GearSt = MC_GearSt_WALK;
+    }
+    else if(stOBC_RunInfo.ucPWM == 0x11)
+    {
+        MC_ControlCode.GearSt = MC_GearSt_Torque_ECO;
+    }
+    else if(stOBC_RunInfo.ucPWM == 0x22)
+    {
+        MC_ControlCode.GearSt = MC_GearSt_Torque_NORM;
+    }
+    else if(stOBC_RunInfo.ucPWM == 0x33)
+    {
+        MC_ControlCode.GearSt = MC_GearSt_Torque_SPORT;
+    }
+    else if(stOBC_RunInfo.ucPWM == 0x44)
+    {
+        MC_ControlCode.GearSt = MC_GearSt_Torque_TURBO;
+    }
+    else if(stOBC_RunInfo.ucPWM == 0x55)
+    {
+        MC_ControlCode.GearSt = MC_GearSt_SMART;
+    }
+    else
+    {
+        MC_ControlCode.GearSt = MC_GearSt_OFF;
+    }
+#endif
+}
 void KM5S_USART_DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD Addr, UBYTE Mode, UBYTE Length, UBYTE* Data)
 {
     UWORD uwCmd,uwID;
@@ -257,6 +342,7 @@ void KM5S_USART_DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD Addr, UBYTE Mode,
                   MC_ControlCode.GearSt = MC_GearSt_SMART;
             }
 
+            KM5S_MingruiRxGearStUpdata();
 
             if(stOBC_RunInfo.ucLightSwitch == 1)                           //大灯
             {
@@ -1437,6 +1523,11 @@ void KM5S_OBCSetPara(UBYTE* Data)
     stOBC_SetInfo.ucSpeedLimiation = ((Data[10] & 0xF8)>>3) + 10;//km/h
     stOBC_SetInfo.ucWheelDiameterCode = (Data[10] & 0x07);
 
+#if(MINGRUI_ENABLE == 1)
+    stOBC_SetInfo.ucSpeedLimiation = ((Data[10] & 0xF8)>>3) + 20;//km/h
+#endif
+
+#if(0)
     /*低压保护阈值更新*/
     if(MC_UpcInfo.stMContorlInfo.uwAlamUVolV != (UWORD)(stOBC_SetInfo.uwUnderVoltageBase + stOBC_SetInfo.swUnderVoltageBias))
     {
@@ -1447,7 +1538,7 @@ void KM5S_OBCSetPara(UBYTE* Data)
         cp_stFlg.ParaMCInfoUpdateFlg = TRUE;
         cp_stFlg.ParaMotorDriveUpdateFinishFlg = TRUE;
     }
-
+#endif
     /*功率限幅阈值更新*/
 //    #if (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V)
 //        UWORD uwVolt = 480;
@@ -1456,6 +1547,7 @@ void KM5S_OBCSetPara(UBYTE* Data)
 //    #else
 //        UWORD uwVolt = 360;
 //    #endif
+#if(0)
         UWORD uwVolt =cp_stMotorPara.swRUdcV;
     if(MC_UpcInfo.stTestParaInfo.uwPwrLimit != ((stOBC_SetInfo.ucCurrentLimiation*uwVolt>>1) + 500))
     {
@@ -1464,9 +1556,12 @@ void KM5S_OBCSetPara(UBYTE* Data)
         cp_stFlg.ParaSaveEEFlg = TRUE;
         cp_stFlg.ParaUpdateFlg = TRUE;
         cp_stFlg.TestParaInfoUpdateFlg = TRUE;
+        ]
         cp_stFlg.ParaMotorDriveUpdateFinishFlg = TRUE;
     }
+#endif
 
+#if(0)
     /*限速阈值更新*/
     if(MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStart != stOBC_SetInfo.ucSpeedLimiation)
     {
@@ -1481,7 +1576,9 @@ void KM5S_OBCSetPara(UBYTE* Data)
         cp_stFlg.ParaBikeInfoUpdateFlg = TRUE;
         cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
     }
+#endif
 
+#if(0)
     /*轮径更新*/
     if(stOBC_SetInfo.ucWheelDiameterCode <= 5)
     {
@@ -1504,6 +1601,7 @@ void KM5S_OBCSetPara(UBYTE* Data)
         cp_stFlg.ParaBikeInfoUpdateFlg = TRUE;
         cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
     }
+#endif
 }
 
 void KM5S_SendData_OBC(USART_Buf_TypeDef* ptUartTx, UBYTE Mode, UBYTE Length, UBYTE checknum)
@@ -1551,15 +1649,17 @@ void KM5S_SendData_OBC(USART_Buf_TypeDef* ptUartTx, UBYTE Mode, UBYTE Length, UB
     {
         stMC2OBC_RRunInfo.ErrorCode = 0x24;//电机霍尔异常
     }
-    /*else if(0)
+    else if(1 == alm_unBikeCode.bit.Brake)
     {
         stMC2OBC_RRunInfo.ErrorCode = 0x25;//刹车异常
-    }*/
+    }
     else
     {
         stMC2OBC_RRunInfo.ErrorCode = 0x00;
     }
     
+    KM5S_MingruiTxErrorCodeUpdata();
+
     databuf[0] = UARTFRAME_BEGIN;
     databuf[1] = UARTADDR_OBC;
     databuf[2] = Mode;