123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #ifndef __MOTOR_CONTROL_H
- #define __MOTOR_CONTROL_H
- #include "stm32f1xx_hal.h"
- #include "var.h"
- #include "adc.h"
- /*********************************类型定义*******************************/
- //推行模式处理控制变量
- typedef struct
- {
- TrueOrFalse_Flag_Struct_t IsEnterFlag; //进入推行模式标志
- uint32_t MotorSpeedSetBegin; //进入推行模式电机转速值
- }MC_WalkProcess_Param_Struct_t;
- //力矩模式处理控制变量
- typedef struct
- {
- FlagStatus MotorStopLock_Flag; //停机锁定标志
- uint16_t TorqueApp; //力矩采集值
- int16_t TorqueRef; //助力计算结果
- int16_t TorqueRefEnd; //助力给定值
- }MC_TorqueProcess_Param_Struct_t;
- //电机工作模式
- typedef enum
- {
- MC_WorkMode_Run = 0U,
- MC_WorkMode_Config
- }MC_WorkMode_Struct_t;
- typedef enum
- {
- MC_GearSt_OFF = 0x00,
- MC_GearSt_Torque_ECO = 0x01,
- MC_GearSt_Torque_NORM = 0x02,
- MC_GearSt_Torque_SPORT = 0x03,
- MC_GearSt_Torque_TURBO = 0x04,
- MC_GearSt_Cadence_ECO = 0x11,
- MC_GearSt_Cadence_NORM = 0x12,
- MC_GearSt_Cadence_SPORT = 0x13,
- MC_GearSt_Cadence_TURBO = 0x14,
- MC_GearSt_SMART = 0x33,
- MC_GearSt_WALK = 0x22
- }MC_GearSt_Struct_t;
- //电机控制指令,占用空间2bytes
- typedef struct
- {
- MC_GearSt_Struct_t GearSt; //助力档位
- MC_LightSwitch_Struct_t LightSwitch; //灯开关 0xF0-关,0xF1-开
- }MC_ControlCode_Struct_t;
- typedef enum
- {
- MC_AssistRunMode_WALK = 1U, // 推行模式
- MC_AssistRunMode_TORQUE, // 力矩模式
- MC_AssistRunMode_CADENCE, // 踏频模式
- MC_AssistRunMode_GAS , // 指拨模式
- MC_AssistRunMode_INVALID // 无效模式
- } MC_AssistRunMode_Struct_t;
- //电机控制参数
- typedef struct
- {
- MC_AssistRunMode_Struct_t AssistRunMode; //助力模式
- int16_t Ref_Torque; //力矩模式输入FOC值
- int16_t Ref_Speed; //速度模式输入FOC值
- FlagStatus Foc_Flag; //FCO运算标志
- }MC_CalParam_Struct_t;
- /**********************************变量声明**********************************/
- extern MC_WorkMode_Struct_t MC_WorkMode;
- extern MC_WorkMode_Struct_t MC_WorkMode_Back;
- extern MC_ControlCode_Struct_t MC_ControlCode;
- extern MC_ControlCode_Struct_t MC_ControlCode_Back;
- extern MC_CalParam_Struct_t MC_CalParam;
- extern MC_CalParam_Struct_t MC_CalParam_Back;
- extern uint8_t MC_CadenceLimit_K;
- extern uint8_t MC_MotorSpeedLimit_K;
- extern FlagStatus MC_StarFlag;
- #define Update_MC_ControlCode_Back() { MC_ControlCode_Back.GearSt = (MC_GearSt_Struct_t)~MC_ControlCode.GearSt;\
- MC_ControlCode_Back.LightSwitch = (MC_LightSwitch_Struct_t)~MC_ControlCode.LightSwitch; }
- #define Update_MC_CalParam_Back() { MC_CalParam_Back.AssistRunMode = (MC_AssistRunMode_Struct_t)~MC_CalParam.AssistRunMode;\
- MC_CalParam_Back.Foc_Flag = (FlagStatus)~MC_CalParam.Foc_Flag;\
- MC_CalParam_Back.Ref_Torque = ~MC_CalParam.Ref_Torque;\
- MC_CalParam_Back.Ref_Speed = ~MC_CalParam.Ref_Speed; }
- /*****************************函数声明******************************/
- extern void MC_SensorInit(void);
- extern void MC_Init(void);
- extern void MC_ControlParam_Init(void);
- extern void MC_CalParam_Cal(MC_WorkMode_Struct_t p_MC_WorkMode,\
- ADC_SensorData_Struct_t p_ADC_SensorData,\
- MC_GearSt_Struct_t GearSt, \
- TrueOrFalse_Flag_Struct_t Break_Flag, \
- TrueOrFalse_Flag_Struct_t GearSensor_Flag, \
- MC_CalParam_Struct_t* p_MC_CalParam);
- extern void MC_MotorStar(FlagStatus* StarFlag);
- extern void MC_MotorStop(FlagStatus* StarFlag);
- extern void SpdProportion_calculate(void);
- #endif
|