motor_control.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 MotorSpeedSetBegin; //进入推行模式电机转速值
  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
  26. }MC_WorkMode_Struct_t;
  27. typedef enum
  28. {
  29. MC_GearSt_OFF = 0x00,
  30. MC_GearSt_Torque_ECO = 0x01,
  31. MC_GearSt_Torque_NORM = 0x02,
  32. MC_GearSt_Torque_SPORT = 0x03,
  33. MC_GearSt_Torque_TURBO = 0x04,
  34. MC_GearSt_Cadence_ECO = 0x11,
  35. MC_GearSt_Cadence_NORM = 0x12,
  36. MC_GearSt_Cadence_SPORT = 0x13,
  37. MC_GearSt_Cadence_TURBO = 0x14,
  38. MC_GearSt_SMART = 0x33,
  39. MC_GearSt_WALK = 0x22
  40. }MC_GearSt_Struct_t;
  41. //电机控制指令,占用空间2bytes
  42. typedef struct
  43. {
  44. MC_GearSt_Struct_t GearSt; //助力档位
  45. MC_LightSwitch_Struct_t LightSwitch; //灯开关 0xF0-关,0xF1-开
  46. }MC_ControlCode_Struct_t;
  47. typedef enum
  48. {
  49. MC_AssistRunMode_WALK = 1U, // 推行模式
  50. MC_AssistRunMode_TORQUE, // 力矩模式
  51. MC_AssistRunMode_CADENCE, // 踏频模式
  52. MC_AssistRunMode_GAS , // 指拨模式
  53. MC_AssistRunMode_INVALID // 无效模式
  54. } MC_AssistRunMode_Struct_t;
  55. //电机控制参数
  56. typedef struct
  57. {
  58. MC_AssistRunMode_Struct_t AssistRunMode; //助力模式
  59. int16_t Ref_Torque; //力矩模式输入FOC值
  60. int16_t Ref_Speed; //速度模式输入FOC值
  61. FlagStatus Foc_Flag; //FCO运算标志
  62. }MC_CalParam_Struct_t;
  63. /**********************************变量声明**********************************/
  64. extern MC_WorkMode_Struct_t MC_WorkMode;
  65. extern MC_WorkMode_Struct_t MC_WorkMode_Back;
  66. extern MC_ControlCode_Struct_t MC_ControlCode;
  67. extern MC_ControlCode_Struct_t MC_ControlCode_Back;
  68. extern MC_CalParam_Struct_t MC_CalParam;
  69. extern MC_CalParam_Struct_t MC_CalParam_Back;
  70. extern uint8_t MC_CadenceLimit_K;
  71. extern uint8_t MC_MotorSpeedLimit_K;
  72. extern FlagStatus MC_StarFlag;
  73. #define Update_MC_ControlCode_Back() { MC_ControlCode_Back.GearSt = (MC_GearSt_Struct_t)~MC_ControlCode.GearSt;\
  74. MC_ControlCode_Back.LightSwitch = (MC_LightSwitch_Struct_t)~MC_ControlCode.LightSwitch; }
  75. #define Update_MC_CalParam_Back() { MC_CalParam_Back.AssistRunMode = (MC_AssistRunMode_Struct_t)~MC_CalParam.AssistRunMode;\
  76. MC_CalParam_Back.Foc_Flag = (FlagStatus)~MC_CalParam.Foc_Flag;\
  77. MC_CalParam_Back.Ref_Torque = ~MC_CalParam.Ref_Torque;\
  78. MC_CalParam_Back.Ref_Speed = ~MC_CalParam.Ref_Speed; }
  79. /*****************************函数声明******************************/
  80. extern void MC_SensorInit(void);
  81. extern void MC_Init(void);
  82. extern void MC_ControlParam_Init(void);
  83. extern void MC_CalParam_Cal(MC_WorkMode_Struct_t p_MC_WorkMode,\
  84. ADC_SensorData_Struct_t p_ADC_SensorData,\
  85. MC_GearSt_Struct_t GearSt, \
  86. TrueOrFalse_Flag_Struct_t Break_Flag, \
  87. TrueOrFalse_Flag_Struct_t GearSensor_Flag, \
  88. MC_CalParam_Struct_t* p_MC_CalParam);
  89. extern void MC_MotorStar(FlagStatus* StarFlag);
  90. extern void MC_MotorStop(FlagStatus* StarFlag);
  91. extern void SpdProportion_calculate(void);
  92. #endif