/** @copyright None @file control.h @author Comment Vivre @date 2025-12-29 @brief None */ #ifndef __CONTROL_H_ #define __CONTROL_H_ typedef struct { enum { TEST_MOTOR_STOP = 0, TEST_MOTOR_START, TEST_FAULT } State; // 当前状态 uint16_t RunTime; // 运行计时 uint16_t StopTime; // 停机计时 uint16_t NormalStartCount; // 成功运行计数 } Start_Test_t; extern Start_Test_t xdata startTest; extern bool data isCtrlPowOn; typedef struct { enum { OPEN_MODE = 0, CLOSE_MODE } LoopState; // 环路状态 enum { COMP_RETURN_OIL = 0, // 回油阶段 COMP_RUN } CompState; uint16_t ReturnOilCnt; // 回油计数 int8_t CalcTime; // 环路周期 int16_t TargetRef; // 给定目标转速 int16_t ActualRef; // 实际运算目标转速 int16_t Inc; // 加速 int16_t Dec; // 减速 } Loop_Control_t; extern Loop_Control_t xdata loopCtrl; typedef struct { int16_t ActSpeedFlt; // 估算转速 int16_t ISRef; // PI计算电流 // 电流环给定电流 int16_t IQRef; int16_t IDRef; // DQ轴输出电压 int16_t UQFlt; int16_t UDFlt; // DQ轴实际电流 int16_t IQFlt; int16_t IDFlt; int16_t Power; // 估算功率 uint16_t BackEMF; // 反电动势 int16_t BusCurr; // 估算电流 // ADC采集数据 uint16_t BusVoltage; uint16_t NTCTemper; uint16_t AlongVoltage; uint16_t ActBusCurr; } Estimated_Data_t; extern Estimated_Data_t xdata estData; typedef enum { SYS_READY = 0, // 就绪状态 SYS_INIT = 1, // 初始化 GET_CURR_OFFSET = 2, // 检测偏置电压 PRE_DRIVER_CHARGE = 3, // 预充电 TAIL_WIND = 4, // 风向检测 MOTOR_POSI_CHECK = 5, // 初始位置检测 MOTOR_ALIGN = 6, // 预定位 MOTOR_START = 7, // 电机启动 MOTOR_RUN = 8, // 电机运行 MOTOR_STOP = 9, // 电机停止 MOTOR_BREAK = 10, // 刹车 MOTOR_FAULT = 11 // 故障 } Sys_State_e; extern Sys_State_e xdata sysState; void Motor_Fault_Handle(void); void Get_Target_Ref(void); void Get_LPF_Value(void); void Loop_Control(void); void Motor_Control_State(void); #define MOTOR_START_TEST_SPEED _Q15(2000.0/MOTOR_SPEED_BASE) #define MOTOR_STOP_TIME 10000 #define MOTOR_RUN_TIME 30000 #endif