/** * @file CadAssist.h * @author xu, haifeng(xuhf58@midea.com) * @brief * @version 0.1 * @date 2023-05-10 * * @copyright Copyright (c) 2023 * */ #ifndef CADASSIST_H #define CADASSIST_H #include "typedefine.h" #include "macroequ.h" #include "asr.h" #include "syspar.h" #include "user.h" #include "bikeinformation.h" #if(INTELLIGENCADGEAR_EN !=0) #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_1000W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(15.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(1.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.75) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_750W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(15.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(1.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.75) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(15.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(1.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(7.5/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(30.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(7.5/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(15.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(1.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(7.5/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(25.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(7.5/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(20.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(2.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_LowRatio) #define ASS_CUR_STEP 14 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(80.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(4.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0.0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(2.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_517Ratio) #define ASS_CUR_STEP 14 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(20.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(4.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0.0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(2.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_958Ratio) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(40.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #else #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(40.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(3.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(2.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #endif #else #define ASS_CAD_MAX_RPM 55 #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_1000W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(1.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_750W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(1.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(4.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(10.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(2.5) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_LowRatio) #define ASS_CUR_STEP 14 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(40.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(4.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0.0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(2.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_517Ratio) #define ASS_CUR_STEP 14 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(20.0) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(4.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(1.0) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0.0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(2.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(5.0/60) /**< Q14. Base 60A */ #define ASS_CAD_MAX_RPM 55 #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_958Ratio) #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(7.5) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(4.0) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #else #define ASS_CUR_STEP 20 /**< Q14. Target Assist Current Step Value */ #define ASS_PID_KP _IQ8(80) /**< Q8. PID Kp */ #define ASS_VOL_STEP_MAX _IQ8(8) /**< Q8. */ #define ASS_VOL_DEC_STEP _IQ8(0.5) /**< Q8. */ #define ASS_PID_ERR_MIN _IQ15(0/1400) /**< Q15. PID Min Err */ #define ASS_PID_IERR_MIN _IQ14(3.0/60) /**< Q14. Base 60A */ #define ASS_MESH_CUR _IQ14(10.0/60) /**< Q14. Base 60A */ #endif #endif #define ASS_CMD_SPEED_LPF_TIME 5000L /**< Cmd Low Pass Filter Time. Unit 1ms */ #if(THROTTLEGEAR !=0) #define ASS_ONE_SPEED_PERCENT 60 #define ASS_TWO_SPEED_PERCENT 72 #define ASS_THREE_SPEED_PERCENT 84 #define ASS_FOUR_SPEED_PERCENT 100 #define ASS_FIVE_SPEED_PERCENT 100 #endif #if(CADASSISTGEAR !=0) #define CAD_ONE_SPEED_PERCENT 60 #define CAD_TWO_SPEED_PERCENT 72 #define CAD_THREE_SPEED_PERCENT 84 #define CAD_FOUR_SPEED_PERCENT 100 #define CAD_FIVE_SPEED_PERCENT 100 #endif /*************************************** * * Type Definations * ***************************************/ /** * @brief Assist Calculate State Machine Status * */ typedef enum { CadAssStop = 0, /**< Stop State */ CadAssStartup = 1, /**< Startup State */ CadAssPro = 2, /**< Assist Calculate State */ CadAssPreStop = 3 /**< Assist Stop Prepare State */ } CAD_ASS_FSM_STATUS; /** * @brief Type of Spd Control PID * */ typedef struct { //coef UWORD uwPidKp; /**助力kp< Q8. PID Kp */ UWORD uwThrittlePidKp; /**< Q8. PID Kp */ UWORD uwACTPidKp; /**< Q8. PID Kp */ //input SWORD swIqRef; /**< Q14. PID Input q axis current reference */ SWORD swIqFbk; /**< Q14. PID Input q axis current feedback */ SWORD swPidRef; /**< Q15. PID Input Motor Speed reference */ SWORD swPidFbk; /**< Q15. PID Input Motor Speed feedback */ SWORD swPidLimMax; /**< Q8. PID Output Limit */ SWORD swPidVolDec; /**< Q8. PID Output Limit */ SWORD swDirection; /**< Motor Run Direction */ //work var SLONG slPidErr; /**< Q15. The Err of PID Motor Speed reference and feedback*/ SLONG slPidP; /**< Q8. PID Proportion Term Result */ //out SWORD swPidOut; /**< Q8. PID Output Term Result */ }CADASS_PID; /** * @brief Assist Calculate Coefficient Struct * */ typedef struct { // Bike info UWORD uwWheelCircumferenceCm; /**< Unit: 1cm. Bike Wheel Perimeter. */ UWORD uwMechRationMotor; /**< Q10. Motor To Bike Wheel Ratio */ UWORD uwAssistMaxBikeSpeed; /**< Q4. Base 1Km/h. Assist Max Bike Speed */ UWORD uwThrottleMaxBikeSpeed; /**< Q4. Base 1Km/h. Throttle Max Bike Speed */ UWORD uwCartMaxBikeSpeed; /**< Q4. Base 1Km/h. Cart Bike Speed */ UWORD uwMaxCadRpm; /**< Set Max Cadence Freqency Unit Rpm */ UWORD uwCadencePulses; /**< Cadence Pulses for 1 Cycle */ UWORD uwFluxPu; /**< Q12. Motor Rotor Flux */ // Drive info UWORD uwMotorPoles; /**< Motor Pole Pairs*/ UWORD uwCofCurMaxPu; /**< Q14. Max Assist Current */ SWORD swKmhToMSpdPu; /**< Q15.1km/h to Unit motorspd pu */ SLONG slBSpdPuToMSpdPu; /**< Q10.Transform form Bike speed pu(Q20) to motor speed pu(Q15) */ SWORD swMSpdpuLimit; /**< Q15.Assist Max Speed.Calculate By ASS_SPD_LIMIT */ SWORD swAssistSectionComp; /**< Q14.Cadence Control Speed Section Compensation Coefficient */ SWORD swAssistMaxSpd; SWORD swThrottleMaxspd; } CADASS_COEF; typedef struct { UWORD uwGearOne; UWORD uwGearTwo; UWORD uwGearThree; UWORD uwGearFour; UWORD uwGearFive; UWORD MaxBikeSpeed; } GEAR_COEF; /** * @brief Candence Assist Parameter Input Struct * */ typedef struct { SWORD swFlxIqLimitPu; /**< Q14. Flux Module Current Limit */ SWORD swPwrIqLimitPu; /**< Q14. Power Limit Module Current Limit */ UWORD uwBmsIqLimitPu; /**< Q14. Battery Management Module Current Limit */ SWORD swAssMaxVolLimpu; /**< Q14. Voltage Limit Value */ SWORD swDirection; /**< Motor Run Direction */ UWORD uwGearSt; /**< Assist Gear Status */ UWORD uwCadancePer; /**< Q14. Cadance output persentage.Fmax = 5Hz */ UWORD uwCadanceFwCnt; /**< Cadance pulse count number */ UWORD uwBikespeedPu; /**< Q20. Bike speed pu */ SWORD swSpdFbkPu; /**< Q20. Motor speed pu */ SWORD swIqRefpu; /**< Q14. q axis current reference */ SWORD swIqFbkpu; /**< Q14. q axis current feedback */ SWORD swUqOutputpu; /**< Q14. q axis voltage feedback */ UWORD uwThrottlePercent; /**< Q0. Unit 0.1%. Throttle Percent */ } CADASS_PER_IN; /** * @brief Candence Assist Process State Parameter Struct * */ typedef struct { UWORD uw1msCnt; /**< Q0. 1ms Counter */ UWORD uw10msCnt; /**< Q0. 10ms Counter */ UWORD uwAssitMode; /**< Assist Mode */ UWORD uwAssitModeLast; /**< Assist Mode Last */ SWORD swAssistSpdCmd; /**< Q15. Assist Motor Speed reference */ SWORD swCurrentMaxPu; /**< Q14. Assist Max Current */ SWORD swUqLimitInitPu; /**< Q14. Assist Voltage Limit Init Value */ SWORD swVoltageStep; /**< Q8. Assist Voltage Limit Slope Value */ SLONG slVoltageSum; /**< Q22. Assist Voltage Limit Slope Value */ SWORD swBikeSpd2MotSpdPu; /**< Q15.Motor Speed pu Caculate By Bike Speed pu(Q20)*/ SWORD swSpdFbkPuRec[10]; /**< Q15. Assist Motor Speed Feedback Record */ SWORD swSpdFbkPuAcc; /**< Assist Motor Speed Acceleration.10 - 3Km/s */ SWORD swTargetAssCurPu; /**< Q14. Assist Target Current */ SWORD swTargetAssCurAcc; /**< Q14. Assist Target Current Step Value */ } CADASS_PER_PRO; /** * @brief Candence Assist Parameter Output Struct * */ typedef struct { BOOL blAssistflag; /**< Assist Flag. TRUE or FALSE */ BOOL blPreStopFlag; /**< PreStop Flag. TRUE or FALSE */ SWORD swAssCurrentPu; /**< Q14. Actual Assist Current */ SWORD swVoltLimitPu; /**< Q14. Assist Voltage Limit Value */ } CADASS_PER_OUT; /** * @brief Candence Assist * */ typedef struct { UWORD wwCdenceRpm; UWORD uwBikeRpm ; UWORD uwCadErrNow; UWORD uwCadErrBack; UWORD uwCadErrdata[10]; UWORD uwWhellFitcnt; UWORD uwmatchNumb; UWORD uwmatchNumbBack; UWORD uwcnt; UWORD uwWhellFitCnt; BOOL blmatchMode; BOOL blCadChangeFlag; }MaTCHCAD_TRUCT; typedef struct { SWORD swAccCurLimitMax; UWORD uwAccCurLimitGear; UWORD uwUart5SPWM; }GEAR_CUR_TRUCT; typedef struct { UBYTE State; //0-Stop,1-加速,2-恒功率 UWORD K_Init; //初始系数 UWORD K_AccStep; //递增斜率 UWORD K_DecStep; //递减斜率 UWORD K_Result; //功率限制衰减系数 }THROTTLE_POWER_LIMIT_STRUCT; extern MaTCHCAD_TRUCT CadSmart; extern GEAR_CUR_TRUCT GearCur; /**************************************** * * Exported variable * ****************************************/ //extern CADASS_PER_IN ass_stCadAssParaIn; //extern CADASS_PER_PRO ass_stCadAssParaPro; extern CADASS_COEF ass_stCadAssCoef; extern CADASS_PER_OUT ass_stCadAssCalOut; extern CADASS_PID ass_stCadAssSpdCtl; extern CADASS_PER_PRO ass_stCadAssParaPro; extern CAD_ASS_FSM_STATUS ass_enCadAssStatus; extern THROTTLE_POWER_LIMIT_STRUCT Throttle_PowerLimit_K; /************************************************************************ Ram Allocation *************************************************************************/ /*************************************** * * Exported Function * ***************************************/ /** * @brief Parameter Reset or Power On Init Function * * @note Call in main(),before EE intial */ extern void ass_voParameterInit(void); /** * @brief Coefficient Get and Calculate Function * * @note Call in SysRdy_hook(),at first execution and Second State Flow Exit */ extern void ass_voAssistCoefCal(void); extern void CadSpedLinitPowerInit(void); /** * @brief Assist Function * * @note Call in Event_1ms() */ extern void ass_voAssistFunc(void); extern void CadSmartDisting(void); extern void GearLimitCurHandle(void); extern void ThrottlePowerLimitCal(BOOL ThrottleModeFlag, UWORD BikeSpeed, UWORD BikeSpeedLimit, SWORD PowerCur, SWORD PowerMax, THROTTLE_POWER_LIMIT_STRUCT* ThrottlePowerLimit); #endif