/** * @file mode.h * @author xxx * @date 2023-09-18 10:37:29 * @brief * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #ifndef __MODE_H__ #define __MODE_H__ #include "lib.h" #include "filter.h" #include "mode_def.h" #include "mode_pwmp_hd.h" typedef enum { MODE_CONSTANT_CONTROL_ALGORITHM, ///< 恒定控制算法 gaopengjie MODE_VARIABLE_FREQUENCY_CONTROL_ALGORITHM, ///< 变频控制算法 xushenghao MODE_SPEED_CONTROL_ALGORITHM, ///< 速度控制算法 zhangxiaoming MODE_FREQUENCY_DOMAIN_CONTROL_ALGORITHM, ///< 频域控制算法 hangdian } mode_algorithm_e; /// 测试项目 typedef enum { NO_TEST_PROJECT = 0, // 无测试项目 MODE_DIAGNOSIS = 1, // 性能诊断 MANUAL_TEST = 2, // 手动按键测试 TEST_PROJECT_MAX, } test_project_e; typedef struct { mode_pwmp_hd_params_u mode_pwmp_hd_params; ///< PWMP HD模式参数 } mode_params_t; typedef struct { BOOL state; // TRUE:算法控制器可以运行 FALSE:算法控制器不可以运行 uint8_t mode; // 模式 } mode_ctrl_t; typedef struct { mode_interface_req_t interface_req; ///< 模式接口请求 // 内部变量 uint16_t positioner_model; ///< 定位器型号 __IO test_project_e test_project; ///< 测试项目 __IO mode_ctrl_t ctrl; ///< 控制器 __IO uint32_t alog_control_ticks; ///< 算法控制数据刷新计数器 lpf_window_t *show_loop_lpf; lpf_window_t *show_actual_lpf; kalman_t loop_kalman; kalman_t show_actual_kalman; } mode_t; extern void mode_init(void); ///< 工作模式初始化 extern mode_t *mode_get(void); ///< 获取工作模式 extern void mode_detection(void); ///< 工作模式处理 extern void mode_travel_statistics(void); ///< 行程统计 extern void mode_process(void); ///< 算法控制模块 extern void mode_test_process(void); ///< 测试模式处理 #endif