123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- /**
- * @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
|