motor_control.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #ifndef __MOTOR_CONTROL_H
  2. #define __MOTOR_CONTROL_H
  3. #include "stm32f1xx_hal.h"
  4. #include "var.h"
  5. #include "adc.h"
  6. /*********************************类型定义*******************************/
  7. //推行模式处理控制变量
  8. typedef struct
  9. {
  10. TrueOrFalse_Flag_Struct_t IsEnterFlag; //进入推行模式标志
  11. uint32_t MotorSpeedSetBigin; //进入推行模式电机转速值
  12. }MC_WalkProcess_Param_Struct_t;
  13. //力矩模式处理控制变量
  14. typedef struct
  15. {
  16. FlagStatus MotorStopLock_Flag; //停机锁定标志
  17. uint16_t TorqueApp; //力矩采集值
  18. int16_t TorqueRef; //助力计算结果
  19. int16_t TorqueRefEnd; //助力给定值
  20. }MC_TorqueProcess_Param_Struct_t;
  21. //电机工作模式
  22. typedef enum
  23. {
  24. MC_WorkMode_Run = 0U,
  25. MC_WorkMode_Config = 1U,
  26. MC_WorkMode_Debug = 2U
  27. }MC_WorkMode_Struct_t;
  28. typedef enum
  29. {
  30. MC_GearSt_OFF = 0x00,
  31. MC_GearSt_Torque_ECO = 0x01,
  32. MC_GearSt_Torque_NORM = 0x02,
  33. MC_GearSt_Torque_SPORT = 0x03,
  34. MC_GearSt_Torque_TURBO = 0x04,
  35. MC_GearSt_Torque_BOOST = 0x05,
  36. MC_GearSt_Cadence_ECO = 0x11,
  37. MC_GearSt_Cadence_NORM = 0x12,
  38. MC_GearSt_Cadence_SPORT = 0x13,
  39. MC_GearSt_Cadence_TURBO = 0x14,
  40. MC_GearSt_SMART = 0x33,
  41. MC_GearSt_WALK = 0x22
  42. }MC_GearSt_Struct_t;
  43. //电机控制指令,占用空间2bytes
  44. typedef struct
  45. {
  46. MC_GearSt_Struct_t GearSt; //助力档位
  47. MC_LightSwitch_Struct_t LightSwitch; //灯开关 0xF0-关,0xF1-开
  48. }MC_ControlCode_Struct_t;
  49. typedef enum
  50. {
  51. MC_AssistRunMode_WALK = 1U, // 推行模式
  52. MC_AssistRunMode_TORQUE, // 力矩模式
  53. MC_AssistRunMode_CADENCE, // 踏频模式
  54. MC_AssistRunMode_GAS , // 指拨模式
  55. MC_AssistRunMode_INVALID // 无效模式
  56. } MC_AssistRunMode_Struct_t;
  57. //电机控制参数
  58. typedef struct
  59. {
  60. MC_AssistRunMode_Struct_t AssistRunMode; //助力模式
  61. int16_t Ref_Torque; //力矩模式输入FOC值
  62. int16_t Ref_Speed; //速度模式输入FOC值
  63. FlagStatus Foc_Flag; //FCO运算标志
  64. }MC_CalParam_Struct_t;
  65. /**********************************变量声明**********************************/
  66. extern MC_WorkMode_Struct_t MC_WorkMode;
  67. extern MC_WorkMode_Struct_t MC_WorkMode_Back;
  68. extern MC_ControlCode_Struct_t MC_ControlCode;
  69. extern MC_ControlCode_Struct_t MC_ControlCode_Back;
  70. extern MC_CalParam_Struct_t MC_CalParam;
  71. extern MC_CalParam_Struct_t MC_CalParam_Back;
  72. extern uint8_t MC_CadenceLimit_K;
  73. extern FlagStatus MC_StarFlag;
  74. extern uint8_t Gear_BoostStatus;
  75. extern uint32_t Gear_BoostDelayCnt;
  76. extern uint32_t Gear_BoostReEnterCnt;
  77. #define Update_MC_ControlCode_Back() { MC_ControlCode_Back.GearSt = (MC_GearSt_Struct_t)~MC_ControlCode.GearSt;\
  78. MC_ControlCode_Back.LightSwitch = (MC_LightSwitch_Struct_t)~MC_ControlCode.LightSwitch; }
  79. #define Update_MC_CalParam_Back() { MC_CalParam_Back.AssistRunMode = (MC_AssistRunMode_Struct_t)~MC_CalParam.AssistRunMode;\
  80. MC_CalParam_Back.Foc_Flag = (FlagStatus)~MC_CalParam.Foc_Flag;\
  81. MC_CalParam_Back.Ref_Torque = ~MC_CalParam.Ref_Torque;\
  82. MC_CalParam_Back.Ref_Speed = ~MC_CalParam.Ref_Speed; }
  83. /*****************************函数声明******************************/
  84. extern void MC_SensorInit(void);
  85. extern void MC_Init(void);
  86. extern void MC_ControlParam_Init(void);
  87. extern void MC_CalParam_Cal(MC_WorkMode_Struct_t p_MC_WorkMode,\
  88. ADC_SensorData_Struct_t p_ADC_SensorData,\
  89. MC_GearSt_Struct_t GearSt, \
  90. TrueOrFalse_Flag_Struct_t Break_Flag, \
  91. TrueOrFalse_Flag_Struct_t GearSensor_Flag, \
  92. MC_CalParam_Struct_t* p_MC_CalParam);
  93. extern void MC_MotorStar(FlagStatus* StarFlag);
  94. extern void MC_MotorStop(FlagStatus* StarFlag);
  95. extern void SpdProportion_calculate(void);
  96. #endif